修复应用权限检测bug和修改按钮链接等样式,加入loading效果

This commit is contained in:
小胡
2024-07-13 11:37:52 +08:00
Unverified
parent 7c8f2a1927
commit 09dfc8d22a
16 changed files with 234 additions and 151 deletions

View File

@@ -2416,7 +2416,7 @@ c4a3bf9b5186325ae81a0c459f14798a *dzz/system/ueditor/third-party/webuploader/web
527c3d756b0d22aeb122dc5d8da33e17 *dzz/system/ueditor/third-party/webuploader/webuploader.flashonly.min.js
2cdc7bb54db94e5c8f842da451b46e93 *dzz/system/ueditor/third-party/webuploader/webuploader.html5only.js
e11d9bc7dee10f72092a0867203251e8 *dzz/system/ueditor/third-party/webuploader/webuploader.html5only.min.js
6c75aae8048de3d23cee4b255278a437 *dzz/system/ueditor/third-party/webuploader/webuploader.js
6c75aae8048de3d23cee4b255278a437 *dzz/system/ueditor/third-party/webuploader/webuploader.min.js
43487dfd7e2db6a93302608a16bb9424 *dzz/system/ueditor/third-party/webuploader/webuploader.min.js
ac30cd2e245e5988d8cfb2dc6f185ec2 *dzz/system/ueditor/third-party/webuploader/webuploader.withoutimage.js
3c3e8c363933509550c4a3709d514ee1 *dzz/system/ueditor/third-party/webuploader/webuploader.withoutimage.min.js

View File

@@ -86,70 +86,90 @@
</div>
<div class="bs-main-container clearfix">
<div class="main-content">
<div class="dagai">
<dl>
<h2 class="title">用户信息</h2>
<table class="tb">
<tbody>
<tr>
<th class="padleft">当前在线数</th>
<th class="padleft">总用户数</th>
<th class="padleft">停用人</th>
</tr>
<tr>
<td class="padleft">$zaixianrenshu</td>
<td class="padleft">$yonghurenshu</td>
<td class="w pdleft1">$tingyongrenshu</td>
</tr>
</tbody>
</table>
</dl>
<dl>
<h2 class="title">文件信息</h2>
<table class="tb">
<tbody>
<tr>
<th class="padleft">文件个数</th>
<th class="padleft">空间使用</th>
</tr>
<tr>
<td class="padleft">$wenjiangeshu</td>
<td class="padleft">$kongjianshiyong</td>
</tr>
</tbody>
</table>
</dl>
<dl>
<h2 class="title">版本信息</h2>
<table class="tb">
<tbody>
<tr>
<th class="padleft">官方版本</th>
<th class="padleft">小胡版本</th>
<th class="padleft">小胡版更新日期</th>
</tr>
<tr>
<td class="padleft">$about[version]</td>
<td class="padleft">$about[xhversion]</td>
<td class="w pdleft1">$about[XHFIXBUG]</td>
</tr>
</tbody>
</table>
</dl>
</div>
<dl>
<!--{eval echo shuchu();}-->
</dl>
<dl>
<h3>PHP扩展信息<a href="{MOD_URL}&op=xtxx&do=phpinfo" target="_blank" style="position: relative;">PHP详情</a></h3>
<div class="container">
<!--{eval echo kuozhan();}-->
</div>
<div>已加载的扩展:</div>
<div class="container">
$extensions
<div class="row">
<div class="col-md-4">
<div class="card bg-primary text-white">
<div class="card-body">
<h2 class="title">用户信息</h2>
<table class="tb">
<tbody>
<tr>
<th class="padleft">当前在线</th>
<th class="padleft">总用户数</th>
<th class="padleft">停用人数</th>
</tr>
<tr>
<td class="padleft">$zaixianrenshu</td>
<td class="padleft">$yonghurenshu</td>
<td class="w pdleft1">$tingyongrenshu</td>
</tr>
</tbody>
</table>
</div>
</div>
</dl>
</div>
<div class="col-md-4">
<div class="card bg-primary text-white">
<div class="card-body">
<h2 class="title">文件信息</h2>
<table class="tb">
<tbody>
<tr>
<th class="padleft">文件个数</th>
<th class="padleft">空间使用</th>
</tr>
<tr>
<td class="padleft">$wenjiangeshu</td>
<td class="padleft">$kongjianshiyong</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-primary text-white">
<div class="card-body">
<h2 class="title">版本信息</h2>
<table class="tb">
<tbody>
<tr>
<th class="padleft">官方版本</th>
<th class="padleft">小胡版本</th>
<th class="padleft">小胡版更新日期</th>
</tr>
<tr>
<td class="padleft">$about[version]</td>
<td class="padleft">$about[xhversion]</td>
<td class="w pdleft1">$about[XHFIXBUG]</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="card bg-primary text-white">
<div class="card-body">
<!--{eval echo shuchu();}-->
</div>
</div>
</div>
<div class="col-md-12">
<div class="card bg-primary text-white">
<div class="card-body">
<h3>PHP扩展信息<a href="{MOD_URL}&op=xtxx&do=phpinfo" target="_blank" style="position: relative;">PHP详情</a></h3>
<div class="container">
<!--{eval echo kuozhan();}-->
</div>
<div>已加载的扩展:</div>
<div class="container">
$extensions
</div>
</div>
</div>
</div>
<dl>
<div class="main-header clearfix">
<ul class="nav nav-pills " style="padding:4px 10px 0 10px">

View File

@@ -606,22 +606,25 @@ class dzz_app extends dzz_base{
}
}
}
if (!$this->var['member']['adminid'] && $appidxu = C::t('app_market')->fetch_by_identifier(CURMODULE)) {
$uid = null;
if ($this->var['member']['uid']) {
$uid = $this->var['member']['uid'];
} elseif ($_GET['uidtoken']) {
$uid=intval(dzzdecode($_GET['uidtoken']));
}
if (!$appidxu['available']) {
showmessage(lang('该应用已关闭,请联系管理员。'));
} elseif ($appidxu['group'] == 0) {
// 全员使用跳过
} elseif ($uid) {
try {
$config = dzz_userconfig_init();
} else {
if ($this->var['member']['uid']) {
$uid = $this->var['member']['uid'];
} elseif ($_GET['uidtoken']) {
$uid = intval(dzzdecode($_GET['uidtoken']));
}
if ($uid) {
$config = array();
if(!$config=C::t('user_field')->fetch($uid)){
$config= dzz_userconfig_init();
}
if ($config && isset($config['applist'])) {
$applist = explode(',', $config['applist'] ?: '');
$applist = explode(',', $config['applist']);
if (in_array($appidxu['appid'], $applist, true)) {
// 用户配置中包含该应用,有权限
} else {
@@ -630,16 +633,14 @@ class dzz_app extends dzz_base{
} else {
showmessage(lang('您无权限使用该应用,请联系管理员。'));
}
} catch (\Exception $e) {
// 处理数据库操作异常,例如记录日志或显示错误信息
showmessage(lang('系统错误,请联系管理员。'));
} elseif ($appidxu['group'] == -1) {
// 游客可以使用,跳过
} else {
Hook::listen('check_login');
}
} elseif ($appidxu['group'] == -1) {
// 游客可以使用,跳过
} else {
Hook::listen('check_login');
}
}
if(isset($this->var['setting']['nocacheheaders']) && $this->var['setting']['nocacheheaders']) {
@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);

View File

@@ -54,7 +54,7 @@ class helper_security {
$replaces[] = '&gt;';
if($ms[1]) {
$allowtags = 'img|a|font|div|table|tbody|caption|tr|td|th|br|p|b|strong|i|u|em|span|ol|ul|li|blockquote|pre|hr|embed|h1|h2|h3|h4|h5|h6|iframe';
$allowtags = 'img|a|font|div|table|tbody|caption|tr|td|th|br|p|b|strong|i|u|em|span|ol|ul|li|blockquote|pre|hr|embed|h1|h2|h3|h4|h5|h6|iframe|audio';
$ms[1] = array_unique($ms[1]);
foreach ($ms[1] as $value) {
$searchs[] = "&lt;".$value."&gt;";

View File

@@ -1315,7 +1315,6 @@ class io_dzz extends io_api
'title' => $attach['filename'],
'desc' => '',
'aid' => $attach['aid'],
'img' => geticonfromext($icoarr['ext'], $icoarr['type'])
);
if (C::t('resources_attr')->insert_attr($icoarr['rid'], $icoarr['vid'], $sourcedata)) {
@@ -1369,7 +1368,6 @@ class io_dzz extends io_api
'title' => $attach['filename'],
'desc' => '',
'aid' => $attach['aid'],
'img' => geticonfromext($icoarr['ext'], $icoarr['type'])
);
C::t('attachment')->update($attach['aid'], array('copys' => $attach['copys'] + 1));
if (C::t('resources_attr')->insert_attr($icoarr['rid'], $icoarr['vid'], $sourcedata)) {

View File

@@ -199,7 +199,6 @@ class table_resources_version extends dzz_table
'postip' => $_G['clientip'],
'title' => $filename,
'aid' => isset($setarr['aid']) ? $setarr['aid'] : '',
'img'=>geticonfromext($setarr['ext'],$setarr['type'])
);
//插入属性表
if (C::t('resources_attr')->insert_attr($rid,$vid,$sourceattrdata)) {

View File

@@ -14,7 +14,7 @@ if(!defined('CORE_VERSION')) {
define('CORE_VERSION', '2.02');
define('CORE_RELEASE', '20180909');
define('CORE_FIXBUG' , '20000000');
define('CORE_XHVERSION', '1.87.9');
define('CORE_XHVERSION', '1.88');
define('CORE_XHRELEASE', '20240709');
define('CORE_XHFIXBUG' , '20240706');
}

View File

@@ -6,9 +6,29 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" src="../internal.js"></script>
<style type="text/css">
*{margin:0;padding:0;color: #838383;}
table{font-size: 12px;margin: 10px;line-height: 30px}
.txt{width:300px;height:21px;line-height:21px;border:1px solid #d7d7d7;}
* {
margin: 0;
padding: 0;
color: #838383;
}
table {
font-size: 12px;
margin: 10px;
line-height: 36px;
width: 100%;
}
.txt {
box-sizing: border-box;
width: 90%;
height: 30px;
line-height: 30px;
border: 1px solid #d7d7d7;
border-radius: 3px;
padding: 0 5px;
outline: none;
}
</style>
</head>
<body>
@@ -36,84 +56,91 @@
</tr>
</table>
<script type="text/javascript">
editor.setOpt('allowLinkProtocols', ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:']);
var allowLinkProtocols = editor.getOpt('allowLinkProtocols');
var range = editor.selection.getRange(),
link = range.collapsed ? editor.queryCommandValue( "link" ) : editor.selection.getStart(),
link = range.collapsed ? editor.queryCommandValue("link") : editor.selection.getStart(),
url,
text = $G('text'),
rangeLink = domUtils.findParentByTagName(range.getCommonAncestor(),'a',true),
rangeLink = domUtils.findParentByTagName(range.getCommonAncestor(), 'a', true),
orgText;
link = domUtils.findParentByTagName( link, "a", true );
if(link){
url = utils.html(link.getAttribute( '_href' ) || link.getAttribute( 'href', 2 ));
if(rangeLink === link && !link.getElementsByTagName('img').length){
link = domUtils.findParentByTagName(link, "a", true);
if (link) {
url = utils.html(link.getAttribute('_href') || link.getAttribute('href', 2));
if (rangeLink === link && !link.getElementsByTagName('img').length) {
text.removeAttribute('disabled');
orgText = text.value = link[browser.ie ? 'innerText':'textContent'];
}else{
text.setAttribute('disabled','true');
orgText = text.value = link[browser.ie ? 'innerText' : 'textContent'];
} else {
text.setAttribute('disabled', 'true');
text.value = lang.validLink;
}
}else{
if(range.collapsed){
} else {
if (range.collapsed) {
text.removeAttribute('disabled');
text.value = '';
}else{
text.setAttribute('disabled','true');
} else {
text.setAttribute('disabled', 'true');
text.value = lang.validLink;
}
}
$G("title").value = url ? link.title : "";
$G("href").value = url ? url: '';
$G("target").checked = url && link.target == "_blank" ? true : false;
$G("href").value = url ? url : '';
$G("target").checked = url && link.target == "_blank" ? true : false;
$focus($G("href"));
function handleDialogOk(){
var href =$G('href').value.replace(/^\s+|\s+$/g, '');
if(href){
if(!hrefStartWith(href,["http","/","ftp://",'#'])) {
href = "http://" + href;
function handleDialogOk() {
var href = $G('href').value.replace(/^\s+|\s+$/g, '');
if (href) {
if (!hrefStartWith(href, allowLinkProtocols)) {
href = "http://" + href;
}
var obj = {
'href' : href,
'target' : $G("target").checked ? '_self' : '_blank',
'title' : $G("title").value.replace(/^\s+|\s+$/g, ''),
'_href':href
'href': href,
'target': $G("target").checked ? "_blank" : '_blank',
'title': $G("title").value.replace(/^\s+|\s+$/g, ''),
'_href': href
};
//修改链接内容的情况太特殊了,所以先做到这里了
//todo:情况多的时候做到command里
if(orgText && text.value != orgText){
link[browser.ie ? 'innerText' : 'textContent'] = obj.textValue = text.value;
if (orgText && text.value != orgText) {
link[browser.ie ? 'innerText' : 'textContent'] = obj.textValue = text.value;
range.selectNode(link).select()
}
if(range.collapsed){
if (range.collapsed) {
obj.textValue = text.value;
}
editor.execCommand('link',utils.clearEmptyAttrs(obj) );
editor.execCommand('link', utils.clearEmptyAttrs(obj));
dialog.close();
}
}
dialog.onok = handleDialogOk;
$G('href').onkeydown = $G('title').onkeydown = function(evt){
$G('href').onkeydown = $G('title').onkeydown = function (evt) {
evt = evt || window.event;
if (evt.keyCode == 13) {
handleDialogOk();
return false;
}
};
$G('href').onblur = function(){
if(!hrefStartWith(this.value,["http","/","ftp://",'#'])){
$G("msg").innerHTML = "<span style='color: red'>"+lang.httpPrompt+"</span>";
}else{
$G('href').onblur = function () {
if (!hrefStartWith(this.value, allowLinkProtocols)) {
$G("msg").innerHTML = "<span style='color: red'>" + lang.httpPrompt + "</span>";
} else {
$G("msg").innerHTML = "";
}
};
function hrefStartWith(href,arr){
function hrefStartWith(href, arr) {
href = href.replace(/^\s+|\s+$/g, '');
for(var i=0,ai;ai=arr[i++];){
if(href.indexOf(ai)==0){
for (var i = 0, ai; ai = arr[i++];) {
if (href.indexOf(ai) == 0) {
return true;
}
}

View File

@@ -10,6 +10,7 @@
<div id="videoTab">
<div id="tabHeads" class="tabhead">
<span tabSrc="video" class="focus" data-content-id="video"><var id="lang_tab_insertV"></var></span>
<span tabSrc="upload" data-content-id="upload"><var id="lang_tab_uploadV"></var></span>
</div>
<div id="tabBodys" class="tabbody">
<div id="video" class="panel focus">
@@ -22,19 +23,61 @@
<tr><td><label for="videoWidth"><var id="lang_videoW"></var></label></td><td><input class="txt" id="videoWidth" type="text"/></td></tr>
<tr><td><label for="videoHeight"><var id="lang_videoH"></var></label></td><td><input class="txt" id="videoHeight" type="text"/></td></tr>
</table>
</fieldset>
</fieldset>
<fieldset>
<legend><var id="lang_alignment"></var></legend>
<div id="videoFloat"></div>
</fieldset>
</div>
</div>
<div id="upload" class="panel">
<div id="upload_left">
<div id="queueList" class="queueList">
<div class="statusBar element-invisible">
<div class="progress">
<span class="text">0%</span>
<span class="percentage"></span>
</div><div class="info"></div>
<div class="btns">
<div id="filePickerBtn"></div>
<div class="uploadBtn"><var id="lang_start_upload"></var></div>
</div>
</div>
<div id="dndArea" class="placeholder">
<div class="filePickerContainer">
<div id="filePickerReady"></div>
</div>
</div>
<ul class="filelist element-invisible">
<li id="filePickerBlock" class="filePickerBlock"></li>
</ul>
</div>
</div>
<div id="uploadVideoInfo">
<fieldset>
<legend><var id="lang_upload_size"></var></legend>
<table>
<tr><td><label><var id="lang_upload_width"></var></label></td><td><input class="txt" id="upload_width" type="text"/></td></tr>
<tr><td><label><var id="lang_upload_height"></var></label></td><td><input class="txt" id="upload_height" type="text"/></td></tr>
</table>
</fieldset>
<fieldset>
<legend><var id="lang_upload_alignment"></var></legend>
<div id="upload_alignment"></div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<!-- jquery-->
<!-- jquery -->
<script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"></script>
<!-- webuploader -->
<script type="text/javascript" src="../../third-party/webuploader/webuploader.min.js"></script>
<link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">
<!-- video -->
<script type="text/javascript" src="video.js"></script>
</body>

View File

@@ -17,7 +17,7 @@
$focus($G("videoUrl"));
initTabs();
initVideo();
/*initUpload();*/
initUpload();
};
/* 初始化tab标签 */
@@ -41,7 +41,7 @@
}
function initVideo(){
createAlignButton( ["videoFloat"] );
createAlignButton( ["videoFloat", "upload_alignment"] );
addUrlChangeListener($G("videoUrl"));
addOkListener();
@@ -119,7 +119,6 @@
url=$G('videoUrl').value,
align = findFocus("videoFloat","name");
if(!url) return false;
if ( !checkNum( [width, height] ) ) return false;
editor.execCommand('insertvideo', {
url: convert_url(url),
@@ -168,7 +167,7 @@
function convert_url(url){
if ( !url ) return '';
url = utils.trim(url)
.replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html(.*?)$/i, 'player.youku.com/player.php/sid/$1/v.swf')
.replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/player.php/sid/$1/v.swf')
.replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2")
.replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1")
.replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf")
@@ -265,11 +264,15 @@
/**
* 根据url生成视频预览
* @param url
*/
*/
function createPreviewVideo(url){
if ( !url )return;
var conUrl = convert_url(url);
$G("preview").innerHTML = '<video controls="controls" style="width:100%;height:280px;" src="' + conUrl + '"></video>';
conUrl = utils.unhtml(conUrl);
$G("preview").innerHTML = '<div class="previewMsg"><span>' + lang.urlError + '</span></div>' +
'<iframe class="previewVideo" ' +
' src="' + conUrl + '"style="width:100%;height:280px;" frameborder=0 allowfullscreen>' +
'</iframe>';
}
@@ -707,7 +710,9 @@
uploader.on('uploadBeforeSend', function (file, data, header) {
//这里可以通过data对象添加POST参数
header['X_Requested_With'] = 'XMLHttpRequest';
if (actionUrl.toLowerCase().indexOf('jsp') != -1) {
header['X_Requested_With'] = 'XMLHttpRequest';
}
});
uploader.on('uploadProgress', function (file, percentage) {

View File

@@ -404,7 +404,7 @@ div.edui-box {
.edui-default .edui-toolbar .edui-combox-body .edui-arrow {
background: url(../images/icons.png) -741px 0;
_background: url(../images/icons.gif) -741px 0;
background: url(../images/icons.gif) -741px 0;
height: 20px;
width: 9px;
}
@@ -932,7 +932,7 @@ div.edui-box {
.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow,
.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow {
background: url(../images/icons.png) -741px 0;
_background: url(../images/icons.gif) -741px 0;
background: url(../images/icons.gif) -741px 0;
height: 20px;
width: 9px;
}

File diff suppressed because one or more lines are too long

View File

@@ -497,18 +497,6 @@ UEDITOR_CONFIG.mode = {
'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify',
'insertorderedlist', 'insertunorderedlist','|','simpleupload','dzzfile'
]
],
mini_exam: [
['bold', 'italic', 'underline', 'strikethrough','superscript', 'subscript','removeformat', '|',
'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify',
'insertorderedlist', 'insertunorderedlist','|','spechars','inserttable', 'scrawl','wordimage','kityformula','|','simpleupload','dzzfile'
]
],
mini_shou: [
['bold', 'italic', 'underline', 'strikethrough','superscript', 'subscript','removeformat', '|',
'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify',
'insertorderedlist', 'insertunorderedlist','|','spechars','inserttable', 'scrawl','wordimage','kityformula','|','simpleupload','attachment'
]
],
xiaohuxiugai: [
['fullscreen','source', 'undo', 'redo','drafts','|','bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|','rowspacingtop', 'rowspacingbottom', 'lineheight', '|', 'paragraph', 'fontfamily', 'fontsize', '|','directionalityltr', 'directionalityrtl', 'indent', '|','justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|','link', 'unlink','|','simpleupload', 'emotion', 'scrawl', 'insertvideo', 'attachment','dzzfile', 'map', 'insertframe', 'insertcode', 'template', 'background','|','horizontal', 'date', 'time', 'spechars', 'searchreplace', '|','inserttable','insertcharts', 'charts','|','print', 'preview', 'help', 'kityminder', 'kityformula'

View File

@@ -7675,6 +7675,7 @@ textarea.form-control.is-invalid {
.btn {
display: inline-block;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: center;
text-decoration: none;
@@ -7691,7 +7692,6 @@ textarea.form-control.is-invalid {
-webkit-border-radius: var(--radius);
transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
margin: 1px;
opacity: 0.8;
position: relative;
}

View File

@@ -1,13 +1,15 @@
$(document).ready( function() {
$("button:submit,input:submit, .nav-link, .btn,.nav-item a").click(function(){
$("button:submit,input:submit, .nav-link, .btn,a").click(function(){
$(this).attr('disable', 'true');
var l = $(this).lyearloading({
opacity: 0.2,
spinnerSize: 'nm',
});
l.addClass('disabled');
setTimeout(function() {
$(this).prop('disable', 'false');
l.destroy(); // 可以使用hide页面中如果有多个loading最好用destroy避免后面的loading设置不生效
l.removeClass('disabled');
}, 1e3);
});
// 停止