增加缓存调用特征参数

This commit is contained in:
小胡
2024-04-25 18:24:23 +08:00
Unverified
parent 24dd7ad81c
commit f8f4e056c5
71 changed files with 120 additions and 4893 deletions

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple_start}-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
<div class="bs-container clearfix">
@@ -120,5 +120,5 @@
});
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,6 +1,6 @@
<!--{template common/header_simple_start}-->
<link rel="stylesheet" type="text/css" href="static/tagsinput/jquery.tagsinput.css">
<script type="text/javascript" src="static/tagsinput/jquery.tagsinput.js"></script>
<link rel="stylesheet" type="text/css" href="static/tagsinput/jquery.tagsinput.css?{VERHASH}">
<script type="text/javascript" src="static/tagsinput/jquery.tagsinput.js?{VERHASH}"></script>
<script type="text/javascript" src="dzz/system/scripts/selorg.js?{VERHASH}"></script>
<script type="text/javascript">
<!--{if $openarr}-->
@@ -388,5 +388,5 @@
}
})
</script>
<script src="static/bootstrap/js/bootstrap-typeahead.js"></script>
<script src="static/bootstrap/js/bootstrap-typeahead.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple_start}-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
<div class="bs-container clearfix">
@@ -126,5 +126,5 @@
document.getElementById('exts').value=arr.join(',');
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple_start}-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
<div class="bs-container clearfix">
@@ -117,5 +117,5 @@
}
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,8 +1,8 @@
<!--{template common/header_simple_start}-->
<script type="text/javascript" src="admin/scripts/admin.js?{VERHASH}"></script>
<!--日期选择器css-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker3.min.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker3.min.css?{VERHASH}">
<style>
.mod_validate td {
@@ -25,7 +25,6 @@
</style>
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
<div class="bs-container clearfix" style="padding-top:0px;">
<div class="bs-left-container clearfix">
<!--{template left}-->
@@ -227,7 +226,7 @@
}
</script>
<!--日期选择器js-->
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple_start}-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<style>
.form-horizontal-left .checkbox-inline {
@@ -166,5 +166,5 @@
});
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,519 +0,0 @@
<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if (!defined('IN_DZZ')) {
exit('Access Denied');
}
include_once libfile('function/organization');
function getuserIcon($uids,$datas,&$data){
$uids = array_unique($uids);
$avatars = array();
foreach(DB::fetch_all('select u.avatarstatus,u.uid,s.svalue from %t u left join %t s on u.uid=s.uid and s.skey=%s where u.uid in(%n)',array('user','user_setting','headerColor',$uids)) as $v){
if($v['avatarstatus'] == 1){
$avatars[$v['uid']]['avatarstatus'] = 1;
}else{
$avatars[$v['uid']]['avatarstatus'] = 0;
$avatars[$v['uid']]['headerColor'] = $v['svalue'];
}
}
$userarr = array();
$data1 = array();
foreach($datas as $v){
$uid=$v['li_attr']['uid'];
$avatarstatus = $avatars[$uid]['avatarstatus'];
if($avatars[$v['li_attr']['uid']]['avatarstatus']){
$v['icon'] = 'avatar.php?uid='.$v['li_attr']['uid'];
}elseif($avatars[$uid]['headerColor']){
$headercolor = $avatars[$uid]['headerColor'];
$v['icon'] = false;
$v['text']= '<span class="iconFirstWord" style="background:'.$headercolor.';">'.strtoupper(new_strsubstr($v['text'],1,'')).'</span>'.$v['text'];
}else{
$v['icon'] = false;
$v['text']= avatar_block($uid,array(),'iconFirstWord').$v['text'];
}
$data[] = $v;
}
}
$do = trim($_GET['do']);
$orgid = intval($_GET['orgid']);
if ($do == 'upload') {//上传图片文件
include libfile('class/uploadhandler');
$options = array('accept_file_types' => '/\.(gif|jpe?g|png)$/i',
'upload_dir' => $_G['setting']['attachdir'] . 'cache/',
'upload_url' => $_G['setting']['attachurl'] . 'cache/',
'thumbnail' => array('max-width' => 40, 'max-height' => 40));
$upload_handler = new uploadhandler($options);
exit();
} /*elseif ($do == 'getdefaultpic') {//获取群组默认图片,上传图片保存
$imgs = C::t('resources_grouppic')->fetch_user_pic();
if (isset($_GET['aid'])) {
$aid = intval($_GET['aid']);
if ($_G['adminid'] == 1) $dafault = 1;
else $default = 0;
if (C::t('resources_grouppic')->insert_data($aid, $default)) {
showTips(array('success' => true), 'json');
} else {
showTips(array('error' => true), 'json');
}
}
}*/elseif($do == 'getchildren') {
$id = intval($_GET['id']);
$list = array();
$limit = 0;
$html = '';
//判断用户有没有操作权限
$ismoderator = C::t('organization_admin') -> ismoderator_by_uid_orgid($id, $_G['uid']);
if ($ismoderator) {
$disable = '';
$type = 'user';
} else {
$disable = '"disabled":true,';
$type = "disabled";
}
if ($id) {
$icon = 'dzz/system/images/department.png';
} else {
$icon = 'dzz/system/images/organization.png';
}
$data = array();
if ($_GET['id'] == '#') {
if($_G['adminid']!=1) $topids=C::t('organization_admin')->fetch_toporgids_by_uid($_G['uid']);
foreach (C::t('organization')->fetch_all_by_forgid($id,0,0) as $value) {
if($value['type']==1) continue;//过滤群
if($_G['adminid']!=1 && !in_array($value['orgid'],$topids)) continue;
if (C::t('organization_admin') -> ismoderator_by_uid_orgid($value['orgid'], $_G['uid'])) {
$orgdisable = false;
$orgtype = 'organization';
} else {
$orgdisable = true;
$orgtype = 'disabled';
}
$arr=array('id' => $value['orgid'], 'text' => $value['orgname'], 'icon' => $icon, 'state' => array('disabled' => $orgdisable), "type" => $orgtype, 'children' => true);
if(intval($value['aid'])==0){
$arr['text'] = avatar_group($value['orgid'],array($value['orgid']=>array('aid'=>$value['aid'],'orgname'=>$value['orgname']))).$value['orgname'];
$arr['icon'] = false;
}else{
$arr['text'] = $value['orgname'];
$arr['icon']='index.php?mod=io&op=thumbnail&width=24&height=24&path=' . dzzencode('attach::' . $value['aid']);
}
$data[]=$arr;
}
$data[] = array('id' => 'other', 'text' => lang('no_institution_users'), 'state' => array('disabled' => $disable), "type" => 'group', 'children' => true);
} else {
//获取用户列表
if (!$id) {
if ($ismoderator) {
$uids = array();
$datas = array();
foreach (C::t('organization_user')->fetch_user_not_in_orgid($limit) as $value) {
if(!$value['uid']) continue;
$uids[] = $value['uid'];
$datas[] = array('id' => 'uid_' . $value['uid'], 'text' => $value['username'] . '<em class="hide">' . $value['email'] . '</em>', 'icon' => 'dzz/system/images/user.png', 'state' => array('disabled' => $disable), "type" => $type, 'li_attr' => array('uid' => $value['uid']));
}
getuserIcon($uids,$datas,$data);
}
} else {
foreach (C::t('organization')->fetch_all_by_forgid($id) as $value) {
if (C::t('organization_admin') -> ismoderator_by_uid_orgid($value['orgid'], $_G['uid'])) {
$orgdisable = '';
$orgtype = 'organization';
} else {
$orgdisable = '"disabled":true,';
$orgtype = 'disabled';
}
$arr=array('id' => $value['orgid'], 'text' => $value['orgname'], 'icon' => $icon, 'state' => array('disabled' => $orgdisable), "type" => $orgtype, 'children' => true);
if(intval($value['aid'])==0){
$arr['text'] = avatar_group($value['orgid'],array($value['orgid']=>array('aid'=>$value['aid'],'orgname'=>$value['orgname']))).$value['orgname'];
$arr['icon'] = false;
}else{
$arr['text'] = $value['orgname'];
$arr['icon']='index.php?mod=io&op=thumbnail&width=24&height=24&path=' . dzzencode('attach::' . $value['aid']);
}
$data[]=$arr;
}
if ($ismoderator) {
$uids = array();
$datas = array();
foreach (C::t('organization_user')->fetch_user_by_orgid($id,$limit) as $value) {
if(!$value['uid']) continue;
$uids[] = $value['uid'];
$datas[] = array('id' => 'orgid_' . $value['orgid'] . '_uid_' . $value['uid'], 'text' => $value['username'] . '<em class="hide">' . $value['email'] . '</em>', 'icon' => 'dzz/system/images/user.png', 'state' => array('disabled' => $disable), "type" => $type, 'li_attr' => array('uid' => $value['uid']));
}
getuserIcon($uids,$datas,$data);
}
}
}
exit(json_encode($data));
} elseif ($do == 'search') {//jstree搜索接口
$str = trim($_GET['str']);
$str = '%' . $str . '%';
$sql = "username LIKE %s";
//搜索用户
$data = array('other');
$uids = array();
foreach (DB::fetch_all("select * from %t where $sql ",array('user',$str)) as $value) {
$uids[] = $value['uid'];
$data['uid_' . $value['uid']] = 'uid_' . $value['uid'];
}
$orgids = array();
foreach ($orgusers=C::t('organization_user')->fetch_all_by_uid($uids) as $value) {
$data['uid_' . $value['uid']] = 'orgid_' . $value['orgid'] . '_uid_' . $value['uid'];
$orgids[] = $value['orgid'];
}
foreach ($orgids as $orgid) {
$uporgids = C::t('organization')->fetch_parent_by_orgid($orgid);
foreach ($uporgids as $value) {
$data[$value] = $value;
}
}
$temp = array();
foreach ($data as $value) {
$temp[] = $value;
}
exit(json_encode($temp));
} elseif ($do == 'getjobs') {
$orgid = intval($_GET['orgid']);
$jobs = C::t('organization_job') -> fetch_all_by_orgid($orgid);
$html = '<li role="presentation"><a href="javascript:;" tabindex="-1" role="menuitem" _jobid="0" onclick="selJob(this)">'.lang('none').'</a></li>';
foreach ($jobs as $job) {
$html .= '<li role="presentation"><a href="javascript:;" tabindex="-1" role="menuitem" _jobid="' . $job['jobid'] . '" onclick="selJob(this)">' . $job['name'] . '</a></li>';
}
exit($html);
} elseif ($do == 'create') {
$forgid = intval($_GET['forgid']);
$borgid = intval($_GET['orgid']);
//放在此部门后面
if (!$ismoderator = C::t('organization_admin') -> ismoderator_by_uid_orgid($forgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
/*默认新建机构和部门开始群组manageon群组管理员开启 syatemon系统管理员开启 available 系统管理员开启共享目录,保留diron(群组管理员开启目录)控制是否开启目录显示在前台*/
$setarr = array('forgid' => intval($_GET['forgid']), 'orgname' => lang('new_department'), 'fid' => 0, 'disp' => intval($_GET['disp']), 'indesk' => 0, 'dateline' => TIMESTAMP, 'available' => 1,'syatemon'=>1,'manageon'=>1,'maxspacesize'=> getglobal('orgmemorySpace', 'setting'));
if ($setarr = C::t('organization') -> insert_by_forgid($setarr, $borgid)) {
include_once libfile('function/cache');
updatecache('organization');
} else {
$setarr['error'] = 'create organization failure';
}
exit(json_encode($setarr));
} elseif ($do == 'rename') {
$orgid = intval($_GET['orgid']);
if (!$ismoderator = C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization') -> update_by_orgid($orgid, array('orgname' => getstr($_GET['text'])))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('msg' => lang('rechristen_error'))));
}
} elseif ($do == 'delete') {
if ($_GET['type'] == 'user') {//删除用户
$forgid = intval($_GET['forgid']);
$uids = $_GET['uids'];
$realdelete = intval($_GET['realdelete']);
if ($realdelete) {
if ($_G['adminid'] != 1)
exit(json_encode(array('error' => lang('privilege'))));
//判断用户是否在部门中,在部门中的用户不彻底删除
if (C::t('organization_user') -> fetch_orgids_by_uid($uids)) {
exit(json_encode(array('error' => lang('orguser_ajax_delete'))));
}
foreach ($uids as $uid) {
//删除用户
C::t('user') -> delete_by_uid($uid);
}
exit(json_encode(array('msg' => 'success')));
} else {
//检测权限
if (!$ismoderator = C::t('organization_admin') ->chk_memberperm($forgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization_user') -> delete_by_uid_orgid($uids, $forgid)) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('msg' => lang('delete_error'))));
}
}
} else {
$orgid = ($_GET['orgid']);
$forgid = intval($_GET['forgid']);
if (!$ismoderator = C::t('organization_admin') -> ismoderator_by_uid_orgid($forgid, $_G['uid'])) {
exit(json_encode(array('error' => loang('privilege'))));
}
if ($return = C::t('organization') -> delete_by_orgid($orgid)) {//删除部门,部门的用户移动到上级部门去;
if ($return['error']) {
exit(json_encode($return));
}
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('msg' => lang('delete_error'))));
}
}
} elseif ($do == 'move') {
if ($_GET['type'] == 'user') {//移动用户
$orgid = intval($_GET['orgid']);
$forgid = intval($_GET['forgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($forgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
$copy = intval($_GET['copy']);
$uid = intval($_GET['uid']);
if (C::t('organization_user') -> move_to_by_uid_orgid($uid, $forgid, $orgid, $copy)) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('movement_error'))));
}
} else {
$orgid = intval($_GET['orgid']);
$disp = intval($_GET['position']);
$forgid = intval($_GET['forgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($forgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization') -> setDispByOrgid($orgid, $disp, $forgid)) {//移动部门;
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('msg' => lang('delete_error'))));
}
}
} elseif ($do == 'jobedit') {
$jobid = intval($_GET['jobid']);
$orgid = intval($_GET['orgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
$name = str_replace('...', '', getstr($_GET['name'], 30));
if (C::t('organization_job') -> update($jobid, array('name' => $name))) {
exit(json_encode(array('jobid' => $jobid, 'name' => $name)));
} else {
exit(json_encode(array('error' => lang('edit_error'))));
}
} elseif ($do == 'jobdel') {
$jobid = intval($_GET['jobid']);
$orgid = intval($_GET['orgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization_job') -> delete($jobid)) {
exit(json_encode(array('jobid' => $jobid)));
} else {
exit(json_encode(array('error' => lang('delete_unsuccess'))));
}
} elseif ($do == 'jobadd') {
$orgid = intval($_GET['orgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
$setarr = array('orgid' => $orgid, 'name' => str_replace('...', '', getstr($_GET['name'], 30)), 'dateline' => TIMESTAMP, 'opuid' => $_G['uid']);
if ($setarr['jobid'] = C::t('organization_job') -> insert($setarr)) {
exit(json_encode($setarr));
} else {
exit(json_encode(array('error' => lang('add_unsuccess'))));
}
} elseif ($do == 'moderator_add') {
$orgid = intval($_GET['orgid']);
$org = C::t('organization') -> fetch($orgid);
$perm = C::t('organization_admin') ->chk_memberperm($orgid, $_G['uid']);
if ($perm < 2) {
exit(json_encode(array('error' => lang('privilege'))));
}
$setarr = array('orgid' => $orgid, 'uid' => intval($_GET['uid']), 'dateline' => TIMESTAMP, 'opuid' => $_G['uid']);
if ($setarr['id'] = C::t('organization_admin') -> insert(intval($_GET['uid']), $orgid)) {
$user = getuserbyuid($setarr['uid']);
$setarr['username'] = $user['username'];
$setarr['avatar']=avatar_block($setarr['uid']);
exit(json_encode($setarr));
} else {
exit(json_encode(array('error' => lang('add_administrator_unsuccess'))));
}
} elseif ($do == 'moderator_del') {
$orgid = intval($_GET['orgid']);
$org = C::t('organization_admin') -> fetch($orgid);
//获取当前操作用户权限,系统管理员上级部门管理员和群组创建人均返回2
$perm = C::t('organization_admin') ->chk_memberperm($orgid,$_G['uid']);
if ($perm < 2) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization_admin') -> delete_by_id(intval($_GET['id']))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('add_administrator_unsuccess'))));
}
} elseif ($do == 'folder_available') {
$orgid = intval($_GET['orgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization') -> setFolderAvailableByOrgid($orgid, intval($_GET['available']))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('unable_set'))));
}
} elseif ($do == 'folder_indesk') {
$orgid = intval($_GET['orgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization') -> setIndeskByOrgid($orgid, intval($_GET['indesk']))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('no_open_Shared_directory'))));
}
} elseif ($do == 'set_org_orgname') {
$orgid = intval($_GET['orgid']);
$orgname=getstr($_GET['orgname'],255);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization')->update_by_orgid($orgid, array('orgname'=>$orgname))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('rechristen_error'))));
}
}elseif($do == 'set_org_logo'){
$orgid = intval($_GET['orgid']);
$img=intval(($_GET['aid']));
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization')->update_by_orgid($orgid, array('aid'=>$img))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('rechristen_error'))));
}
}elseif ($do == 'set_org_desc') {
$orgid = intval($_GET['orgid']);
$desc=getstr($_GET['desc']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization')->update_by_orgid($orgid, array('desc'=>$desc))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('rechristen_error'))));
}
}elseif($do == 'group_on'){
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if (C::t('organization') -> setgroupByOrgid($orgid, intval($_GET['available']))) {
exit(json_encode(array('msg' => 'success')));
} else {
exit(json_encode(array('error' => lang('unable_set'))));
}
}elseif($do == 'orginfo'){
$array = isset($_GET['arr']) ? $_GET['arr']:'';
if(!empty($array)){
$orgid = intval($array['orgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(json_encode(array('error' => lang('privilege'))));
}
if(!$org = C::t('organization') -> fetch($orgid)){
exit(json_encode(array('error' => lang('organization_not_exists'))));
}
$setarr = array(
'desc'=>getstr($array['desc']),
'groupback'=>isset($array['groupback']) ? intval($array['groupback']):0,
'aid'=>isset($array['aid']) ? intval($array['aid']):0,
//'orgname'=>getstr($array['orgname']);
);
if(C::t('organization')->update($orgid,$setarr)){
$addaids = array();
$delaids = array();
if(!empty($array['aid']) && $array['aid'] != $org['aid']){
$addaids[] = $array['aid'];
$delaids[] = $org['aid'];
}
if(!empty($array['groupback']) && $array['groupback'] != $org['groupback']){
$addaids[] = $array['groupback'];
$delaids[] = $org['groupback'];
}
if(!empty($addaids)){
C::t('attachment')->addcopy_by_aid($addaids);
}
if(!empty($delaids)){
C::t('attachment')->addcopy_by_aid($delaids,-1);
}
exit(json_encode(array('success' =>true)));
}else{
exit(json_encode(array('error' => lang('edit_error'))));
}
}
}elseif($do=='folder_maxspacesize'){
$orgid=intval($_GET['orgid']);
$setspacesize = intval($_GET['maxspacesize']);
if(!$org=C::t('organization')->fetch($orgid)){
exit(json_encode(array('error'=>'该机构或群组不存在或被删除')));
}
//暂时只允许系统管理员进行空间相关设置
if($_G['adminid'] != 1){
exit(json_encode(array('error'=>'没有权限')));
}
if($setspacesize != 0){
//获取允许设置的空间值
$allowallotspace = C::t('organization')->get_allowallotspacesize_by_orgid($orgid);
if($allowallotspace < 0) {
exit(json_encode(array('error' => '可分配空间不足')));
}
//获取当前已占用空间大小
$currentallotspace = C::t('organization')->get_orgallotspace_by_orgid($orgid,0,false);
//设置值小于当前下级分配总空间值即:当前设置值 < 下级分配总空间
if($setspacesize > 0 && $setspacesize*1024*1024 < $currentallotspace){
exit(json_encode(array('error'=>'设置空间值不足,小于已分配空间值!','val'=>$org['maxspacesize'])));
}
//上级包含空间限制时,无限制不处理,直接更改设置值
if($allowallotspace > 0 && ($setspacesize*1024*1024 > $allowallotspace)){
exit(json_encode(array('error'=>'总空间不足!','val'=>$org['maxspacesize'])));
}
}
//设置新的空间值
if(C::t('organization')->update($orgid,array('maxspacesize'=>$setspacesize))){
exit(json_encode(array('msg'=>'success')));
}else{
exit(json_encode(array('error'=>'设置不成功或未更改','val'=>$org['maxspacesize'])));
}
}elseif ($do == 'guide') {
include template('guide');
}
exit();
?>

View File

@@ -1,440 +0,0 @@
<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if (!defined('IN_DZZ')) {
exit('Access Denied');
}
require_once libfile('function/user', '', 'user');
require_once libfile('function/mail');
require_once libfile('function/organization');
if (!$_G['cache']['usergroups'])
loadcache('usergroups');
$do = trim($_GET['do']);
$uid = intval($_GET['uid']);
if (!$uid)
$do = 'add';
if (empty($do) && $uid)
$do = 'edit';
if ($do == 'add') {
if (submitcheck('accountadd')) {
//处理用户部门和职位
$orgids = array();
foreach ($_GET['orgids'] as $key => $orgid) {
if (!$orgid)
continue;
if (C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'], 1)) {
$orgids[$orgid] = intval($_GET['jobids'][$key]);
}
}
if (!$orgids && $_G['adminid'] != 1)
showmessage('no_parallelism_jurisdiction');
//用户名验证
$username = trim($_GET['username']);
if ($username) {
$usernamelen = dstrlen($_GET['username']);
if ($usernamelen < 3) {
showmessage('profile_username_tooshort');
} elseif ($usernamelen > 30) {
showmessage('profile_username_toolong');
}
if ($_G['setting']['censoruser'] && @preg_match($censorexp, $username)) {
showmessage('profile_username_protect');
}
//如果输入用户名,检查用户名不能重复
if (C::t('user') -> fetch_by_username($username)) {
showmessage('user_registered_retry');
}
}
$user_extra = array();
//如果输入手机号码,检查手机号码不能重复
$phone = trim($_GET['phone']);
if ($phone) {
if (!preg_match("/^\d+$/", $phone)) {
showmessage('user_phone_illegal');
}
if (C::t('user') -> fetch_by_phone($phone)) {
showmessage('user_phone_registered');
}
$user_extra['phone'] = $phone;
}
//如果输入微信号,检查微信号不能重复
$weixinid = trim($_GET['weixinid']);
if ($weixinid) {
if (!preg_match("/^[a-zA-Z\d_]{5,}$/i", $weixinid)) {
showmessage(lang('weixin_illegal'));
}
if (C::t('user') -> fetch_by_weixinid($weixinid)) {
showmessage('weixin_registered');
}
$user_extra['weixinid'] = $weixinid;
}
//邮箱验证部分
$email = strtolower(trim($_GET['email']));
checkemail($_GET['email']);
//密码验证部分
if ($_G['setting']['pwlength']) {
if (strlen($_GET['password']) < $_G['setting']['pwlength']) {
showmessage('profile_password_tooshort', '', array('pwlength' => $_G['setting']['pwlength']));
}
}
if (!$_GET['password'] || $_GET['password'] != addslashes($_GET['password'])) {
showmessage('profile_passwd_illegal');
}
$password = $_GET['password'];
$result = uc_user_register(addslashes($username), $password, $email, $nickname, $questionid, $answer, $_G['clientip'], 0);
if (is_array($result)) {
$uid = $result['uid'];
$password = $result['password'];
} else {
$uid = $result;
}
if ($uid <= 0) {
if ($uid == -1) {
showmessage('profile_username_illegal');
} elseif ($uid == -2) {
showmessage('profile_username_protect');
} elseif ($uid == -3) {
showmessage('profile_username_duplicate');
} elseif ($uid == -4) {
showmessage('profile_email_illegal');
} elseif ($uid == -5) {
showmessage('profile_email_domain_illegal');
} elseif ($uid == -6) {
showmessage('profile_email_duplicate');
} elseif ($uid == -7) {
showmessage('profile_username_illegal');
} else {
showmessage('undefined_action');
}
}
//插入用户状态表
$status = array('uid' => $uid, 'regip' => '', 'lastip' => '', 'lastvisit' => '', 'lastactivity' => '', 'lastsendmail' => 0);
C::t('user_status') -> insert($status, false, true);
//处理管理员
C::t('user') -> setAdministror($uid, intval($_GET['groupid']));
//加入额外信息
if ($user_extra)
C::t('user') -> update($uid, $user_extra);
//处理额外空间
$addsize = intval($_GET['addsize']);
if (C::t('user_field') -> fetch($uid)) {
C::t('user_field') -> update($uid, array('addsize' => $addsize, 'perm' => 0));
} else {
C::t('user_field') -> insert(array('uid' => $uid, 'addsize' => $addsize, 'perm' => 0, 'iconview' => $_G['setting']['desktop_default']['iconview'] ? $_G['setting']['desktop_default']['iconview'] : 2, 'taskbar' => $_G['setting']['desktop_default']['taskbar'] ? $_G['setting']['desktop_default']['taskbar'] : 'bottom', 'iconposition' => intval($_G['setting']['desktop_default']['iconposition']), 'direction' => intval($_G['setting']['desktop_default']['direction']), ));
}
if ($orgids)
C::t('organization_user') -> replace_orgid_by_uid($uid, $orgids);
//处理上司职位;
C::t('organization_upjob') -> insert_by_uid($uid, intval($_GET['upjobid']));
Hook::listen('syntoline_user',$uid);//注册绑定到钉钉部门表
if ($_GET['sendmail']) {
$sitename=$_G['setting']['sitename'];
$email_password_message = <<<EOT
<p style="font-size:14px;color:#333; line-height:24px; margin:0;">尊敬的用户$member[username],您好!</p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">您收到这封邮件,是由于 $sitename 的管理员添加成员时使用了这个邮箱地址。如果您不知道 $sitename 请忽略这封邮件。您不需要退订或进行其他进一步的操作。</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;font-weight:bold;">登录帐号和密码</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 12px;">登录帐号:$_GET[email]</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">登录密码:$_GET[password]</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">感谢您的访问,祝您使用愉快!</span></p>
EOT;
if (!sendmail("$_GET[email] <$_GET[email]>", '用户帐号和密码', $email_password_message)) {
runlog('sendmail', "$_GET[email] 发送失败");
}
}
showmessage('add_user_success', MOD_URL.'#user_' . $uid, array('uid' => $uid, 'orgids' => $orgids));
} else {
$orgid = intval($_GET['orgid']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(lang('orguser_edituser_add_user'));
}
if ($org = C::t('organization') -> fetch($orgid)) {
$org['jobs'] = C::t('organization_job') -> fetch_all_by_orgid($org['orgid']);
$orgpath = getPathByOrgid($org['orgid']);
$org['depart'] = implode('-', ($orgpath));
}
include template('adduser');
}
} elseif ($do == 'edit') {
if (submitcheck('accountedit')) {
//判断是否对此用户有管理权限
$uperm = false;
if ($_G['adminid'] != 1) {
if ($orgids_uid = C::t('orginization_user') -> fetch_orgids_by_uid($uid)) {
foreach ($orgids_uid as $orgid) {
if (C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
$uperm = true;
break;
}
}
if (!$uperm)
showmessage('privilege');
} else {
showmessage('privilege');
}
}
$orgids = array();
foreach ($_GET['orgids'] as $key => $orgid) {
if ($orgid)
$orgids[$orgid] = intval($_GET['jobids'][$key]);
}
$user = C::t('user') -> fetch_by_uid($uid);
if ($user['groupid'] < $_G['groupid'] || (C::t('user') -> checkfounder($user) && !C::t('user') -> checkfounder($_G['member']))) {
//处理用户部门和职位
C::t('organization_user') -> replace_orgid_by_uid($uid, $orgids);
//处理上司职位;
C::t('organization_upjob') -> insert_by_uid($uid, intval($_GET['upjobid']));
showmessage('edit_user_success', MOD_URL.'#user_' . $uid, array());
}
//用户名验证
$username = trim($_GET['username']);
$usernamelen = dstrlen($_GET['username']);
if ($usernamelen < 3) {
showmessage('profile_username_tooshort');
} elseif ($usernamelen > 30) {
showmessage('profile_username_toolong');
} elseif (!check_username(addslashes(trim(stripslashes($username))))) {
showmessage('profile_username_illegal');
}
//如果输入用户名,检查用户名不能重复
if ($username != $user['username']) {
if (C::t('user') -> fetch_by_username($username)) {
showmessage('user_registered_retry');
}
if ($_G['setting']['censoruser'] && @preg_match($censorexp, $username)) {
showmessage('profile_username_protect');
}
}
//如果输入手机号码,检查手机号码不能重复
$phone = trim($_GET['phone']);
if ($phone) {
if (!preg_match("/^\d+$/", $phone)) {
showmessage('user_phone_illegal');
}
if ($phone != $user['phone'] && C::t('user') -> fetch_by_phone($phone)) {
showmessage('user_phone_registered');
}
}
//如果输入微信号,检查微信号不能重复
$weixinid = trim($_GET['weixinid']);
if ($weixinid) {
if (!preg_match("/^[a-zA-Z\d_]{5,}$/i", $weixinid)) {
showmessage(lang('weixin_illegal'));
}
if ($weixinid != $user['weixinid'] && C::t('user') -> fetch_by_weixinid($weixinid)) {
showmessage('weixin_registered');
}
}
//邮箱验证部分
$email = strtolower(trim($_GET['email']));
if (!isemail($email)) {
showmessage('profile_email_illegal', '', array(), array('handle' => false));
} elseif (!check_emailaccess($email)) {
showmessage('profile_email_domain_illegal', '', array(), array('handle' => false));
}
if ($email != strtolower($user['email'])) {
//邮箱不能重复
if (C::t('user') -> fetch_by_email($email)) {
showmessage('email_registered_retry');
}
}
//密码验证部分
if ($_GET['password']) {
if ($_G['setting']['pwlength']) {
if (strlen($_GET['password']) < $_G['setting']['pwlength']) {
showmessage('profile_password_tooshort', '', array('pwlength' => $_G['setting']['pwlength']));
}
}
if ($_GET['password'] !== $_GET['password2']) {
showmessage('profile_passwd_notmatch');
}
}
$password = $_GET['password'];
if ($password) {
$salt = substr(uniqid(rand()), -6);
$setarr = array('salt' => $salt, 'password' => md5(md5($password) . $salt), 'username' => $username, 'phone' => $phone, 'weixinid' => $weixinid, 'secques' => '', 'email' => $email, 'status' => intval($_GET['status']));
} else {
$setarr = array('username' => $username, 'email' => $email, 'phone' => $phone, 'weixinid' => $weixinid, 'status' => intval($_GET['status']));
}
C::t('user') -> update($uid, $setarr);
//处理管理员
C::t('user') -> setAdministror($uid, intval($_GET['groupid']));
//处理额外空间和用户空间
//$addsize = intval($_GET['addsize']);
$userspace = intval($_GET['userspace']);
if (C::t('user_field') -> fetch($uid)) {
C::t('user_field') -> update($uid, array('userspace'=>$userspace,'perm' => 0));
} else {
C::t('user_field') -> insert(array('uid' => $uid,'userspace'=>$userspace, 'perm' => 0, 'iconview' => $_G['setting']['desktop_default']['iconview'] ? $_G['setting']['desktop_default']['iconview'] : 2, 'taskbar' => $_G['setting']['desktop_default']['taskbar'] ? $_G['setting']['desktop_default']['taskbar'] : 'bottom', 'iconposition' => intval($_G['setting']['desktop_default']['iconposition']), 'direction' => intval($_G['setting']['desktop_default']['direction']), ));
}
//处理用户部门和职位
if ($orgids)
C::t('organization_user') -> replace_orgid_by_uid($uid, $orgids);
//处理上司职位;
C::t('organization_upjob') -> insert_by_uid($uid, intval($_GET['upjobid']));
Hook::listen('syntoline_user',$uid);//注册绑定到钉钉部门表
showmessage('edit_user_success', MOD_URL.'#user_' . $uid, array());
} else {
require_once libfile('function/organization');
$user = C::t('user') -> fetch_by_uid($uid);
$userfield = C::t('user_field') -> fetch($uid);
//$user['status']=$user['status']>0?0:1;
$departs = array();
$data_depart = array();
//$departs=getDepartmentByUid($uid);
$orgids = C::t('organization_user') -> fetch_orgids_by_uid($uid);
//判断是否对此用户有管理权限
$uperm = false;
if ($_G['adminid'] != 1) {
foreach ($orgids as $orgid) {
if (C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
$uperm = true;
break;
}
}
if (!$uperm)
exit(lang('orguser_edituser_add_user1'));
}
//获取系统可分配空间大小
$allowallotspace = C::t('organization')->get_system_allowallot_space();
//如果该用户之前有分配空间,当前用户可分配空间=系统可分配空间+该用户之前分配空间(若无,则加上当前用户已使用空间)
if($userfield['userspace'] > 0){
$currentuserAllotspace = $allowallotspace + $userfield['userspace']*1024*1024;
}else{
$currentuserAllotspace = $allowallotspace + $userfield['usesize'];
}
$departs = C::t('organization') -> fetch_all($orgids);
foreach ($departs as $key => $value) {
$orgpath = getPathByOrgid($value['orgid']);
$value['depart'] = implode('-', ($orgpath));
$value['ismoderator'] = C::t('organization_admin') -> ismoderator_by_uid_orgid($value['orgid'], $_G['uid']);
$value['jobs'] = C::t('organization_job') -> fetch_all_by_orgid($value['orgid']);
$value['user'] = C::t('organization_user') -> fetch_by_uid_orgid($uid, $value['orgid']);
$value['jobid'] = $value['user']['jobid'];
$value['jobname'] = $value['jobs'][$value['jobid']] ? $value['jobs'][$value['jobid']]['name'] : lang('none');
$data_depart[$key] = $value;
}
//$orgtree_admin=getDepartmentOption_admin(0);
if ($upjob = C::t('organization_upjob') -> fetch_by_uid($uid)) {
$upjob['jobs'] = C::t('organization_job') -> fetch_all_by_orgid($upjob['orgid']);
} else {
$upjob = array('jobid' => 0, 'depart' => lang('please_select_a_organization_or_department'), 'name' => lang('none'));
}
//$orgtree_all=getDepartmentOption_admin(0,'',true);
$perm = 1;
if ($user['groupid'] < $_G['groupid'] || (C::t('user') -> checkfounder($user) && !C::t('user') -> checkfounder($_G['member']))) {
$perm = 0;
}
include template('edituser');
}
} elseif ($do == 'profile') {
//判断是否对此用户有管理权限
$uperm = false;
if ($_G['adminid'] != 1) {
if ($orgids = C::t('organization_user') -> fetch_orgids_by_uid($uid)) {
foreach ($orgids as $orgid) {
if (C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
$uperm = true;
break;
}
}
}
if (!$uperm)
exit(lang('orguser_edituser_add_user1'));
}
include_once libfile('function/profile', '', 'user');
$space = getuserbyuid($uid);
space_merge($space, 'profile');
loadcache('profilesetting');
if (empty($_G['cache']['profilesetting'])) {
loadcache('profilesetting');
}
if (submitcheck('profilesubmit')) {
$setarr = array();
foreach ($_GET as $key => $value) {
$field = $_G['cache']['profilesetting'][$key];
if (empty($field)) {
continue;
} elseif (profile_check($key, $value, $space)) {
$setarr[$key] = dhtmlspecialchars(trim($value));
}
}
if (isset($_POST['birthmonth']) && ($space['birthmonth'] != $_POST['birthmonth'] || $space['birthday'] != $_POST['birthday'])) {
$setarr['constellation'] = get_constellation($_POST['birthmonth'], $_POST['birthday']);
}
if (isset($_POST['birthyear']) && $space['birthyear'] != $_POST['birthyear']) {
$setarr['zodiac'] = get_zodiac($_POST['birthyear']);
}
if ($setarr) {
$setarr['uid'] = $uid;
C::t('user_profile') -> insert($setarr);
}
showmessage('subscriber_data_alter_success', MOD_URL.'#user_' . $uid . '_profile', array());
} else {
$allowitems = array();
foreach ($_G['cache']['profilesetting'] as $key => $value) {
if ($value['available'] > 0)
$allowitems[] = $key;
}
$htmls = $settings = array();
foreach ($allowitems as $fieldid) {
if (!in_array($fieldid, array('department', 'timeoffset'))) {
$html = profile_setting($fieldid, $space, false, true);
if ($html) {
$settings[$fieldid] = $_G['cache']['profilesetting'][$fieldid];
$htmls[$fieldid] = $html;
}
}
}
$active = array('profile' => 'class="active"');
include template('profile');
}
}
exit();
?>

View File

@@ -1,183 +0,0 @@
<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if(!defined('IN_DZZ')) {
exit('Access Denied');
}
require_once libfile('function/organization');
require_once DZZ_ROOT.'./core/class/class_PHPExcel.php';
if($_G['adminid']!=1) showmessage('system_administrator_export',dreferer());
$h0=array('username'=>lang('compellation'),'email'=>lang('email'),'birth'=>lang('date_birth'),'gender'=>lang('gender'),'mobile'=>lang('cellphone'),'weixinid'=>lang('weixin'),'orgname'=>lang('category_department'),'job'=>lang('department_position'));
$h1=getProfileForImport();
$h0=array_merge($h0,$h1);
$orgid=intval($_GET['orgid']);
if(!submitcheck('exportsubmit')){
$orgpath=C::t('organization')->getPathByOrgid($orgid);
if(empty($orgpath)) $orgpath=lang('please_select_range_export');
//默认选中
$open=array();
$patharr=getPathByOrgid($orgid);
$arr=array_keys($patharr);
array_pop($arr);
$count=count($arr);
if($open[$arr[$count-1]]){
if(count($open[$arr[$count-1]])>$count) $open[$arr[count($arr)-1]]=$arr;
}else{
$open[$arr[$count-1]]=$arr;
}
$openarr=json_encode(array('orgid'=>$open));
include template('export');
exit();
}else{
if(!is_array($_GET['item'])) showmessage('please_select_project_export',dreferer());
foreach($h0 as $key=>$value){
if(!in_array($key,$_GET['item'])) unset($h0[$key]);
}
$title='';
if($org=C::t('organization')->fetch($orgid)){
$orgids=getOrgidTree($org['orgid']);
if($org['forgid']>0){
$toporgid=C::t('organization')->getTopOrgid($orgid);
$toporg=C::t('organization')->fetch($toporgid);
$title=$_G['setting']['sitename'].'-'.$toporg['orgname'].'-'.$org['orgname'];
}else{
$title=$_G['setting']['sitename'].'-'.$org['orgname'];
}
}else{
$title=$_G['setting']['sitename'];
}
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator($_G['username'])
->setTitle($title.' - '.lang('user_information_table').' - DzzOffice')
->setSubject($title.' - '.lang('user_information_table'))
->setDescription($title.' - '.lang('user_information_table').' Export By DzzOffice '.date('Y-m-d H:i:s'))
->setKeywords($title.' - '.lang('user_information_table'))
->setCategory(lang('user_information_table'));
$list=array();
// Create a first sheet
$objPHPExcel->setActiveSheetIndex(0);
$j=0;
foreach($h0 as $key =>$value){
$index=getColIndex($j).'1';
$objPHPExcel->getActiveSheet()->setCellValue($index,$value);
$list[1][$index]=$value;
$j++;
}
$i=2;
$wheresql=1;
if($orgid){
$uids=C::t('organization_user')->fetch_uids_by_orgid($orgids);
$wheresql=" where uid IN (".dimplode($uids).")";
}else{
$wheresql=" where 1 ";
}
foreach(DB::fetch_all("select * from %t $wheresql",array('user')) as $user){
$profile=C::t('user_profile')->fetch_all($user['uid']);
if($profile) $value=array_merge($user,$profile[$user['uid']]);
else $value=$user;
if($value['birthyear'] && $value['birthmonth'] && $value['birthday']) $value['birth']=$value['birthyear'] .'-'. $value['birthmonth'] .'-'. $value['birthday'];
if($value['gender']){
if($value['gender']==2) $value['gender']=lang('woman');
elseif($value['gender']==1) $value['gender']=lang('man');
else $value['gender']='';
}
//获取用户的部门和职位
if($orgids=C::t('organization_user')->fetch_orgids_by_uid($value['uid'])){
$k=0;
foreach($orgids as $key=> $gid){
$orgpath=C::t('organization')->getPathByOrgid($gid);
$value['orgname']=str_replace('-','/',$orgpath);
if(empty($value['orgname'])) continue;
if($job=DB::fetch_first("select j.name from %t u LEFT JOIN %t j ON u.jobid=j.jobid where u.orgid=%d and u.uid=%d",array('organization_user','organization_job',$gid,$user['uid']))) $value['job']=$job['name'];
$j=0;
foreach($h0 as $key1 =>$fieldid){
$index=getColIndex($j).intval($i+$k);
$objPHPExcel->getActiveSheet()->setCellValue($index,$value[$key1]);
$j++;
$list[$i+$k][$index]=$value[$key1];
}
$k++;
}
$i+=$k-1;
}else{
$j=0;
foreach($h0 as $key1 =>$fieldid){
$index=getColIndex($j).($i);
$objPHPExcel->getActiveSheet()->setCellValue($index,$value[$key1]);
$j++;
$list[$i][$index]=$value[$key1];
}
}
$i++;
}
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$filename=$_G['setting']['attachdir'].'./cache/'.random(5).'.xlsx';
$objWriter->save($filename);
$name=$title.' - '.lang('user_information_table').'.xlsx';
$name = '"'.(strtolower(CHARSET) == 'utf-8' && (strexists($_SERVER['HTTP_USER_AGENT'], 'MSIE') || strexists($_SERVER['HTTP_USER_AGENT'], 'rv:11')) ? urlencode($name) : $name).'"';
$filesize=filesize($filename);
$chunk = 10 * 1024 * 1024;
if(!$fp = @fopen($filename, 'rb')) {
exit(lang('export_failure'));
}
dheader('Date: '.gmdate('D, d M Y H:i:s', TIMESTAMP).' GMT');
dheader('Last-Modified: '.gmdate('D, d M Y H:i:s', TIMESTAMP).' GMT');
dheader('Content-Encoding: none');
dheader('Content-Disposition: attachment; filename='.$name);
dheader('Content-Type: application/octet-stream');
dheader('Content-Length: '.$filesize);
@ob_end_clean();if(getglobal('gzipcompress')) @ob_start('ob_gzhandler');
while (!feof($fp)) {
echo fread($fp, $chunk);
@ob_flush(); // flush output
@flush();
}
@unlink($filename);
exit();
}
function getColIndex($index){
$string="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$ret='';
if($index>255) return '';
for($i=0;$i<floor($index/strlen($string));$i++){
$ret=$string[$i];
}
$ret.=$string[($index%(strlen($string)))];
return $ret;
}
function getProfileForImport(){
global $_G;
if(empty($_G['cache']['profilesetting'])) {
loadcache('profilesetting');
}
$profilesetting=$_G['cache']['profilesetting'];
$ret=array();
foreach($profilesetting as $key=> $value){
if(in_array($key,array('department','realname','gender','birthyear','birthmonth','birthday','constellation','zodiac'))) continue;
elseif($value['formtype']=='file') continue;
elseif($value['formtype']=='select' || $value['formtype']=='radio'){
$ret[$key]=$value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'|',$value['choices']).')':'')*/;
}elseif( $value['formtype']=='checkbox'){
$ret[$key]=$value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'-',$value['choices']).')':'')*/;
}else{
$ret[$key]=$value['title'];
}
}
return $ret;
}
?>

View File

@@ -1,96 +0,0 @@
<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if(!defined('IN_DZZ')) {
exit('Access Denied');
}
$h0=array('username'=>lang('compellation'),'email'=>lang('email'),'password'=>lang('user_login_password'),'birth'=>lang('date_birth'),'gender'=>lang('gender'),'mobile'=>lang('cellphone'),'weixinid'=>lang('weixin'),'orgname'=>lang('category_department'),'job'=>lang('department_position'));
$h1=getProfileForImport();
$h0=array_merge($h0,$h1);
$title=lang('bulk_import_user_template');
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator($_G['username'])
->setTitle($title.' - DzzOffice')
->setSubject($title)
->setDescription($title.' Export By DzzOffice '.date('Y-m-d H:i:s'))
->setKeywords($title)
->setCategory($title);
$list=array();
// Create a first sheet
$objPHPExcel->setActiveSheetIndex(0);
$j=0;
foreach($h0 as $key =>$value){
$index=getColIndex($j).'1';
$objPHPExcel->getActiveSheet()->setCellValue($index,$value);
if($key=='username' || $key=='email'){
$objPHPExcel->getActiveSheet()->getStyle($index)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);
}
$list[1][$index]=$value;
$j++;
}
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$filename=$_G['setting']['attachdir'].'./cache/'.random(5).'.xlsx';
$objWriter->save($filename);
$name=$title.'.xlsx';
$name = '"'.(strtolower(CHARSET) == 'utf-8' && (strexists($_SERVER['HTTP_USER_AGENT'], 'MSIE') || strexists($_SERVER['HTTP_USER_AGENT'], 'rv:11')) ? urlencode($name) : $name).'"';
$filesize=filesize($filename);
$chunk = 10 * 1024 * 1024;
if(!$fp = @fopen($filename, 'rb')) {
exit(lang('export_failure'));
}
dheader('Date: '.gmdate('D, d M Y H:i:s', TIMESTAMP).' GMT');
dheader('Last-Modified: '.gmdate('D, d M Y H:i:s', TIMESTAMP).' GMT');
dheader('Content-Encoding: none');
dheader('Content-Disposition: attachment; filename='.$name);
dheader('Content-Type: application/octet-stream');
dheader('Content-Length: '.$filesize);
@ob_end_clean();if(getglobal('gzipcompress')) @ob_start('ob_gzhandler');
while (!feof($fp)) {
echo fread($fp, $chunk);
@ob_flush(); // flush output
@flush();
}
@unlink($filename);
exit();
function getColIndex($index){
$string="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$ret='';
if($index>255) return '';
for($i=0;$i<floor($index/strlen($string));$i++){
$ret=$string[$i];
}
$ret.=$string[($index%(strlen($string)))];
return $ret;
}
function getProfileForImport(){
global $_G;
if(empty($_G['cache']['profilesetting'])) {
loadcache('profilesetting');
}
$profilesetting=$_G['cache']['profilesetting'];
$ret=array();
foreach($profilesetting as $key=> $value){
if(in_array($key,array('department','realname','gender','birthyear','birthmonth','birthday','constellation','zodiac'))) continue;
elseif($value['formtype']=='file') continue;
elseif($value['formtype']=='select' || $value['formtype']=='radio'){
$ret[$key]=$value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'|',$value['choices']).')':'')*/;
}elseif( $value['formtype']=='checkbox'){
$ret[$key]=$value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'-',$value['choices']).')':'')*/;
}else{
$ret[$key]=$value['title'];
}
}
return $ret;
}
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -1,276 +0,0 @@
.news {
width: 100%;
margin-bottom: 20px;
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
border: 1px solid #ebeef5;
border-radius: var(--radius);
padding: 20px;
display: flex;
}
.form-horizontal-left .form-control{
width: 100%
}
.bs-main-container{
padding:0;
}
.jstree-root{
padding:5px 0 0 10px;
line-height:24px;
}
.classtree-topbar{
position:relative;
bottom:0px;
left:0px;
border-bottom:1px solid #D2D2D2;
border-top:1px solid #FFF;
padding:7px 10px 3px 10px;
}
.classtree-search{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 39px;
display: none;
}
.classtree-topbar a{
display:inline-block;
width:24px;
height:24px;
background-image:url(icons_24.png);
_filter: Alpha(opacity=70);
opacity: 0.7;
}
.classtree-topbar .newdir{
background-position:0 0;
}
.classtree-topbar .newdir_1{
background-position:0 -24px;
}
.classtree-topbar .newdoc{
background-position:0 -48px;
}
.classtree-topbar .import{
background-position:0 -72px;
}
.classtree-topbar .search{
background-position:0 -96px;
}
.classtree-topbar .guide{
background-position:0 -120px;
}
.classtree-topbar a:hover{
_filter: Alpha(opacity=100);
opacity: 1;
}
.classtree-topbar a:active{
}
/*重定义图标*/
.jstree-default .jstree-icon:empty {
font-size: 22px;
}
.jstree-default-large .jstree-icon:empty{
width: 24px;
height: 24px;
border-radius: 50%;
}
.jstree-default .jstree-icon {
width: 24px;
height: 24px;
border-radius: 50%;
}
.jstree-default .jstree-icon.jstree-themeicon-custom{
margin-top:5px;
}
.jstree-default .jstree-icon.jstree-themeicon-custom.dzz{
margin-top:-2px;
}
.moderators-container .user-item{
padding:10px;width:120px;position:relative;height:180px;
}
.moderators-container .user-item .delete{
display:none;
position:absolute;top:5px;right:5px;width:24px;height:24px;
cursor:pointer;
z-index:100;
}
.moderators-container .user-item.hover .delete{
display:block;
}
.moderators-container .user-item-avatar{
width:100px;height:100px;
}
.moderators-container .user-item .avatar-cover{
width:100px;height:100px;
position:absolute;
left:10px;
top:10px;
background:url(user_bg.png) no-repeat;
z-index:10;
}
.ie8 .moderators-container .user-item .avatar-cover{
display:none;
}
.moderators-container .user-item-avatar .avatar-face{
width:90px;height:90px;margin:5px
}
.moderators-container .user-item-avatar img{
width:100%;
height:100%;
border-radius:50%;
}
.moderators-container .moderators-acceptor{
padding:10px;width:227px;height:170px;position:relative;
margin-top:10px;
background:url(add_guide.png) no-repeat;
}
.moderators-container .moderators-acceptor .avatar-cover{
left:25px;
top:0px;
display:none;
width:100px;height:100px;
position:absolute;
background:url(user_bg.png) no-repeat;
z-index:10;
}
.moderators-container .moderators-acceptor .user-item-avatar{
margin:-10px 0 0 15px;
display:none;
}
.moderators-container .moderators-acceptor.hover .user-item-avatar,.moderators-container .moderators-acceptor.hover .avatar-cover {
display:block;
}
.main-body{
border-top:1px solid #FFF;
}
.group-head li{
float: left;
list-style: none;
}
.head-portrait {
margin-right: 10px;
border: 1px solid transparent;
border-radius: 3px;
position: relative;
margin-bottom: 0;
}
.head-portrait img, .head-file img, .head-file input {
width: 100%;
height: 100%;
border-radius: 50%;
}
.head-file {
position: relative;
}
.head-file input {
position: absolute;
top: 0;
left: 0;
opacity: 0;
}
textarea{
resize: none;
}
.setting-img {
height: 150px;
}
.setting-img img {
width: 100%;
height: 100%;
}
.upload-click {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
color: #fff;
line-height: 150px;
text-align: center;
font-size: 18px;
letter-spacing: 2px;
}
#exampleInputFile {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
opacity: 0;
}
.head-checkbox{
display: none;
position: absolute;
left:1px;
top:0;
width:100%;
height:100%;
}
.head-portrait:hover {
border: 1px solid #2196f3;
}
.group-head .head-checkbox .checkbox-custom {
height:100%;
margin: 0px;
}
.group-head .head-checkbox .checkbox-custom label{
vertical-align: text-top;
}
.headFirstWord{
display: inline-block;
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
font-size: 18px;
}
.head-portrait:hover .head-checkbox {
display: block;
}
.group-head{
overflow: hidden;
padding: 0;
}
.head-portrait .hover{
display: block;
}
.has-warning .form-control {
border-color: #ff3203;
box-shadow: inset 0 0px 0px rgba(0,0,0,.075);
}
kbd{
background-color: transparent;color: #ff3203;font-size: 100%;-webkit-box-shadow:inset 0 0 0 rgba(0,0,0,.25);box-shadow:inset 0 0 0 rgba(0,0,0,.25);
}
.head-portrait .iconFirstWord{
width: 40px;
height: 40px;
border-radius: 50%;
display: inline-block;
line-height: 40px;
text-align: center;
margin-right: 2px;
color: #FFFFFF;
font-size:24px;
}
.iconFirstWord {
width: 24px;
height: 24px;
border-radius: 50%;
display: inline-block;
line-height: 24px;
text-align: center;
margin-right: 2px;
color: #FFFFFF;
font-size:14px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -1,462 +0,0 @@
<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if(!defined('IN_DZZ')) {
exit('Access Denied');
}
require_once libfile('function/mail');
$navtitle = lang('user_import').' - '.lang('appname');
if($_G['adminid']!=1) showmessage('orguser_import_user',dreferer());
require_once libfile('function/organization');
$do=trim($_GET['do']);
if($do=='importing'){
//判断邮箱是否存在
require_once libfile('function/user','','user');
$email=trim($_GET['email']);
$_GET['username']=addslashes(trim(stripslashes(trim($_GET['username']))));
$_GET['username']=str_replace('...','',getstr($_GET['username'],30));
$_GET['password']=empty($_GET['password'])?trim($_GET['pswdefault']):trim($_GET['password']);
$_GET['weixinid']=addslashes(trim(stripslashes(trim($_GET['weixinid']))));
$_GET['mobile']=addslashes(trim(stripslashes(trim($_GET['mobile']))));
if(empty($email) || empty($_GET['username'])) exit(json_encode(array('error'=>lang('name_email_empty'))));
if(!isemail($email)) exit(json_encode(array('error'=>'email'.lang('format_error'))));
$isappend=intval($_GET['append']);
/*
if($sendmail){ //随机密码时重新设置密码为随机数;
$_GET['password']=random(8);
}*/
$exist=0;
//检查用户是否已经存在
if(($user=C::t('user')->fetch_by_email($email)) || ($user=C::t('user')->fetch_by_username($_GET['username']))){//用户已经存在时
$uid=$user['uid'];
$exist=1;
if($isfounder=C::t('user')->checkfounder($user)) $isappend=1;//创始人不支持覆盖导入
if($isappend){//增量添加如果原先没有nickname,增加
$sitename=$_G['setting']['sitename'];
$appendfield=array();
if($_GET['mobile'] && empty($user['phone'])){
if(!preg_match("/^\d+$/",$_GET['mobile'])){
exit(json_encode(array('error'=>lang('phone_number_illegal'))));
}
if(C::t('user')->fetch_by_phone($_GET['mobile']) ) {
exit(json_encode(array('error'=>lang('user_phone_exist'))));
}
$appendfield['phone']=$_GET['mobile'];
}
if($_GET['weixinid'] && empty($user['weixinid'])){
if(!preg_match("/^[a-zA-Z\d_]{5,}$/i",$_GET['weixinid'])){
exit(json_encode(array('error'=>lang('weixin_illegal'))));
}
if(C::t('user')->fetch_by_weixinid($_GET['weixinid']) ) {
exit(json_encode(array('error'=>lang('weixin_exist'))));
}
$appendfield['weixinid']=$_GET['weixinid'];
}
if($appendfield) C::t('user')->update($uid,$appendfield);
}else{ //覆盖导入时,覆盖用户的姓名和密码
$sitename=$_G['setting']['sitename'];
$salt=substr(uniqid(rand()), -6);
if(!check_username($_GET['username'])) exit(json_encode(array('error'=>lang('user_name_sensitive'))));
$setarr=array('username'=>$_GET['username'],
'password'=>md5(md5($_GET['password']).$salt),
'salt'=>$salt
);
if($_GET['mobile'] && $_GET['mobile']!=$user['phone']){
if(!preg_match("/^\d+$/",$_GET['mobile'])){
exit(json_encode(array('error'=>lang('phone_number_illegal'))));
}
if(C::t('user')->fetch_by_phone($_GET['mobile']) ) {
exit(json_encode(array('error'=>lang('user_phone_exist'))));
}
$setarr['phone']=$_GET['mobile'];
}
if($_GET['weixinid'] && $_GET['weixinid']!=$user['weixinid']){
if(!preg_match("/^[a-zA-Z\d_]{5,}$/i",$_GET['weixinid'])){
exit(json_encode(array('error'=>lang('weixin_illegal'))));
}
if(C::t('user')->fetch_by_weixinid($_GET['weixinid']) ) {
exit(json_encode(array('error'=>lang('weixin_exist'))));
}
$setarr['weixinid']=$_GET['weixinid'];
}
C::t('user')->update($uid,$setarr);
if($sendmail){ //发送密码到用户邮箱,延时发送
$email_password_message = <<<EOT
<p style="font-size:14px;color:#333; line-height:24px; margin:0;">尊敬的用户$member[username],您好!</p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">您收到这封邮件,是由于 $sitename 的管理员编辑成员信息时使用了这个邮箱地址。如果您不知道 $sitename 请忽略这封邮件。您不需要退订或进行其他进一步的操作。</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;font-weight:bold;">登录帐号和密码</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 12px;">登录帐号:$email</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">登录密码:$_GET[password]</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">感谢您的访问,祝您使用愉快!</span></p>
EOT;
if(!sendmail_cron("$_GET[username] <$email>", lang('email_password_subject'), $email_password_message)) {
runlog('sendmail', "$email 发送失败");
}
}
}
}else{ //新添用户
if(!check_username($_GET['username'])) exit(json_encode(array('error'=>lang('user_name_sensitive'))));
$user=uc_add_user($_GET['username'], $_GET['password'], $email);
$uid=$user['uid'];
if($uid<1) exit(json_encode(array('error'=>lang('import_failure'))));
$base = array(
'uid' => $uid,
'adminid' => 0,
'groupid' =>9,
'regdate' => TIMESTAMP,
'emailstatus' => 1,
);
if($_GET['mobile']){
if(!preg_match("/^\d+$/",$_GET['mobile'])){
}elseif(C::t('user')->fetch_by_phone($_GET['mobile']) ) {
}else{
$base['phone']=$_GET['mobile'];
}
}
if($_GET['weixinid']){
if(!preg_match("/^[a-zA-Z\d_]{5,}$/i",$_GET['weixinid'])){
}elseif(C::t('user')->fetch_by_weixinid($_GET['weixinid'])) {
}else{
$base['weixinid']=$_GET['weixinid'];
}
}
$sitename=$_G['setting']['sitename'];
C::t('user')->update($uid,$base);
if($sendmail){ //发送密码到用户邮箱,延时发送
$email_password_message = <<<EOT
<p style="font-size:14px;color:#333; line-height:24px; margin:0;">尊敬的用户$member[username],您好!</p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">您收到这封邮件,是由于 $sitename 的管理员添加成员时使用了这个邮箱地址。如果您不知道 $sitename 请忽略这封邮件。您不需要退订或进行其他进一步的操作。</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;font-weight:bold;">登录帐号和密码</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 12px;">登录帐号:$email</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">登录密码:$_GET[password]</span></p>
<p style="line-height: 24px; margin: 6px 0px 0px; overflow-wrap: break-word; word-break: break-all;"><span style="color: rgb(51, 51, 51); font-size: 14px;">感谢您的访问,祝您使用愉快!</span></p>
EOT;
if(!sendmail_cron("$_GET[username] <$email>", lang('email_password_subject'), $email_password_message)) {
runlog('sendmail', "$email 发送失败");
}
}
}
//处理用户资料
$_GET['gender']=trim($_GET['gender']);
$_GET['birth']=trim($_GET['birth']);
$_GET['telephone']=trim($_GET['telephone']);
//$_GET['mobile']=trim($_GET['mobile']);
if($exist && $isappend){ //增量时
$oldprofile=C::t('user_profile')->fetch($uid);
$profile=array();
if(!empty($_GET['birth']) && empty($oldprofile['birthyear'])){
$birth=strtotime($_GET['birth']);
if($birth<TIMESTAMP && $birth>0){
$arr=getdate($birth);
$profile['birthyear']=$arr['year'];
$profile['birthmonth']=$arr['mon'];
$profile['birthday']=$arr['mday'];
}
}
if(!empty($_GET['gender']) && empty($oldprofile['gender'])){
if($_GET['gender']==lang('man')) $profile['gender']=1;
elseif($_GET['gender']==lang('woman')) $profile['gender']=2;
else $profile['gender']=0;
}
if(!empty($_GET['telephone']) && empty($oldprofile['telephone'])){
$profile['telephone']=$_GET['telephone'];
}
foreach($_GET as $key=>$value){
if(!empty($_GET[$key]) && empty($oldprofile[$key])){
if(checkprofile($key,$value)) $profile[$key]=$value;
}
}
if($profile){
$profile['uid']=$uid;
C::t('user_profile')->insert($profile);
}
}else{
$profile=array();
if(!empty($_GET['birth'])){
$birth=strtotime(trim($_GET['birth']));
if($birth<TIMESTAMP && $birth>0){
$arr=getdate($birth);
$profile['birthyear']=$arr['year'];
$profile['birthmonth']=$arr['mon'];
$profile['birthday']=$arr['mday'];
}
}
if(!empty($_GET['gender'])){
if($_GET['gender']==lang('man')) $profile['gender']=1;
elseif($_GET['gender']==lang('woman')) $profile['gender']=2;
else $profile['gender']=0;
}
if(!empty($_GET['telephone'])){
$profile['telephone']=$_GET['telephone'];
}
foreach($_GET as $key=>$value){
if(checkprofile($key,$value)) $profile[$key]=$value;
}
$profile['uid']=$uid;
C::t('user_profile')->insert($profile);
//插入用户状态表
$status = array(
'uid' => $uid,
'regip' => '',
'lastip' => '',
'lastvisit' => '',
'lastactivity' => '',
'lastsendmail' => 0
);
C::t('user_status')->insert($status, false, true);
}
//处理部门和职位
$orgid=intval($_GET['orgid']);
$_GET['orgname']=!empty($_GET['orgname'])?explode('/',$_GET['orgname']):array();
$_GET['job']=!empty($_GET['job'])?explode('/',$_GET['job']):array();
//创建机构和部门
foreach($_GET['orgname'] as $key => $orgname){
if(empty($orgname)) continue;
if($porgid=DB::result_first("select orgid from %t where forgid=%d and orgname=%s",array('organization',$orgid,$orgname))){
$orgid=$porgid;
}else{
$setarr=array('forgid'=>$orgid,
'orgname'=>$orgname,
'fid'=>0,
'disp'=>100,
'indesk'=>0,
'dateline'=>TIMESTAMP,
);
if($porgid=C::t('organization')->insert_by_orgid($setarr)){
$orgid=$porgid;
}
}
}
//用户加入机构
if($isappend){//增量导入时
C::t('organization_user')->insert_by_orgid($orgid,$uid);
}else{
C::t('organization_user')->delete_by_uid($uid,0);
C::t('organization_user')->insert_by_orgid($orgid,$uid);
}
if($orgid){
foreach($_GET['job'] as $key =>$jobname){ //处理职位
$jobid=0;
if($pjobid=DB::result_first("select jobid from %t where orgid=%d and name=%s",array('organization_job',$orgid,$jobname))){
$jobid=$pjobid;
}else{
$setarr=array('orgid'=>$orgid,
'name'=>$_GET['job'][$key],
'dateline'=>TIMESTAMP,
'opuid'=>$_G['uid']
);
if($pjobid=C::t('organization_job')->insert($setarr,1)){
$jobid=$pjobid;
}
}
if($jobid){
if($isappend){//增量导入时
if(!DB::result_first("select COUNT(*) from %t where uid=%d and orgid=%d and jobid>0 ",array('organization_user',$uid,$orgid))){
DB::update('organization_user',array('jobid'=>$jobid),"uid='{$uid}' and orgid='{$orgid}'");
}
}else{//覆盖导入时
DB::update('organization_user',array('jobid'=>$jobid),"uid='{$uid}' and orgid='{$orgid}'");
}
}
}
}
exit(json_encode(array('msg'=>'success')));
}elseif($do=='list'){
require_once DZZ_ROOT.'./core/class/class_PHPExcel.php';
$inputFileName = $_G['setting']['attachdir'].$_GET['file'];
if(!is_file($inputFileName)){
showmessage('orguser_import_user_table',MOD_URL.'&op=import');
}
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
//获取导入数据的字段
$h0=array('username'=>lang('compellation'),'email'=>lang('email'),'nickname'=>lang('username'),'birth'=>lang('date_birth'),'gender'=>lang('gender'),'mobile'=>lang('cellphone'),'weixinid'=>lang('weixin'),'orgname'=>lang('category_department'),'job'=>lang('department_position'),'password'=>lang('user_login_password'));
$h1=getProfileForImport();
$h0=array_merge($h0,$h1);
//获取可导入的用户资料
$h=array();
foreach($sheetData[1] as $key =>$value){
$value=trim($value);
foreach($h0 as $fieldid=>$title){
if($title==$value){
$h[$key]=$fieldid;
break;
}
}
}
if(!in_array('username',$h)){
showmessage('lack_required_fields_name');
}elseif(!in_array('email',$h) && !in_array('username',$h)){
showmessage('lack_required_fields_name_email');
}
if(!in_array('email',$h)){
$h=array_merge(array('_'=>'email'),$h);
}
$list=array();
foreach($sheetData as $key=> $value){
if($key<=1) continue;
$temp=array();
foreach($value as $col =>$val){
if(trim($val)=='') continue;
if($h[$col]=='orgname'){
$temp[$h[$col]][]=$val;
}elseif($h[$col]=='job'){
$temp[$h[$col]][]=$val;
}elseif($key1=='birth'){
$arr=explode('-',$value[$value1]);
if(count($arr)==3){
$temp[$key1]=dgmdate(strtotime($arr[2].'-'.$arr[0].'-'.$arr[1]),'Y-m-d');
}else{
$temp[$key1]=$val;
}
}else{
if($h[$col]) $temp[$h[$col]]=$val;
}
}
if(empty($temp['email'])) $temp['email']=random(10,true).'@163.com';
if(isset($list[$temp['email']])){
foreach($h as $key1 => $value1){
if(!empty($temp[$key1])){
$list[$temp['email']][$key1]=$temp[$key1];
}
}
}else{
if($temp) $list[$temp['email']]=$temp;
}
}
$h=array_unique($h);
$orgpath=C::t('organization')->getPathByOrgid($orgid);
if(empty($orgpath)) $orgpath=lang('choose_import_agency_department');
//默认选中
$open=array();
$patharr=getPathByOrgid($orgid);
$arr=(array_keys($patharr));
array_pop($arr);
$count=count($arr);
if($open[$arr[$count-1]]){
if(count($open[$arr[$count-1]])>$count) $open[$arr[count($arr)-1]]=$arr;
}else{
$open[$arr[$count-1]]=$arr;
}
$openarr=json_encode(array('orgid'=>$open));
include template('import_list');
}else{
if(submitcheck('importfilesubmit')){
if($_FILES['importfile']['tmp_name']){
$allowext=array('xls','xlsx');
$ext=strtolower(substr(strrchr($_FILES['importfile']['name'], '.'), 1, 10));
if(!in_array($ext,$allowext)) showmessage('orguser_import_xls_xlsx',dreferer());
if($file=uploadtolocal($_FILES['importfile'],'cache','',array('xls','xlsx'))){
$url=outputurl($_G['siteurl'].MOD_URL.'&op=import&do=list&file='.urlencode($file));
@header("Location: $url");
exit();
showmessage('orguser_import_user_message',outputurl($_G['siteurl'].MOD_URL.'&op=import&do=list&file='.urlencode($file)));
}else{
showmessage('orguser_import_tautology',dreferer());
}
}else{
showmessage('orguser_import_user_message_table',dreferer());
}
}else{
include template('import_guide');
}
}
function checkprofile($fieldid,&$value){
global $_G;
if(empty($_G['cache']['profilesetting'])) {
loadcache('profilesetting');
}
$field = $_G['cache']['profilesetting'][$fieldid];
if(empty($field) || in_array($fieldid, array('department','realname','gender','birthyear','birthmonth','birthday','birth','constellation','zodiac','email','nickname','password','orgname','job','username'))) {
return false;
}
if($field['choices']) {
$field['choices'] = explode("\n", $field['choices']);
}
if($field['formtype'] == 'text' || $field['formtype'] == 'textarea') {
$value = getstr($value);
if($field['size'] && strlen($value) > $field['size']) {
return false;
} else {
$field['validate'] = !empty($field['validate']) ? $field['validate'] : ($_G['profilevalidate'][$fieldid] ? $_G['profilevalidate'][$fieldid] : '');
if($field['validate'] && !preg_match($field['validate'], $value)) {
return false;
}
}
} elseif($field['formtype'] == 'checkbox' || $field['formtype'] == 'list') {
$arr = array();
$value=explode('\n',$value);
foreach ($value as $op) {
if(in_array(trim($op), trim($field['choices']))) {
$arr[] = trim($op);
}
}
$value = implode("\n", $arr);
if($field['size'] && count($arr) > $field['size']) {
return false;
}
} elseif($field['formtype'] == 'radio' || $field['formtype'] == 'select') {
if(!in_array($value, $field['choices'])){
return false;
}
}
return true;
}
function getProfileForImport(){
global $_G;
if(empty($_G['cache']['profilesetting'])) {
loadcache('profilesetting');
}
$profilesetting=$_G['cache']['profilesetting'];
$ret=array();
foreach($profilesetting as $key=> $value){
if(in_array($key,array('department','realname','gender','birthyear','birthmonth','birthday','constellation','zodiac'))) continue;
elseif($value['formtype']=='file') continue;
elseif($value['formtype']=='select' || $value['formtype']=='radio'){
$ret[$key]=$value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'|',$value['choices']).')':'')*/;
}elseif( $value['formtype']=='checkbox'){
$ret[$key]=$value['title']/*.($value['choices']?'('.preg_replace("/[\r\n]/i",'-',$value['choices']).')':'')*/;
}else{
$ret[$key]=$value['title'];
}
}
return $ret;
}
?>

View File

@@ -1,30 +0,0 @@
<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if (!defined('IN_DZZ')) {
exit('Access Denied');
}
$navtitle= lang('appname');
$orgtree = array();
if ($_G['adminid'] != 1) {
//获取用户的有权限的部门树
$orgids = C::t('organization_admin') -> fetch_orgids_by_uid($_G['uid']);
foreach ($orgids as $orgid) {
$arr = C::t('organization')->fetch_parent_by_orgid($orgid, true);
$count = count($arr);
if ($orgtree[$arr[$count - 1]]) {
if (count($orgtree[$arr[$count - 1]]) > $count)
$orgtree[$arr[count($arr) - 1]] = $arr;
} else {
$orgtree[$arr[$count - 1]] = $arr;
}
}
}
$orgtree = json_encode($orgtree);
include template('main');
?>

View File

@@ -1,164 +0,0 @@
<?php
$lang = array (
'appname' => 'Institutional users',
'explorer_gropuperm'=>array(
'Collaborative member ',
'Administrator ',
'The Founder'
),
'orgname'=>' Organization name',
'orgname_placeholder'=>' Enter the institution name ',
'change' => 'change',
'org_description' => 'introduction',
'org_description_placeholder'=>' Enter brief description of institutions ',
'org_space_assign'=>' assign space size ',
'org_space_assign_tip'=>' maximum available space that can be allocated ',
'org_space_assign_tips'=>' <li>Unit m, left blank or 0 means no limit, - 1 means no space </Li> <li> limit the amount of space that can be used by the whole organization or department (including all subordinate departments) (the total amount of space used by all departments under the organization cannot exceed this limit) </Li> <li> the space allocated by a department can only be divided from the available space of the superior department; Once allocated, the remaining space of the superior department will be reduced accordingly, regardless of whether the allocated space is actually used up</li>',
'space_use_department'=>' department space usage ',
'space_use_org'=>' total organization space usage ',
'space_use_org_tips'=>'<li>Limit the space available to the entire organization or department (including all subordinate departments). </Li> <li> the space allocated by subordinate departments will be allocated from the available space of superior departments</li>',
'org_update_success'=>' Update data successfully, will jump for you in 3 seconds ',
'org_img_uploaded_tip'=>' The image has been uploaded, just check it ',
'clicktoupload'=>' clicktoupload',
// admin/orguser/tree.html
'orguser_tree_delete'=>' Are you sure you want to delete this user completely (all of the users data and files will be completely deleted)? ',
'orguser_tree_permission_delete'=>' Delete this user, only remove this user from the department, you may not have permission to operate this user after removal, are you sure you want to remove this user? ',
'orguser_tree_batch_delete'=>' Organizations or departments do not support batch deletion ',
'orguser_tree_all_delete'=>' Before deleting a department, you must delete all subordinate departments of this department and delete files in the shared directory. Are you sure you want to delete this department? ',
// admin/orguser/ajax.php
'orguser_ajax_delete'=>' The user in the organization or department cannot be completely deleted, please delete from the organization or department first and try again ',
'no_parallelism_jurisdiction'=>' no jurisdiction of the corresponding department ',
// admin/orguser/edituser.php
'orguser_edituser_add_user'=>' <div class="well alert danger"> sorry! You do not have permission to add users under this organization or department<Br> <br> you can select the Department with permission on the left, and then try to add </div>',
'orguser_edituser_add_user1'=>' <div class="well alert danger"> sorry! You do not have administrative rights for this user<Br> <br> you can select the user with permission management on the left side, and then retry adding </div>',
// admin/orguser/import.php
'orguser_import_user'=>' No permission, only system administrators can import users ',
'orguser_import_user_table'=>' Staff information table upload failed, please re-upload ',
'orguser_import_xls_xlsx'=>' only XLS, XLSX files can be imported ',
'orguser_import_user_message'=>' Staff information table uploaded successfully, going to import page ',
'orguser_import_tautology'=>' Failed to upload info table, please try again later ',
'orguser_import_user_message_table'=>' Please select the Personnel information table',
// admin/orguser/vidw.php
'orguser_vidw_delete'=>'<div class="well alert-danger">im sorry! You dont have the administrative authority of this department!<br><br>You can select the Department with permission management on the left</div>',
// admin/orguser/detail_org.html
'export_excl'=>' Export all users of this department to an excL file ',
'detail_org_no_enable'=>' If not enabled, all subordinate departments will not be able to use the shared directory; The shared directory is displayed on the enterprise disk only after this function is enabled. ',
'detail_org_explorerapp_enable'=>' When enabled, the organization or department directory can be used in applications such as web disk. ',
'detail_org_enable'=>' The shared directory of this department will be displayed in the enterprise disk organization only after the "detail_org_enable" function is enabled. ',
'detail_org_creation'=>' When the detail_org_creation shortcut is created, the member desktop will have the shortcut by default. ',
'group_org_no_enable'=>' After this function is enabled, Resource Manager will display the organization group option. ',
'group_org_enable'=>' If not enabled, resource Manager will not display the organization group option. ',
'detail_org_administrator'=>'<strong class="pull-left" style="margin-left:-45px;"> Note: </strong>
<li>Authority of institution administrator: set administrators of all departments under the institution, manage all personnel in the institution, and manage all shared directories of the institution</li>
<li>Department Administrator permissions: set administrators of all sub departments under the Department, manage all personnel in the Department, and manage all shared directories of the Department</li>',
'Select organization to set organization information'=>' Select organization to set organization information',
'Select department to set department information'=>' Select department to set department information',
'Select personnel to set personnel information'=>' Select personnel to set personnel information',
'Personnel, departments and institutions can directly drag and move to change positions. Move refers to changing the Department to which the person belongs, and Changing the superior organization or department of the department.'=>' People, departments, and organizations can be dragged and moved to change positions. The movement is to change the department of the personnel, and change the superior organization or superior department of the department. ',
'Hold' => 'Hold',
'Key to move personnel or departments to copy. It is used to join personnel to multiple departments at the same time.'=>'Key to move people or departments for replication. Add people to multiple departments at the same time.',
'Key can be used for multiple selections, and release after multiple selections'=>'Key can be multi - selected, multi - selected after release',
'Key movement is batch movement. Do not loosen'=>' Key to move for batch Loosen. Dont loosen ',
'Right click departments, institutions and personnel to open the right-click menu. There are corresponding more operations in the Menu.'=>' Right-click the department, organization, or personnel to display the right-click menu. There are more operations in the menu. ',
'Delete user description'=>' Delete user description',
'Deleting users from all institutions or departments is only removing users from their own institutions or departments. Users can no longer have all the use rights of their own institutions or departments. It is not deleting users from the system.'=>'If a user is deleted from an organization or department, the user cannot have all the permission to use the organization or department. This does not mean the user is deleted from the system.',
'When the system administrator deletes the user from the "list of non institutional users", the user will be completely deleted in the system, and all system data and saved files of the user will be deleted. Please use it cautiously by the administrator, and delete it after confirming that the member is to be deleted.'=>'If the system administrator deletes a user from the User List, the user will be completely deleted from the system, and all system data and saved files of the user will be deleted. Use caution before deleting a member.',
'Key to move to batch copy.'=>' Key to move to batch copy. ',
'Organization management instructions'=>' Organization Management instructions',
'inport_guide_download'=>' Download the person information import template ',
'inport_guide_template'=>' template items will be automatically generated based on the number of user profile items ',
'inport_guide_user.'=>' Edit the required personnel information table according to the template. ',
'inport_guide_step'=>' Step 3: Select Excel ',
'inport_guide_layout'=>' Select the edited staff layout, support. XLS,. XLSX format ',
'inport_guide_notice'=>' Edit staff information sheet notes ',
'inport_guide_notice_text'=>'<li>1. Edit the personnel information to be imported according to the template fields. If there is already a file information table, you only need to change the name of the relevant field in the existing file information table to be consistent with the name provided in the template. As long as the name corresponds, the position of the field does not affect the result</li>
<li>2. The "user name" field in the template is required, and other fields can be filled in as required</li>
<li>3. The information in the mailbox and user name fields in the table must be unique and cannot be duplicate. If the mailbox is empty, the system will randomly generate the mailbox address when importing</li>
<Li class="danger"> 4. Multi level department creation: Method 1: add multiple columns of "subordinate departments" to the table. From left to right, they are level-1 departments, level-2 departments and level-3 departments. The system will create departments, subordinate departments and lower subordinate departments according to the principle from left to right. Method 2: use a single column in the table, and the superior and subordinate departments use "/" to divide (for example, primary school / grade 1 / class 1)</li>
<li>5. Importing users can only import by organization. Multiple organizations need to be imported in batches</li>
<li>6. The "login password" field in the table can be blank, and administrators can set unified passwords for users in batches when importing. The user can modify the unified password after logging in</li>
<li>7. There are two import methods in the import interface: incremental and overwrite. Incremental method: when encountering the same user, only the missing field information of the user will be added, and the original information will not change. (for example, there is a user a in the system with a password of 123. In the batch import table, there is also a user a, whose unified password is set to ABC when importing. After importing, the passwords of other users are all ABC, and the original user a still keeps his original password, 123.) Overwrite import: completely replace the original user information in the system with the information in the table</li>
<li>8. If there are many people to import, it is recommended to make a test table for a small number of people first, and then import all users in an incremental way after the test is correct</li>',
'import_list_organization'=>' select the organization to import. If no organization is imported, a new organization and department will be generated according to the Department in the user information table. If no organization is imported, it will be directly imported to "personnel without organization ',
'import_list_password'=>' default user password. When the login password item is not set, the password set here will be used as the password of the newly imported user ',
'import_list_coverage'=>' incremental import method: the newly imported user information is intelligently added to the original user information; Overwrite import: the newly imported information overwrites the information of the original user. It is recommended to use the incremental method. ',
'import_list_text'=>'<li>User name and mailbox items are required</li>
<li>Click the content of the import item below to edit it temporarily. When editing a department, please note that each line of the Department is a parent-child relationship, and the previous line is the parent department of the next line</li>
<li>Items that do not need to be imported can be deleted by clicking "X" on the right</li>
<li>Click the import button to import the current project. Click the import all button to import all items in sequence. You can click stop again in the middle</li>',
// admin/member/adduser.html
'adduser_login_email_text'=>' This parameter is mandatory. It can be used for system login. When employees pay attention to the enterprise ID, the enterprise ID will be matched according to the email address. ',
'adduser_compellation_text'=>' Required, displayed in system, easy to identify ',
'adduser_phone_number_text'=>' Set this parameter to the mobile phone number bound to wechat. When an employee pays attention to the enterprise number, it will be matched according to the mobile phone bound to wechat. ',
'adduser_weixin_text'=>' indicates the employees wechat ID. When an employee follows the enterprise ID, it will match according to the employees wechat ID. ',
'adduser_exceptional_space_text'=>' Unit M, additional user storage space (total user space=default space + extra space) ',
'adduser_disable_user_text'=>' After the user is disabled, the user cannot log in to the system. Perform this operation with caution ',
'adduser_usergroup_text'=>' After you set the user as the system administrator, this user will have the system management rights. Please be cautious! ',
// admin/member/edituser.html
'edituser_login_email_text'=>' This parameter is optional and can be used for system login. When employees pay attention to the enterprise number, it will be matched according to the employees email address. ',
'edituser_weixin_text'=>' Select, employees wechat ID. When employees follow enterprise ID, it will be matched according to the employees wechat ID. If you have paid attention to it, this item cannot be modified. ',
'supervisor_position'=>' supervisor position',
'send_password_user_mailbox'=>' Send password to mailbox',
'login_email_required'=>' Required for login ',
'name_will'=>' username required ',
'none_write_login_password'=>' No login password yet ',
'none_write_affirm_password'=>' affirm_password has not been filled in ',
'phone_number'=>' mobile phone number',
'phone_number_illegal'=>' mobile phone number is illegal',
'weixin_phone_number'=>' wechat bound mobile phone number',
'weixin_illegal'=>' wechat illegal',
'user_weixin'=>' employee weixin',
'weixin_exist'=>' wechat already exists ',
'random_password'=>' Generate random password',
'exceptional_space'=>' extra space',
'disable_user'=>' Disable this user',
'block_up' => 'stop',
'set_system_administrator'=>' Set as system administrator',
'add_a_item'=>' add an item',
'add_user'=>' Add user',
'add_user_success'=>' User added successfully ',
'edit_user_success'=>' Modify user information successfully ',
'export_user'=>' Export user',
'shared_directory_set'=>' shared directory setting ',
'group_on_set'=>' Group function Settings ',
'shared_directory_desktop_shortcut'=>' Shared directory desktop shortcut',
'position_management'=>' position management',
'add_position'=>' Add position',
'position_name'=>' position name',
'organization_department'=>' Organization Department',
'share_enable_successful'=>' The shared directory is enabled successfully! ',
'share_close_successful'=>' The shared directory is closed successfully! ',
'group_on_successful'=>' The group function has been enabled successfully! ',
'group_close_successful'=>' The group function is disabled successfully! ',
'login_username_placeholder'=>' Login username ',
'login_username_text'=>' required, available for system login ',
'required_used_login_system'=>' required, available for system login ',
'space_not_change_password'=>' Leave blank, do not change password',
'export_range_user'=>' Select the export range, all users in this range will export ',
'export_data'=>' Export data item ',
'import_nbsp'=>'The import',
'creation_agency'=>' New agency',
'creation_bottom_section'=>' Create the bottom_section',
'creation_equally_section'=>' New sibling department ',
'please_select_same_type_node'=>' Please select a node of the same type ',
'please_select_same_section_node'=>' Please select a node in the same department ',
'add_administrator_unsuccess'=>' Failed to add administrator ',
'no_open_Shared_directory'=>' cannot be set because the shared directory is not enabled ',
'please_select_range_export'=>' Please select the export scope ',
'please_select_project_export'=>' Please select export project ',
'user_information_table'=>' Person information table',
'bulk_import_user_template'=>' Import user templates in batches ',
'name_email_empty'=>' Username and mailbox cannot be empty',
'lack_required_fields_name'=>' lacks the required field "user name"',
'lack_required_fields_name_email'=>'The required field user name or mailbox is missing',
'bulking' => 'delta',
'coverage' => 'cover',
'user_phone_illegal'=>' Users phone number is illegal',
'user_phone_exist'=>' The phone number already exists ',
'user_phone_registered'=>' User phone number has been registered',
'weixin_registered'=>' the wechat signal has been registered',
'user_registered_retry'=>' The user name has been registered, please change the user name and try again ',
'email_registered_retry'=>' The mailbox has been registered, please change the mailbox and try again ',
'import_user'=>' import user',
);
?>

View File

@@ -1,164 +0,0 @@
<?php
$lang = array (
'appname' => '机构用户',
'explorer_gropuperm'=>array(
'协作成员',
'管理员',
'创始人'
),
'orgname'=>'机构名称',
'orgname_placeholder'=>'输入机构(群组)名称',
'change'=>'更换',
'org_description'=>'简介',
'org_description_placeholder'=>'输入机构(群组)简要介绍',
'org_space_assign'=>'分配空间大小',
'org_space_assign_tip'=>'当前可以分配的最大可用空间',
'org_space_assign_tips'=>' <li>单位M留空或者0表示不限制-1表示无空间</li><li>限制整个机构或部门(包括下级所有部门)可以使用的空间大小(机构下所有部门的空间使用总和不能超过这个限制)</li><li>部门分配的空间只能从上级部门的可用空间里面划分;一旦分配,上级部门的剩余空间就会相应减少,不管这些分配的空间是否实际使用完</li>',
'space_use_department'=>'部门空间使用',
'space_use_org'=>'机构总空间使用',
'space_use_org_tips'=>'<li>限制整个机构或部门(包括下级所有部门)可以使用的空间大小</li><li>下级部门分配的空间会从上级的可用空间里面分配</li>',
'org_update_success'=>'更新资料成功,3秒后将为您跳转',
'org_img_uploaded_tip'=>'该图片已经上传过了,只需勾选即可',
'clicktoupload'=>'点击上传',
// admin/orguser/detail_org.html
'export_excl'=>'导出此部门的所有用户到excl文件',
'detail_org_no_enable'=>'如不启用,下级所有部门中将不能使用共享目录;启用后,企业盘才会显示共享目录。',
'detail_org_explorerapp_enable'=>'开启后,可在网盘等应用中能够使用该机构或部门的目录。',
'detail_org_enable'=>'启用后,企业盘机构下才会显示此部门的共享目录。',
'detail_org_creation'=>'创建快捷方式后,所属成员桌面默认都会有相应快捷方式。',
'group_org_no_enable'=>'开启后,资源管理器会显示该机构群组选项。',
'group_org_enable'=>'不开启,资源管理器不会显示该机构群组选项。',
'detail_org_administrator'=>'<strong class="pull-left" style="margin-left:-45px;">注:</strong>
<li>机构管理员权限:设置本机构下所有部门管理员,管理本机构中所有人员,管理本机构所有共享目录。</li>
<li>部门管理员权限:设置本部门下所有子部门管理员,管理本部门中所有人员,管理本部门所有共享目录。</li>',
'Select organization to set organization information'=>'选中机构为设置机构信息',
'Select department to set department information'=>'选中部门为设置部门信息',
'Select personnel to set personnel information'=>'选中人员为设置人员信息',
'Personnel, departments and institutions can directly drag and move to change positions. Move refers to changing the Department to which the person belongs, and changing the superior organization or department of the Department.'=>'人员、部门、机构可直接拖拽移动更换位置。移动是更换人员所属部门、和更换部门上级机构或上级部门。',
'Hold'=>'按住',
'Key to move personnel or departments to copy. It is used to join personnel to multiple departments at the same time.'=>'键移动人员或部门为复制。用于将人员同时加入多个部门。',
'Key can be used for multiple selections, and release after multiple selections'=>'键可多选,多选后松开',
'Key movement is batch movement. Do not loosen'=>'键移动为批量移动。 不松开',
'Right click departments, institutions and personnel to open the right-click menu. There are corresponding more operations in the menu.'=>'在部门、机构、人员上点鼠标右键可出现右键菜单。菜单中有对应的更多操作。',
'Delete user description'=>'删除用户说明',
'Deleting users from all institutions or departments is only removing users from their own institutions or departments. Users can no longer have all the use rights of their own institutions or departments. It is not deleting users from the system.'=>'所有机构、部门中删除用户,只是从本机构,或部门中移除,用户将不能再拥有本机构或部门的所有使用权限,不是将用户从系统中删除。',
'When the system administrator deletes the user from the "list of non institutional users", the user will be completely deleted in the system, and all system data and saved files of the user will be deleted. Please use it cautiously by the administrator, and delete it after confirming that the member is to be deleted.'=>'系统管理员在“未加入机构用户列表”中删除用户,用户会在系统中彻底删除,并且删除用户所有系统数据及保存文件。请管理员谨慎使用,确定成员要删除后再删除。',
'Key to move to batch copy.'=>'键移动为批量复制。',
'Organization management instructions'=>'组织管理说明',
'inport_guide_download'=>'下载人员信息导入模板',
'inport_guide_template'=>'模板的项目会根据用户资料项的多少自动生成',
'inport_guide_user.'=>'根据模板编辑需要人员信息表。',
'inport_guide_step'=>'步骤3选择excel表',
'inport_guide_layout'=>'选择编辑好的人员信息表,支持 .xls、.xlsx格式',
'inport_guide_notice'=>'编辑人员信息表注意事项',
'inport_guide_notice_text'=>'<li>1、根据模板字段来编辑需要导入的人员信息如果已经有档案信息表则只需将现有的档案信息表中的相关字段名称改为与“模板”里提供的名称一致即可只要名称对应字段的位置不影响结果。</li>
<li>2、模板中“用户名”字段必填其他字段根据需要填写。</li>
<li>3、表中“邮箱”、“用户名”字段中的信息必须是唯一的不可重复。如果邮箱为空系统导入时将随机生成邮箱地址。</li>
<li class="danger">4、多级部门创建方法1表中添加多列“所属部门”从左到右分别为一级部门、二级部门、三级部门顺序排列系统会根据从左到右的原则依次创建部门、下级部门、下下级部门等。方法2表格中使用单列上下级部门使用“/”来分割(例如:小学/一年级/一班)。</li>
<li>5、导入用户只能按机构导入多个机构需要分批导入。</li>
<li>6、表中“登录密码”字段可为空管理员在导入时能够为用户批量设置统一的密码。用户使用统一密码登录后可自行修改。</li>
<li>7、导入界面中有“增量”、“覆盖”两种导入方式。增量方式为遇到相同用户只会增加用户缺少的字段信息原有信息不变。例如系统中已有用户A密码为123。在批量导入表格中也有用户A导入时设置了统一密码为abc。导入完成后其他用户的密码都为abc原用户A还是保持他的原有密码即123。覆盖导入将系统中原有的用户信息完全替换为表格中的信息。</li>
<li>8、若需导入的人员较多建议先做一个少量人员的测试表测试无误后再使用增量方式导入所有用户。</li>',
'import_list_organization'=>'选择要导入到的机构,如果不导入任何机构,会根据用户信息表中的所属部门来生成新的机构和部门,没有则会直接导入到"无机构人员"下',
'import_list_password'=>'默认用户密码,当登录密码项未设置时,会使用此处设置的密码作为新导入的用户的密码',
'import_list_coverage'=>'增量导入方式:新导入的用户信息智能的增加到原有用户信息中;覆盖导入:新导入的信息覆盖原有用户的信息,建议使用增量方式。',
'import_list_text'=>'<li>用户名和邮箱项目为必填项</li>
<li>点击下面的导入项的内容,可以临时编辑,编辑部门时注意,部门每行是上下级的关系,上一行为下一行的上级部门</li>
<li>不需要导入的项目,可以点击右侧的"X"删除掉</li>
<li>点击导入按钮,导入当前项目,全部导入按钮,按顺序导入所有项,中途可以再次点击停止</li>',
// admin/orguser/tree.html
'orguser_tree_delete'=>'您确定要彻底删除此用户(用户的所有数据和文件都会彻底删除)吗?',
'orguser_tree_permission_delete'=>'此处删除,仅从部门中移除此用户,移除后您可能没有操作此用户的权限,您确定要移除此用户吗?',
'orguser_tree_batch_delete'=>'机构或部门不支持批量删除',
'orguser_tree_all_delete'=>'删除部门前,必须先删除此部门的所有下级部门,并且删除共享目录中的文件,您确定要删除此部门吗?',
// admin/orguser/ajax.php
'orguser_ajax_delete'=>'在机构或部门中的用户,不支持彻底删除,请先从机构或部门中删除后重试',
'no_parallelism_jurisdiction'=>'没有对应部门的权限',
// admin/orguser/edituser.php
'orguser_edituser_add_user'=>'<div class="well alert-danger">抱歉!您没有在此机构或部门下添加用户的权限!<br><br>可以在左侧选择有权限的部门,再重试添加</div>',
'orguser_edituser_add_user1'=>'<div class="well alert-danger">抱歉!您没有此用户的管理权限!<br><br>可以在左侧选择有权限管理的用户,再重试添加</div>',
// admin/orguser/import.php
'orguser_import_user'=>'没有权限,只有系统管理员才能导入用户',
'orguser_import_user_table'=>'人员信息表上传未成功,请重新上传',
'orguser_import_xls_xlsx'=>'只允许导入xls,xlsx类型的文件',
'orguser_import_user_message'=>'人员信息表上传成功,正在调转到导入页面',
'orguser_import_tautology'=>'上传信息表未成功,请稍候重试',
'orguser_import_user_message_table'=>'请选择人员信息表',
// admin/orguser/vidw.php
'orguser_vidw_delete'=>'<div class="well alert-danger">抱歉!您没有此部门的管理权限!<br><br>可以在左侧选择有权限管理的部门</div>',
// admin/member/adduser.html
'adduser_login_email_text'=>'必填,可用于系统登录,员工关注企业号时,会根据邮箱来匹配。',
'adduser_compellation_text'=>'必填,系统中显示,便于同事辨识',
'adduser_phone_number_text'=>'选填,微信绑定的手机号码,员工关注企业号时,会根据员工微信绑定的手机来匹配。',
'adduser_weixin_text'=>'选填,员工微信号,员工关注企业号时,会根据员工的微信号来匹配。',
'adduser_exceptional_space_text'=>'单位M额外增加用户存储空间用户的总空间=默认空间+额外空间)',
'adduser_disable_user_text'=>'用户停用后,该用户将不能登录系统,请谨慎操作',
'adduser_usergroup_text'=>'设置用户为系统管理员后,此用户将拥有系统管理权限,请慎重!',
// admin/member/edituser.html
'edituser_login_email_text'=>'选填,可用于系统登录,员工关注企业号时,会根据员工的邮箱来匹配。',
'edituser_weixin_text'=>'选填,员工微信号,员工关注企业号时,会根据员工的微信号来匹配。如果已经关注,此项不能修改。',
'supervisor_position'=>'上司职位',
'send_password_user_mailbox'=>'发送密码到用户邮箱',
'login_email_required'=>'登录邮箱必填',
'name_will'=>'用户名必填',
'none_write_login_password'=>'还没有填写登录密码',
'none_write_affirm_password'=>'还没有填写确认密码',
'phone_number'=>'手机号码',
'phone_number_illegal'=>'手机号码不合法',
'weixin_phone_number'=>'微信绑定的手机号码',
'weixin_illegal'=>'微信号不合法',
'user_weixin'=>'员工微信号',
'weixin_exist'=>'微信号已经存在',
'random_password'=>'生成随机密码',
'exceptional_space'=>'额外空间',
'disable_user'=>'停用此用户',
'block_up'=>'停用',
'set_system_administrator'=>'设为系统管理员',
'add_a_item'=>'增加一项',
'add_user'=>'添加用户',
'add_user_success'=>'添加用户成功',
'edit_user_success'=>'修改用户信息成功',
'email_registered_retry'=>'邮箱已经被注册,请更换邮箱再试',
'export_user'=>'导出用户',
'shared_directory_set'=>'共享目录设置',
'group_on_set'=>'群组功能设置',
'shared_directory_desktop_shortcut'=>'共享目录桌面快捷方式',
'position_management'=>'职位管理',
'add_position'=>'添加职位',
'position_name'=>'职位名称',
'organization_department'=>'机构部门',
'share_enable_successful'=>'共享目录启用成功!',
'share_close_successful'=>'共享目录关闭成功!',
'group_on_successful'=>'群组功能开启成功!',
'group_close_successful'=>'群组功能关闭成功!',
'login_username_placeholder'=>'登录用户名',
'login_username_text'=>'必填,可用于系统登录',
'required_used_login_system'=>'必填,可用于系统登录',
'space_not_change_password'=>'留空,不修改密码',
'export_range_user'=>'选择导出范围,此范围内的所有用户都会导出',
'export_data'=>'导出资料项',
'import_nbsp'=>'导&nbsp;入',
'creation_agency'=>'新建机构',
'creation_bottom_section'=>'新建下级部门',
'creation_equally_section'=>'新建同级部门',
'please_select_same_type_node'=>'请选择相同类型的节点',
'please_select_same_section_node'=>'请选择相同部门的节点',
'add_administrator_unsuccess'=>'添加管理员失败',
'no_open_Shared_directory'=>'没有开启共享目录,无法设置',
'please_select_range_export'=>'请选择导出范围',
'please_select_project_export'=>'请选择导出项目',
'user_information_table'=>'人员信息表',
'bulk_import_user_template'=>'批量导入用户模板',
'name_email_empty'=>'用户名和邮箱不能为空',
'lack_required_fields_name'=>'缺少必填字段"用户名"',
'lack_required_fields_name_email'=>'缺少必填字段”用户名“或”邮箱“',
'bulking'=>'增量',
'coverage'=>'覆盖',
'user_phone_illegal'=>'用户手机号码不合法',
'user_phone_exist'=>'手机号码已经存在',
'user_phone_registered'=>'用户手机号码已经被注册',
'weixin_registered'=>'该微信号已经被注册',
'user_registered_retry'=>'该用户名已经被注册,请更换用户名再试',
'import_user'=>'导入用户',
);
?>

View File

@@ -1,539 +0,0 @@
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
function checkAdminLogin(str){
if(str.match(/id=\"loginform\"/i)){
return true;
}else{
return false;
}
}
function show_guide(){
jQuery('#orguser_container').load(ajaxurl+'do=guide',function(){
location.hash='';
});
}
function delDepart(obj){
jQuery(obj).parent().parent().remove();
}
var tpml_index=0;
function addorgsel(){
jQuery('#selorg_container').append(' <ul class="nav nav-pills">'+(orgsel_html.replace(/orgid_tpml/ig,'orgid_tpml_'+tpml_index))+'</ul>');
tpml_index++;
}
function selJob(obj){
var jobid=jQuery(obj).attr('_jobid');
var li=jQuery(obj).parent().parent().parent();
var html=obj.innerHTML;
li.find('.dropdown-toggle').attr('_jobid',jobid).find('span').html(html);
li.find('input').val(jobid);
}
function selDepart(obj){
var orgid=jQuery(obj).val();
var li=jQuery(obj).parent();
li.parent().find('.job .dropdown-menu').load(ajaxurl+'do=getjobs&orgid='+orgid,function(html){
if(checkAdminLogin(html)){
location.reload();
}
if(li.parent().find('.job .dropdown-menu li').length>1) li.parent().find('.job .dropdown-toggle').trigger('click');
});
li.parent().find('.job .dropdown-toggle').attr('_jobid',0).find('span').html(__lang.none);
li.parent().find('.job input').val('0');
}
function errormessage(id, msg,passlevel) {
if(jQuery('#'+id).length > 0) {
msg = !msg ? '' : msg;
if(msg == 'succeed') {
msg = '';
jQuery('#suc_' + id).addClass('p_right');
} else if(msg !== '') {
jQuery('#suc_' + id).removeClass('p_right');
}
jQuery('#chk_' + id).find('kbd').html(msg);
if(msg && !passlevel) jQuery('#'+id).parent().parent().addClass('has-warning');
else jQuery('#'+id).parent().parent().removeClass('has-warning');
}
}
function checkemail(id) {
errormessage(id);
var email = trim(jQuery('#'+id).val());
email=email.toLowerCase();
if(jQuery('#'+id).parent()[0].className.match(/ p_right/) && (email == '' || email == lastemail ) || email == lastemail) {
return;
}
if(email.match(/<|"/ig)) {
errormessage(id, __lang.Email_sensitivity);
return;
}
var x = new Ajax();
jQuery('#suc_' + id).removeClass('p_right');
jQuery.getJSON('user.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkemail&email=' + email, function(json) {
if(json.error){
errormessage(id, json.error);
}else{
errormessage(id, 'succeed');
}
});
}
function checknick(id) {
errormessage(id);
var username = trim(jQuery('#'+id).val());
if(jQuery('#chk_' + id).parent()[0].className.match(/ p_right/) && (username == '' || username == lastusername) || username == lastusername) {
return;
}
if(username.match(/<|"/ig)) {
errormessage(id, __lang.profile_nickname_illegal);
return;
}
if(username){
var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
if(unlen < 3 || unlen > 30) {
errormessage(id, unlen < 3 ? __lang.username_character : __lang.username_character);
return;
}
var x = new Ajax();
jQuery('#suc_' + id).removeClass('p_right');
jQuery.getJSON('user.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkusername&username=' + encodeURI(username), function(json) {
if(json.error){
errormessage(id, json.error);
}else{
errormessage(id, 'succeed');
}
});
}
}
function checkPwdComplexity(firstObj, secondObj, modify) {
modifypwd = modify || false;
firstObj.onblur = function () {
if(firstObj.value == '') {
var pwmsg = !modifypwd ? __lang.register_password_tips : __lang.js_change_password;
if(pwlength > 0) {
pwmsg += ', '+__lang.register_password_length_tips1+pwlength+__lang.register_password_length_tips2;
}
if(!modifypwd) errormessage(firstObj.id, pwmsg);
}else{
errormessage(firstObj.id, !modifypwd ? 'succeed' : __lang.js_change_password);
}
checkpassword(firstObj.id, secondObj.id);
};
firstObj.onkeyup = function () {
if(pwlength == 0 || jQuery('#'+firstObj.id).value.length >= pwlength) {
var passlevels = new Array('',__lang.weak,__lang.center,__lang.strong);
var passlevel = checkstrongpw(firstObj.id);
errormessage(firstObj.id, '<span class="passlevel passlevel'+passlevel+'">'+__lang.intension+':'+passlevels[passlevel]+'</span>','passlevel');
}
};
secondObj.onblur = function () {
if(secondObj.value == '') {
if(!modifypwd) errormessage(secondObj.id, !modifypwd ?'succeed' : __lang.register_repassword_tips);
}
checkpassword(firstObj.id, secondObj.id);
};
}
function checkstrongpw(id) {
var passlevel = 0;
var el=document.getElementById(id);
var val=el.value;
if(val && val.match(/\d+/g)) {
passlevel ++;
}
if(val && val.match(/[a-z]+/ig)) {
passlevel ++;
}
if(val && val.match(/[^a-z0-9]+/ig)) {
passlevel ++;
}
return passlevel;
}
function checkpassword(id1, id2) {
if(!document.getElementById(id1).value && !document.getElementById(id2).value) {
//return;
}
if(pwlength > 0) {
if(document.getElementById(id1).value.length < pwlength) {
errormessage(id1, __lang.password_too_short+pwlength+__lang.register_password_length_tips2);
return;
}
}
if(strongpw) {
var strongpw_error = false, j = 0;
var strongpw_str = new Array();
for(var i in strongpw) {
if(strongpw[i] === 1 && !document.getElementById(id1).value.match(/\d+/g)) {
strongpw_error = true;
strongpw_str[j] = __lang.strongpw_1;
j++;
}
if(strongpw[i] === 2 && !document.getElementById(id1).value.match(/[a-z]+/g)) {
strongpw_error = true;
strongpw_str[j] = __lang.strongpw_2;
j++;
}
if(strongpw[i] === 3 && !document.getElementById(id1).value.match(/[A-Z]+/g)) {
strongpw_error = true;
strongpw_str[j] = __lang.strongpw_3;
j++;
}
if(strongpw[i] === 4 && !document.getElementById(id1).value.match(/[^A-Za-z0-9]+/g)) {
strongpw_error = true;
strongpw_str[j] = __lang.strongpw_4;
j++;
}
}
if(strongpw_error) {
errormessage(id1, __lang.password_weak+strongpw_str.join(''));
return;
}
}
errormessage(id2);
if(document.getElementById(id1).value !=document.getElementById(id2).value) {
errormessage(id2, __lang.profile_passwd_notmatch);
} else {
if(modifypwd) errormessage(id1, 'succeed' );
errormessage(id2, 'succeed' );
}
}
function jstree_search(val){
console.log(val);
if(val=='stop'){
jQuery('#jstree_search_input').val('');
jQuery('#searchval').val('');
jQuery('.classtree-search').slideUp(500);
jQuery("#classtree").jstree(true).search();
}else{
if(val==''){
jQuery('#jstree_search_input').val('');
jQuery('#searchval').val('');
jQuery('.classtree-search').slideUp(500);
}
jQuery("#classtree").jstree(true).search(val);
}
}
function jstree_create_organization(){
var inst = jQuery("#classtree").jstree(true);
jQuery.post(ajaxurl+'do=create',{'forgid':0,'t':new Date().getTime()},function(json){
if(!json || json.error){
showmessage(json.error,'danger',3000,1);
}else if(json.orgid>0){
var arr={"id":json.orgid,"text":json.orgname,"type":"organization","icon":'dzz/system/images/organization.png'}
inst.create_node(inst.get_node('#'), arr, "first", function (new_node) {
setTimeout(function () { inst.edit(new_node); },0);
});
}
},'json');
}
function jstree_create_dir(){
var inst = jQuery("#classtree").jstree(true),obj;
if(inst.get_selected(true).length>0){
obj=inst.get_selected(true);
obj=obj[0];
}else{
showmessage(__lang.please_select_one_organization_department,'danger',1000,1);
return;
}
if(obj.type=='user'){
showmessage(__lang.please_select_one_organization_department,'danger',1000,1);
return true;
}
if(inst.is_disabled(obj)){
return true;
}
var inst = jQuery("#classtree").jstree(true);
jQuery.post(ajaxurl+'do=create',{'forgid':obj.id,'t':new Date().getTime()},function(json){
if(!json || json.error){
showmessage(json.error,'danger',3000,1);
}else if(json.orgid>0){
var arr={"id":json.orgid,"text":json.orgname,"type":"organization","icon":(json.forgid>0)?'dzz/system/images/department.png':'dzz/system/images/organization.png'}
inst.create_node(obj, arr, "first", function (new_node) {
setTimeout(function () { inst.edit(new_node); },0);
});
}
},'json');
}
function jstree_create_user(flag){
var inst = jQuery("#classtree").jstree(true),obj;
if(inst.get_selected(true).length>0){
obj=inst.get_selected(true);
obj=obj[0];
}else{
if(flag) flag=0;
obj=inst.get_node('#');
}
if(obj.type=='user'){
obj=inst.get_node(obj.parent);
}
if(inst.is_disabled(obj)){
return true;
}
showDetail(0,'user',null,obj.id);
}
function showDetail(id,idtype,ajaxdo,orgid){
var hash=idtype+'_'+id;
var urladd=''
if(ajaxdo){
hash+='_'+ajaxdo;
urladd+='&do='+ajaxdo
}
if(orgid){
hash+='_'+orgid;
urladd+='&orgid='+orgid
}
currentHash=hash;
location.hash=hash;
//console..log(hash);
urladd+='&t='+new Date().getTime()
jQuery('#orguser_container').load(baseurl+'op=view&id='+id+'&idtype='+idtype+urladd,function(html){
if(checkAdminLogin(html)){
location.reload();
}
});
}
function open_node_dg(inst,node,arr){ //自动打开有权限的目录树
inst.open_node(node,function(node){
var i=jQuery.inArray(node.id,arr);
if(i<arr.length && i>-1 && document.getElementById(arr[i+1])) open_node_dg(inst,document.getElementById(arr[i+1]),arr);
else{
// inst.select_node(node);
}
});
}
function job_show_editor(jobid,orgid,obj){
var el=jQuery(obj).addClass('hide');
el.parent().find('.edit').removeClass('hide');
el.parent().find('input').focus();
jQuery(document).on('click.job_edit_'+jobid,function(event){
if(!jQuery(event.target).closest(el.parent()).length){
job_save(jobid,orgid);
jQuery(document).off('click.job_edit_'+jobid);
}
});
}
function job_save(jobid,orgid){
var el=jQuery('#job_'+jobid);
var oname=trim(el.find('.job-name').html());
var name=trim(el.find('.job-edit-control input').val());
if(oname==name){
el.find('.job-name').removeClass('hide');
el.find('.edit').addClass('hide');
return;
}
jQuery.post(ajaxurl+'do=jobedit',{'name':name,'jobid':jobid,'orgid':orgid,'t':new Date().getTime()},function(json){
if(json.error){
el.find('.job-name').html(oname).removeClass('hide');
el.find('.edit').addClass('hide');
el.find('.job-edit-control input').val(oname);
}else if(json.jobid>0){
el.find(' .job-name').html(json.name).removeClass('hide');
el.find('.edit').addClass('hide');
el.find('.job-edit-control input').val(json.name);
}
},'json');
}
function job_show_add_editor(orgid,obj){
var el=jQuery(obj);
el.addClass('hide');
el.parent().find('.new-job-control').removeClass('hide');
el.parent().find('.new-job-control input').focus();
jQuery(document).on('click.new-job-'+orgid,function(event){
if(!jQuery(event.target).closest(el.parent()).length){
job_cancel_add_editor(orgid);
jQuery(document).off('click.new-job-'+orgid);
}
});
}
function job_cancel_add_editor(orgid){
var el=jQuery('.jobs .new-job');
el.find('.new-job-control').addClass('hide');
el.find('a').removeClass('hide');
}
function job_del(jobid,orgid){
var el=jQuery('#job_'+jobid);
jQuery.post(ajaxurl+'do=jobdel',{'jobid':jobid,'orgid':orgid,'t':new Date().getTime()},function(json){
if(json.error){
showmessage(json.error,'danger',3000,1);
}else if(json.jobid>0){
el.remove();
}
},'json');
}
function job_add(orgid){
var newjob=jQuery('.jobs .new-job');
var name=newjob.find('.new-job-text').val();
if(name==''){
newtodo.find('.new-job-text').focus();
return;
}
jQuery.post(ajaxurl+'do=jobadd',{'name':name,'orgid':orgid,'t':new Date().getTime()},function(json){
if(json.jobid>0){
appendjob(json);
newjob.find('.new-job-text').val('').focus();
}else{
showmessage(json.error,'danger',3000,1);
}
},'json');
}
function appendjob(json){
var html='';
html+='<div id="job_'+json.jobid+'" orgid="'+json.orgid+'" class="job-item-edit pull-left">';
html+=' <button onclick="job_show_editor(\''+json.jobid+'\',\''+json.orgid+'\', this)" class="btn btn-outline-secondary job-name mr20">'+json.name+'</button>';
html+=' <div class="edit hide" style="min-width:250px">';
html+=' <div class="job-edit-control pull-left" >';
html+=' <input type="text" class="form-control" style="width:100px" value="'+json.name+'" onkeyup="if(event.keyCode==13){job_save(\''+json.name+'\',\''+json.orgid+'\')}">';
html+=' </div>';
html+=' <button onclick="job_save(\''+json.name+'\',\''+json.orgid+'\')" data-loading-text="'+__lang.save+'" class="btn btn-outline-primary job-save">'+__lang.save+'</button>';
html+=' <button class="btn btn-outline-primary todo-del" onclick="job_del(\''+json.name+'\',\''+json.orgid+'\')">'+__lang.delete+'</button>';
html+=' </div> ';
html+='</div>';
jQuery('.jobs .new-job').before(html);
}
function callback_moderators(ids,data,orgid){
console.log(ids);console.log(orgid);
//删除不在选择列表内的用户
jQuery('.moderators-container .user-item').each(function(){
var uid=jQuery(this).attr('uid');
if(jQuery.inArray(uid,ids)===-1){
jQuery(this).find('.delete').trigger('click');
}
});
for(var i=0;i<ids.length;i++){
moderator_add(orgid,ids[i]);
}
}
function moderator_add(orgid,uid){
if(jQuery('#moderators_container_'+orgid+' .user-item[uid='+uid+']').length){
jQuery('#moderators_container_'+orgid+' .user-item[uid='+uid+']').insertAfter(jQuery('#moderators_container_'+orgid+' .moderators-acceptor'));
jQuery('#moderators_container_'+orgid+' .moderators-acceptor').removeClass('hover');
return;
}
jQuery('#moderators_container_'+orgid+' .moderators-acceptor').removeClass('hover');
jQuery.post(ajaxurl+'do=moderator_add',{'orgid':orgid,'uid':uid,'t':new Date().getTime()},function(json){
if(json.error) showmessage(json.error,'danger',3000,1);
else{
appendModerator(json);
}
},'json');
}
function appendModerator(json){
var html='';
html+='<li class="user-item pull-left" uid="'+json.uid+'"> ';
html+=' <a href="javascrip:;" class="delete" onclick="moderator_del(\''+json.id+'\',\''+json.orgid+'\',this);return false"><i style="color:#d2322d;font-size:16px" class="glyphicon glyphicon-remove-sign"></i></a>';
html+=' <div class="avatar-cover"></div>';
html+=' <div class="user-item-avatar">';
html+=' <div class="avatar-face">';
html+=' '+json.avatar;
html+=' </div>';
html+=' </div>';
html+=' <p class="text-center" style="height:20px;margin:5px 0;line-height:25px;overflow:hidden;"> '+json.username+'</p>';
html+=' </li>';
jQuery('#moderators_container_'+json.orgid+' .moderators-acceptor').after(html);
var inst = jQuery("#classtree").jstree(true);
var node= inst.get_node('#'+json.orgid);
inst.refresh_node(node);
}
function moderator_del(id,orgid,obj){
jQuery.post(ajaxurl+'do=moderator_del',{'orgid':orgid,'id':id,'t':new Date().getTime()},function(json){
if(json.error) showmessage(json.error,'danger',3000,1);
else{
jQuery(obj).parent().remove();
}
},'json');
}
function folder_available(available,orgid){
jQuery.post(ajaxurl+'do=folder_available',{'orgid':orgid,'available':available,'t':new Date().getTime()},function(json){
if(json.error){
showmessage(json.error,'danger',3000,1);
}else{
if(available){
showmessage(__lang.share_enable_successful,'success',3000,1);
//jQuery('#indesk').show();
}else{
showmessage(__lang.share_close_successful,'success',3000,1);
//jQuery('#indesk').hide();
}
}
},'json');
}
function group_on(on,orgid){
jQuery.post(ajaxurl+'do=group_on',{'orgid':orgid,'available':on,'t':new Date().getTime()},function(json){
if(json.error){
showmessage(json.error,'danger',3000,1);
}else{
if(on){
showmessage(__lang.group_on_successful,'success',3000,1);
}else{
showmessage(__lang.group_close_successful,'success',3000,1);
}
}
},'json');
}
function folder_indesk(indesk,orgid){
jQuery.post(ajaxurl+'do=folder_indesk',{'orgid':orgid,'indesk':indesk,'t':new Date().getTime()},function(json){
if(json.error) showmessage(json.error,'danger',3000,1);
},'json');
}
function set_org_logo(orgid,aid){
jQuery.post(ajaxurl+'do=set_org_logo',{'orgid':orgid,'aid':aid},function(json){
if(json.error) showmessage(json.error,'danger',3000,1);
},'json');
}
/*function set_org_bgphoto(orgid,aid){
jQuery.post(ajaxurl+'&do=set_org_bgphoto',{'orgid':orgid,'aid':aid},function(json){
if(json.error) showmessage(json.error,'danger',3000,1);
},'json');
}*/
function set_org_orgname(orgid,obj){
var oldname=jQuery(obj).data('oldname');
console.log(oldname);
jQuery.post(ajaxurl+'do=set_org_orgname',{'orgid':orgid,'orgname':obj.value},function(json){
if(json.error){
obj.value=oldname;
showmessage(json.error,'danger',3000,1);
}else{
jQuery(obj).data('oldname',obj.value);
jQuery('#title_orgname').html(obj.value);
var node=jQuery("#classtree").jstree(true).get_node('#'+orgid);
jQuery("#classtree").jstree('refresh',node);
}
},'json');
}
function set_org_desc(orgid,desc){
jQuery.post(ajaxurl+'do=set_org_desc',{'orgid':orgid,'desc':desc},function(json){
if(json.error){
showmessage(json.error,'danger',3000,1);
}
},'json');
}
function folder_maxspacesize(obj,orgid){
jQuery.post(ajaxurl+'do=folder_maxspacesize',{'orgid':orgid,'maxspacesize':obj.value,'t':new Date().getTime()},function(json){
if(json.error){
obj.value=json.val;
showmessage(json.error,'danger',3000,1);
}else{
jQuery('#'+orgid+' a.jstree-clicked').trigger('click');
showmessage('空间大小设置成功','success',3000,1);
}
},'json');
}

Binary file not shown.

View File

@@ -1,285 +0,0 @@
<div class="main-header clearfix">
<ul class="nav nav-pills">
<li class="nav-item"><a class="nav-link active" href="{MOD_URL}&op=edituser&do=add&orgid=$orgid" onclick="jQuery('#orguser_container').load(this.href);return false;">{lang add_user}</a> </li>
</ul>
</div>
<div class="main-content">
<div id="return_adduser" style="display:none"></div>
<form id="accountform" name="accountform" class="lyear-search-right" action="{MOD_URL}&op=edituser" method="post" onsubmit="account_submit();return false">
<input type="hidden" name="accountadd" value="true" />
<input type="hidden" name="uid" value="$uid" />
<input type="hidden" name="handlekey" value="adduser" />
<input type="hidden" name="formhash" value="{FORMHASH}" />
<div class="row mb-3">
<label for="email" class="col-sm-2">{lang login_email}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="email" name="email" autocomplete="off" value="$user[email]" onblur="checkemail(this.id);">
<p id="emailmore" style="height:1px;margin:0;">&nbsp;</p>
<span id="chk_email" class="help-block">
<span id="suc_email"></span><kbd class="help-msg"></kbd>
</span>
<small class="help-block">{lang adduser_login_email_text}</small>
</div>
</div>
<div class="row mb-3">
<label for="username" class="col-sm-2">{lang username}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="username" name="username" placeholder="{lang login_username_placeholder}" autocomplete="off" value="$user[username]" onblur="checknick(this.id);">
<span id="chk_username" class="help-block">
<span id="suc_username"></span><kbd class="help-msg"></kbd>
</span>
<small class="help-block">{lang login_username_tips}</small>
</div>
</div>
<div class="row mb-3">
<label for="phone" class="col-sm-2">{lang phone_number}</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="{lang weixin_phone_number}" id="phone" name="phone" autocomplete="off" value="$user[phone]">
<small id="chk_phone" class="help-block">{lang adduser_phone_number_text}</small>
</div>
</div>
<div class="row mb-3">
<label for="weixinid" class="col-sm-2">{lang weixin}</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="{lang user_weixin}" id="weixinid" name="weixinid" autocomplete="off" value="$user[weixinid]">
<small id="chk_weixinid" class="help-block">{lang edituser_weixin_text}</small>
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-sm-2">{lang user_login_password}</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="password" autocomplete="off" id="password" placeholder="{lang register_password_tips}">
<span id="chk_password" class="help-block">
<span id="suc_password"></span>
<kbd id="chk_password" class="help-msg"></kbd>
</span>
</div>
</div>
<div class="row mb-3">
<label for="password2" class="col-sm-2">{lang new_password_confirm}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="password2" name="password2" autocomplete="off" placeholder="{lang register_repassword_tips}">
<span id="chk_password2" class="help-block">
<span id="suc_password2"></span>
<kbd id="chk_password2" class="help-msg"></kbd>
</span>
</div>
</div>
<div class="row mb-3">
<label for="" class="col-sm-2"></label>
<div class="col-sm-10">
<button class="btn btn-primary btn-w-md" type="button" onclick="randomPass()">{lang random_password}</button>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="status">{lang disable_user}</label>
<div class="col-sm-10">
<input type="checkbox" class="form-check-input" name="status" id="status" <!--{if $_G['adminid']!=1 || !$perm}-->disabled="disabled"<!--{/if}--> value="1" <!--{if $user[status]}-->checked<!--{/if}-->>
<small class="help-block">{lang adduser_disable_user_text}</small>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="groupid">{lang usergroup}</label>
<div class="col-sm-10">
<select class="form-select" name="groupid" id="groupid"<!--{if $_G[ 'adminid']!=1}--> disabled="disabled"<!--{/if}-->>
<!--{loop $_G['cache']['usergroups'] $groupid $group}-->
<!--{{if !in_array($groupid ,array('2','3','4','5','6','7','8'))}-->
<option <!--{if $groupid==9}-->selected="selected"<!--{/if}-->value="$groupid">$group['grouptitle']</option>
<!--{/if}-->
<!--{/loop}-->
</select>
<small class="help-block">{lang adduser_usergroup_text}</small>
</div>
</div>
<div class="row mb-3">
<label for="depart" class="col-sm-2">{lang department_position}&nbsp;[&nbsp;<a href="javascript:;" class="glyphicon glyphicon-plus" onclick="addorgsel()" title="{lang add_a_item}"></a>&nbsp;]</label>
<div class="col-sm-10">
<div class="input-group mb-3">
<div id="selorg_container">
<!--{if $org}-->
<ul class="btn-group">
<li class="dropdown org">
<input id="sel_orgid_{$org[orgid]}" type="hidden" name="orgids[]" value="$org[orgid]" onchange="selDepart(this)" />
<button type="button" id="orgid_{$org[orgid]}_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">$org[depart] </button>
<div id="orgid_$orgid_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="orgid_{$org[orgid]}_Menu">
<iframe name="orgid_{$org[orgid]}_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=orgid_{$org[orgid]}&nouser=1&moderator=1&stype=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true"></iframe>
</div>
</li>
<li class="dropdown job">
<input type="hidden" name="jobids[]" value="0" />
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _jobid="0" class="dropdown-toggle btn btn-outline-secondary jobid"><span>{lang none}</span></a>
<ul aria-labelledby="drop-depart" role="menu" class="dropdown-menu">
<li role="presentation">
<a href="javascript:;" tabindex="-1" role="menuitem" _jobid="0" onclick="selJob(this)">{lang none}</a>
</li>
<!--{loop $org[jobs] $value1}-->
<li role="presentation">
<a href="javascript:;" tabindex="-1" role="menuitem" _jobid="$value1['jobid']" onclick="selJob(this)">$value1[name]</a>
</li>
<!--{/loop}-->
</ul>
</li>
<!--{if $value['ismoderator']}-->
<li>
<a href="javascript:;" onclick="delDepart(this)" ttitle="{lang delete}"><i class="glyphicon glyphicon-remove"></i></a>
</li>
<!--{/if}-->
</ul>
<!--{/if}-->
<ul id="nav" class="btn-group">
<li class="dropdown org">
<input id="sel_orgid_tpml" type="hidden" name="orgids[]" value="0" onchange="selDepart(this)" />
<button type="button" id="orgid_tpml_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">{lang please_select_a_organization_or_department} </button>
<div id="orgid_tpml_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="orgid_tpml_Menu">
<iframe name="orgid_tpml_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=orgid_tpml&nouser=1&moderator=1&stype=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true"></iframe>
</div>
</li>
<li class="dropdown job">
<input type="hidden" name="jobids[]" value="0" />
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _job="0" class="dropdown-toggle btn btn-outline-secondary jobid"><span>{lang none}</span></a>
<ul aria-labelledby="drop-job" role="menu" class="dropdown-menu"></ul>
</li>
<li>
<a href="javascript:;" onclick="delDepart(this)" ttitle="{lang delete}"><i class="glyphicon glyphicon-remove"></i></a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="row mb-3">
<label for="" class="col-sm-2">{lang supervisor_position}</label>
<div class="col-sm-10">
<div class="input-group mb-3">
<div id="selorg_container" class="col-sm-10">
<div id="upjob">
<ul class="btn-group">
<li class="dropdown org">
<input id="sel_uporgid" type="hidden" name="uporgid" value="0" onchange="selDepart(this)" />
<button type="button" id="uporgid_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">{lang please_select_a_organization_or_department}</button>
<div id="uporgid_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="uporgid_Menu">
<iframe name="uporgid_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=uporgid&nouser=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true"></iframe>
</div>
</li>
<li class="dropdown job">
<input type="hidden" name="upjobid" value="0">
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _jobid="0" class="dropdown-toggle btn btn-outline-secondary jobid"><span>{lang none}</span></a>
<ul aria-labelledby="drop-job" role="menu" class="dropdown-menu">
<li role="presentation">
<a href="javascript:;" tabindex="-1" role="menuitem" _jobid="0" onclick="selJob(this)">{lang none}</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" name="sendmail" id="sendmail" value="1" checked="checked">
<label class="form-check-label" for="sendmail">{lang send_password_user_mailbox}</label>
</div>
<dl>
<input type="button" class="btn btn-primary" value="{lang confirm_add}" onclick="account_submit()">
</dl>
</form>
</div>
<script type="text/javascript" reload="1">
jQuery(document).ready(function (e) {
jQuery('select').lyearSelect();
});
var orgsel_html = jQuery('#nav').html();
var lastusername = '',
lastpassword = '',
lastemail = '',
lastinvitecode = '',
stmp = new Array(),
modifypwd = false;
var pwlength = 0;
var strongpw = new Array();
var ignoreEmail = false;
checkPwdComplexity(document.getElementById('password'),document.getElementById('password2'), false);
function account_submit() {
//判断用户名
if(jQuery('#email').val() == '') {
jQuery('#email').focus();
showmessage('{lang login_email_required}', 'danger', 1000, 1);
return false;
}
if(jQuery('#username').val() == '') {
jQuery('#username').focus();
showmessage('{lang name_will}', 'danger', 1000, 1);
return false;
}
if(jQuery('#password').val() == '') {
jQuery('#password').focus();
showmessage('{lang none_write_login_password}', 'danger', 1000, 1);
return false;
}
if(jQuery('#password2').val() == '') {
showmessage('{lang none_write_affirm_password}', 'danger', 1000, 1);
jQuery('#password2').focus();
return false;
}
if(jQuery('#password').val() != jQuery('#password2').val()) {
showmessage('{lang profile_passwd_notmatch}', 'danger', 1000, 1);
jQuery('#password').focus();
return false;
}
var flag = 0;
jQuery('#accountform kbd').each(function(){
var self=jQuery(this);
if(self.hasClass('help-msg') && self.html() != '') {
flag=1;
return false;
}
});
if(flag) return false;
//判定微信号和手机
var phone = jQuery('#phone').val();
if(phone != '' && phone.match(/^\d+$/) == null) {
jQuery('#phone').focus();
showmessage('{lang phone_number_illegal}', 'danger', 1000, 1);
return false;
}
var weixinid = jQuery('#weixinid').val();
if(weixinid != '' && weixinid.match(/^[a-zA-Z\d_]{5,}$/) == null) {
jQuery('#weixinid').focus();
showmessage('{lang weixin_illegal}', 'danger', 1000, 1);
return false;
}
ajaxpost('accountform', 'ajaxwaitid', 'return_adduser');
return false;
}
function succeedhandle_adduser(url, message, values) {
var uid = values['uid'];
var orgids = values['orgids'];
showDetail(uid, 'user');
var inst = jQuery("#classtree").jstree(true);
inst.refresh(true);
showmessage(message, 'success', 3000, 1);
};
function errorhandle_adduser(msg, values) {
showmessage(msg, 'danger', 3000, 1);
}
jQuery(document).ready(function(e) {
jQuery('.dropdown-menu li.disabled a').on('click', function() {
return false;
});
});
function randomPass() {
var pass = (Math.round(Math.random() * 100000000));
jQuery('#password').val(pass).trigger('blur');
jQuery('#password2').val(pass).trigger('blur');
}
</script>

View File

@@ -1,281 +0,0 @@
<style>
.progress-relative {
position: relative;
height: 30px;
line-height: 22px;
background-color: #e6e6e6;
overflow:visible;
padding:4px;
}
.progress-relative .progress-cover {
position: absolute;
text-align: center;
width: 100%;
font-size: 75%;
color: #FFF;
text-shadow: 1px 1px 1px #000;
font-weight: 700;
}
</style>
<div class="main-header clearfix">
<ul class="nav nav-pills">
<strong class="pull-left" id="title_orgname">$org['orgname']</strong>
<!--{if $_G['adminid']==1}-->
<a href="{MOD_URL}&op=export&orgid=$orgid" class="btn btn-outline-primary pull-right" title="{lang export_excl}" target="_blank">{lang export_user}</a>
<!--{/if}-->
</ul>
</div>
<div class="main-content">
<div class="col-md-12">
<div class="row mb-3">
<label class="col-sm-2" for="$key">{lang orgname}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="orgname" data-oldname="$org[orgname]" value="$org[orgname]" placeholder="{lang orgname_placeholder}" onchange="set_org_orgname('$org[orgid]',this)">
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="$key">Logo</label>
<div class="col-sm-10">
<ul class="group-head">
<li class="head-portrait">$org['avatar']</li>
<li class="head-file">
<button type="button" class="btn btn-outline-primary" style="margin-top: 5px;cursor: pointer;"><input type="checkbox" class="headinput-checkbox" name="arr[aid]" value="$value[aid]" checked="checked" onchange="set_org_logo('$org[orgid]',this.value)">重置</button>
</li>
<li class="head-file">
<button type="button" class="btn btn-outline-primary" style="margin-top: 5px;cursor: pointer;"><input type="file" style=" cursor: pointer;" onclick="upload_bgphoto(this,true)"> {lang change}</button>
</li>
</ul>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="$key">{lang org_description}</label>
<div class="col-sm-10">
<textarea class="form-control" name="arr[desc]" rows="1" placeholder="{lang org_description_placeholder}" onchange="set_org_desc('$org[orgid]',this.value)">$org[desc]</textarea>
</div>
</div>
<!--{if $folder_available}-->
<div class="row mb-3">
<label for="userspace" class="col-sm-2">{lang shared_directory_set}</label>
<div class="col-sm-10">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="folder_available_1" name="fid" value="1" <!--{if $org[diron]>0}-->checked="checked"<!--{/if}--> onclick="folder_available(1,'$orgid');" />
<label class="form-check-label" for="inlineRadio1">{lang enable}</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="folder_available_0" name="fid" value="0" <!--{if $org[diron]<1}-->checked="checked"<!--{/if}--> onclick="folder_available(0,'$orgid');" />
<label class="form-check-label" for="inlineRadio2">{lang no_enable}</label>
</div>
<!--{if $org['forgid']<1}-->
<small class="help-block">{lang detail_org_explorerapp_enable}</small>
<!--{else}-->
<small class="help-block">{lang detail_org_enable}</small>
<!--{/if}-->
</div>
</div>
<!--{/if}-->
<!--{if $_G['adminid']==1 || $topmoderator}-->
<div class="row mb-3">
<label for="userspace" class="col-sm-2">{lang org_space_assign}</label>
<div class="col-sm-10">
<div class="input-group mb-3">
<input type="text" class="form-control" id="maxspacesize" name="maxspacesize" value="$org[maxspacesize]" onchange="folder_maxspacesize(this,'$orgid')">
<span class="input-group-text" id="basic-addon2">M</span>
</div>
<ul class="help-block">
<li>{lang org_space_assign_tip}:<span class="text-danger">{eval echo ($allowallotspace == 0) ? lang('no_limit'):formatsize($allowallotspace);}</span>
</li>{lang org_space_assign_tips}
</ul>
</div>
</div>
<!--{/if}-->
<div class="row mb-3">
<label class="col-sm-2" for="$key"><!--{if $org[forgid]>0}-->{lang space_use_department}<!--{else}-->{lang space_use_org}<!--{/if}--></label>
<div class="col-sm-10">
<div class="progress">
<div class="progress-bar" role="progressbar" style="width: {eval echo round(100*($org[usesize]/($org[maxspacesize]?$org[maxspacesize]*1024*1024:($org[usesize]+1024*1024*1024))))}%;" aria-valuenow="{eval echo round(100*($org[usesize]/($org[maxspacesize]?$org[maxspacesize]*1024*1024:($org[usesize]+1024*1024*1024))))}" aria-valuemin="0" aria-valuemax="100">{eval echo formatsize($org[usesize])}/{eval if($org[maxallotspacesize] == -1) echo formatsize($org[usesize]);else echo ($org[maxallotspacesize] == 0)?lang('no_limit'):formatsize($org[maxallotspacesize])}
</div>
</div>
<div class="progress-cover"> {eval echo formatsize($org[usesize])}/{eval if($org[maxallotspacesize] == -1) echo formatsize($org[usesize]);else echo ($org[maxallotspacesize] == 0)?lang('no_limit'):formatsize($org[maxallotspacesize])}</div>
<ul class="help-block">
{lang space_use_org_tips}
</ul>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="$key">{lang position_management}</label>
<div class="col-sm-10 clearfix jobs">
<!--{loop $jobs $value}-->
<div id="job_$value[jobid]" orgid="$value['orgid']" class="job-item-edit pull-left mb10">
<button onclick="job_show_editor('$value[jobid]','$value['orgid']', this)" class="btn btn-outline-secondary job-name mr20">$value[name]</button>
<div class="edit hide" style="min-width:250px">
<div class="input-group">
<div class="job-edit-control pull-left">
<input type="text" class="form-control" value="$value[name]" onkeyup="if(event.keyCode==13){job_save('$value[jobid]','$value['orgid']');return false;}">
</div>
<button class="btn btn-outline-secondary" onclick="job_save('$value[jobid]','$value['orgid']')" data-loading-text="{lang save}" type="button">{lang save}</button>
<button class="btn btn-outline-secondary" onclick="job_del('$value[jobid]','$value['orgid']')" type="button">{lang delete} </button>
</div>
</div>
</div>
<!--{/loop}-->
<div class="new-job pull-left" style="padding:0 10px;">
<a href="javascript:;" onclick="job_show_add_editor('$orgid',this)" class="btn btn-outline-secondary "> {lang add_position} </a>
<div class="new-job-control hide input-group" style="min-width:250px">
<div class="pull-left">
<input type="text" class="new-job-text form-control" onkeyup="if(event.keyCode==13){job_add('$orgid');return false;}" placeholder="{lang position_name}">
</div>
<button class="btn btn-outline-secondary" data-loading-text="{lang add}" onclick="job_add('$orgid')" type="button">{lang add} </button>
<button class="btn btn-outline-secondary" onclick="job_cancel_add_editor('$orgid')" type="button">{lang cancel}</button>
</div>
</div>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="$key"><!--{if $org['forgid']<1}-->{lang organization}<!--{else}-->{lang department}<!--{/if}--> {lang administrator}</label>
<div class="col-sm-10">
<ul id="moderators_container_$orgid" class="moderators-container list-unstyled clearfix">
<!--{if $pmoderator}-->
<li class="moderators-acceptor pull-left" orgid="$orgid" style="">
<div class="avatar-cover"></div>
<div class="user-item-avatar">
<div class="avatar-face">
<img src="avatar.php?uid=0&size=middle">
</div>
</div>
</li>
<!--{/if}-->
<!--{loop $moderators $value}-->
<li class="user-item pull-left" uid="$value[uid]">
<!--{if $pmoderator}-->
<div class="delete" onclick="moderator_del('$value[id]','$orgid',this);"><i style="color:#d2322d;font-size:16px" class="glyphicon glyphicon-remove-sign">&nbsp;</i></div>
<!--{/if}-->
<div class="avatar-cover"></div>
<div class="user-item-avatar">
<div class="avatar-face">
{eval echo avatar_block($value[uid]);}
</div>
</div>
<p class="text-center" style="height:20px;margin:5px 0;line-height:25px;overflow:hidden;"> $value[username]</p>
</li>
<!--{/loop}-->
</ul>
<ul class="help-block " style="line-height:2">
{lang detail_org_administrator}
</ul>
</div>
</div>
</div>
</div>
<script type="text/javascript">
jQuery(document).ready(function(e) {
jQuery('textarea').TextAreaExpander(33);
});
function set_submit(form) {
jQuery.post('$_G[siteurl]'+'{MOD_URL}&op=ajax&do=orginfo',jQuery(form).serialize(), function (data) {
if (data['success']) {
showmessage('{lang org_update_success}','success',3000,1);
setTimeout(location.reload(),30000);
}else if(data['error']){
showmessage(data['error'],'danger',3000,1);
}
},'json');
return false;
}
jQuery(document).on('click','.moderators-acceptor',function(){
var ids=[];
jQuery('.moderators-container .user-item').each(function(){
ids.push(jQuery(this).attr('uid'));
});
showWindow('moderators','index.php?mod=system&op=selorguser&stype=2&multiple=1&callback=callback_moderators&token=$orgid&ids='+ids.join(','),'get',0)
});
jQuery(document).on('click','.headinput-checkbox',function(){
if(jQuery(this).prop("checked")){
jQuery(this).closest('.head-portrait').siblings('.head-portrait').find('.headinput-checkbox').prop('checked',false).parents('.head-checkbox').removeClass('hover');
jQuery(this).parents('.head-portrait').find('.head-checkbox').addClass('hover');
}else{
jQuery(this).parents('.head-portrait').find('.head-checkbox').removeClass('hover');
}
});
function upload_bgphoto(obj,fact) {
'use strict';
jQuery(obj).fileupload({
url: '{MOD_URL}&op=ajax&do=upload',
dataType: 'json',
autoUpload: true,
maxFileSize: 2000000,// 2 MB
maxChunkSize: 2000000,//2M
acceptFileTypes: new RegExp("\.([jpe?g|gif|png])$", 'i'),
sequentialUploads: true,
add: function (e, data) {
data.context = jQuery('<div id="main"></div>');
if (jQuery('#main div:first').length > 0) jQuery('#main div:first').before(data.context);
else {
jQuery('#main').append(data.context);
}
data.process().done(function () {
data.submit();
});
},
progress: function (e, data) {
var index = 0; //data.index,
var node = jQuery(data.context.children()[index]);
var progress = parseInt(data.loaded / data.total * 100, 10);
node.find('.progress-bar').css(
'width',
progress + '%'
);
},
done: function (e, data) {
jQuery.each(data.result.files, function (index, file) {
if (file.error) {
data.context.find('.progress').replaceWith('<span class="text-danger">' + file.error + '</span>');
} else {
if(fact){
var imgsexists = false;
jQuery('.headinput-checkbox').each(function(){
var oldaid = jQuery(this).val();
if(oldaid == file.data.aid){
jQuery(this).prop('checked',true);
imgsexists = true;
showmessage('{lang org_img_uploaded_tip}','success',3000,1);
return false;
}
})
if(!imgsexists){
/*jQuery.post('admin.php?mod=orguser&op=ajax&do=getdefaultpic',{aid:file.data.aid},function(data){
if(data['success']){
//jQuery('.head-checkbox').removeClass('hover').find('.headinput-checkbox').prop('checked',false);*/
var html ='<li class="head-portrait">'+'<img src="'+file.data.img+'"><div class="head-checkbox hover">'+
'<div class="checkbox-custom"> <input type="checkbox" class="headinput-checkbox" name="arr[aid]" value="'+file.data.aid+'" checked="checked" onchange="set_org_logo(\'$org[orgid]\',this.value)" />'+
' </div> </div> ';
jQuery('.head-portrait').replaceWith(html);
set_org_logo('$orgid',file.data.aid);
/* }
},'json')*/
}
}else{
data.context.data('aid', file.data.aid).find('img').attr('src', file.data.img).end().find('.progress-container').hide();
var html = '<div class="col-sm-7 setting-img"><img class="img-rounded" src="'+file.data.img+'"><p class="upload-click">{lang clicktoupload}</p> <input type="file" id="exampleInputFile" onclick="upload_bgphoto(this)" name="files[]"></div>';
set_org_bgphoto('$org[orgid]',file.data.aid);
jQuery('.setting-img').replaceWith(html);
}
}
});
}
})
};
</script>

View File

@@ -1,301 +0,0 @@
<div class="main-header clearfix">
<ul class="nav nav-pills">
<strong class="pull-left">$user[username]</strong>
<li class="nav-item">
<a class="nav-link active" href="{MOD_URL}&op=edituser&uid=$user[uid]#user_{$user[uid]}_" onclick="jQuery('#orguser_container').load(this.href);return false;">{lang basic_message}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{MOD_URL}&op=edituser&do=profile&uid=$user[uid]#user_{$user[uid]}_profile" onclick="jQuery('#orguser_container').load(this.href);return false;">{lang details_information}</a>
</li>
</ul>
</div>
<div class="main-content">
<div id="return_edituser" style="display:none"></div>
<form id="accountform" name="accountform" class="lyear-search-right" action="{MOD_URL}&op=edituser" method="post" onsubmit="account_submit();return false">
<input type="hidden" name="accountedit" value="true" />
<input type="hidden" name="uid" value="$uid" />
<input type="hidden" name="handlekey" value="edituser" />
<input type="hidden" name="formhash" value="{FORMHASH}" />
<div class="row mb-3">
<label for="email" class="col-sm-2">{lang login_email}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="email" name="email" autocomplete="off" value="$user[email]" onblur="checkemail(this.id);" <!--{if !$perm}-->disabled="disabled"<!--{/if}-->>
<p id="emailmore" style="height:1px;margin:0;">&nbsp;</p>
<span id="chk_email" class="help-block">
<span id="suc_email"></span><kbd class="help-msg"></kbd>
</span>
<small class="help-block">{lang required_used_login_system}</small>
</div>
</div>
<div class="row mb-3">
<label for="username" class="col-sm-2">{lang username}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="username" name="username" placeholder="{lang login_username_placeholder}" autocomplete="off" value="$user[username]" onblur="checknick(this.id);" <!--{if !$perm}-->disabled="disabled"<!--{/if}-->>
<span id="chk_username" class="help-block">
<span id="suc_username"></span><kbd class="help-msg"></kbd>
</span>
<small class="help-block">{lang login_username_tips}</small>
</div>
</div>
<!--{if $user[regip]}-->
<div class="row mb-3">
<label for="regdate" class="col-sm-2">{lang registration_time}</label>
<div class="col-sm-10">
<p style="margin: 0"><strong><code><!--{eval echo dgmdate($user[regdate])}--></code></strong></p>
</div>
</div>
<div class="row mb-3">
<label for="regdate" class="col-sm-2">{lang register}IP</label>
<div class="col-sm-10">
<p style="margin: 0"><strong><code>$user[regip]</code></strong></p>
</div>
</div>
<!--{else}-->
<div class="row mb-3">
<label for="regdate" class="col-sm-2">{lang add_time}</label>
<div class="col-sm-10">
<p style="margin: 0"><strong><code><!--{eval echo dgmdate($user[regdate])}--></code></strong></p>
</div>
</div>
<!--{/if}-->
<div class="row mb-3">
<label for="phone" class="col-sm-2">{lang phone_number}</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="{lang weixin_phone_number}" id="phone" name="phone" autocomplete="off" value="$user[phone]" <!--{if !$perm}-->disabled="disabled"<!--{/if}-->>
<small id="chk_phone" class="help-block">{lang adduser_phone_number_text}</small>
</div>
</div>
<div class="row mb-3">
<label for="weixinid" class="col-sm-2">{lang weixin}</label>
<div class="col-sm-10">
<input type="text" class="form-control" placeholder="{lang user_weixin}" id="weixinid" name="weixinid" autocomplete="off" value="$user[weixinid]" <!--{if !$perm}-->disabled="disabled"<!--{/if}-->>
<small id="chk_weixinid" class="help-block">{lang edituser_weixin_text}</small>
</div>
</div>
<div class="row mb-3">
<label for="password" class="col-sm-2">{lang user_login_password}</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="password" autocomplete="off" id="password" placeholder="{lang space_not_change_password}" <!--{if !$perm}-->disabled="disabled"<!--{/if}-->>
<span id="chk_password" class="help-block">
<span id="suc_password"></span>
<kbd id="chk_password" class="help-msg"></kbd>
</span>
</div>
</div>
<div class="row mb-3">
<label for="password2" class="col-sm-2">{lang new_password_confirm}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="password2" name="password2" autocomplete="off" placeholder="{lang space_not_change_password}" <!--{if !$perm}-->disabled="disabled"<!--{/if}-->>
<span id="chk_password2" class="help-block">
<span id="suc_password2"></span>
<kbd id="chk_password2" class="help-msg"></kbd>
</span>
</div>
</div>
<div class="row mb-3">
<label for="userspace" class="col-sm-2">{lang user_set_space}</label>
<div class="col-sm-10">
<div class="input-group mb-3">
<input type="text" class="form-control" id="userspace" <!--{if $_G[ 'adminid']!=1 || !$perm}-->disabled="disabled"<!--{/if}-->name="userspace" value="$userfield[userspace]" autocomplete="off">
<span class="input-group-text">M</span>
</div>
<ul class="help-block">
<li>{lang user_allocable_space}:<span class="text-danger">{eval echo ($allowallotspace == 0) ? '{lang no_limit}':formatsize($currentuserAllotspace);}</li>
<li>{lang user_set_space_text}</li>
</ul>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="status">{lang disable_user}</label>
<div class="col-sm-10">
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" name="status" id="status" value="1" <!--{if $user[status]}-->checked<!--{/if}--> <!--{if $_G['adminid']!=1 || !$perm}-->disabled="disabled"<!--{/if}-->>
<label class="help-block">{lang adduser_disable_user_text}</label>
</div>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2" for="groupid">{lang usergroup}</label>
<div class="col-sm-10">
<select class="form-select" name="groupid" id="groupid" <!--{if $_G[ 'adminid']!=1}--> disabled="disabled"<!--{/if}-->>
<!--{loop $_G['cache']['usergroups'] $groupid $group}-->
<!--{{if !in_array($groupid ,array('2','3','4','5','6','7','8'))}-->
<option<!--{if $user[ 'groupid']==$groupid}--> selected="selected"<!--{/if}--> value="$groupid">$group['grouptitle']</option>
<!--{/if}-->
<!--{/loop}-->
</select>
<small class="help-block">{lang adduser_usergroup_text}</small>
</div>
</div>
<div class="row mb-3">
<label for="depart" class="col-sm-2">{lang department_position}&nbsp;[&nbsp;<a href="javascript:;" class="glyphicon glyphicon-plus" onclick="addorgsel()" title="{lang add_a_item}"></a>&nbsp;]</label>
<div class="col-sm-10">
<div id="selorg_container">
<!--{loop $data_depart $orgid $value}-->
<ul class="btn-group">
<li class="dropdown org">
<input id="sel_orgid_{$orgid}" type="hidden" name="orgids[]" value="$orgid" onchange="selDepart(this)" />
<button type="button" id="orgid_{$orgid}_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" <!--{if !$value[ 'ismoderator']}-->disabled<!--{/if}-->> $value['depart'] </button>
<div id="orgid_{$orgid}_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="orgid_{$orgid}_Menu">
<iframe name="orgid_{$orgid}_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=orgid_{$orgid}&nouser=1&moderator=1&stype=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true"></iframe>
</div>
</li>
<li class="dropdown job">
<input type="hidden" name="jobids[]" value="$value[jobid]" />
<!--{if $value[jobname]}-->
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _jobid="$value[jobid]" class="dropdown-toggle btn btn-outline-secondary jobid" <!--{if !$value[ 'ismoderator']}-->disabled<!--{/if}-->><span>$value[jobname]</span></a>
<!--{else}-->
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _jobid="0" class="dropdown-toggle btn btn-outline-secondary jobid"><span>{lang none}</span></a>
<!--{/if}-->
<ul aria-labelledby="drop-depart" role="menu" class="dropdown-menu">
<li role="presentation">
<a href="javascript:;" tabindex="-1" role="menuitem" _jobid="0" onclick="selJob(this)">{lang none}</a>
</li>
<!--{loop $value[jobs] $value1}-->
<li role="presentation">
<a href="javascript:;" tabindex="-1" role="menuitem" _jobid="$value1['jobid']" onclick="selJob(this)">$value1[name]</a>
</li>
<!--{/loop}-->
</ul>
</li>
<!--{if $value['ismoderator']}-->
<li>
<a href="javascript:;" onclick="delDepart(this)" ttitle="{lang delete}"><i class="glyphicon glyphicon-remove"></i></a>
</li>
<!--{/if}-->
</ul>
<!--{/loop}-->
<ul id="nav" class="btn-group">
<li class="dropdown org">
<input id="sel_orgid_tpml" type="hidden" name="orgids[]" value="0" onchange="selDepart(this)" />
<button type="button" id="orgid_tpml_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">{lang please_select_a_organization_or_department} </button>
<div id="orgid_tpml_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="orgid_tpml_Menu">
<iframe name="orgid_tpml_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=orgid_tpml&nouser=1&moderator=1&stype=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true"></iframe>
</div>
</li>
<li class="dropdown job">
<input type="hidden" name="jobids[]" value="0" />
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _job="0" class="dropdown-toggle btn btn-outline-secondary jobid"><span>{lang none}</span></a>
<ul aria-labelledby="drop-job" role="menu" class="dropdown-menu"></ul>
</li>
<li>
<a href="javascript:;" onclick="delDepart(this)" ttitle="{lang delete}"><i class="glyphicon glyphicon-remove"></i></a>
</li>
</ul>
</div>
</div>
</div>
<div class="row mb-3">
<label for="" class="col-sm-2">{lang supervisor_position}</label>
<div class="col-sm-10">
<div id="selorg_container" class="col-sm-10">
<div id="upjob">
<ul class="btn-group">
<li class="dropdown org">
<input id="sel_uporgid" type="hidden" name="uporgid" value="$upjob[orgid]" onchange="selDepart(this)" />
<button type="button" id="uporgid_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">$upjob[depart] </button>
<div id="uporgid_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="uporgid_Menu">
<iframe name="uporgid_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=uporgid&nouser=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true"></iframe>
</div>
</li>
<li class="dropdown job">
<input type="hidden" name="upjobid" value="$upjob[jobid]">
<!--{if $upjob}-->
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _jobid="$upjob[jobid]" class="dropdown-toggle btn btn-outline-secondary jobid"><span>$upjob[name]</span></a>
<!--{else}-->
<a href="javascript:;" data-bs-toggle="dropdown" role="button" _jobid="0" class="dropdown-toggle btn btn-outline-secondary jobid"><span>{lang none}</span></a>
<!--{/if}-->
<ul aria-labelledby="drop-job" role="menu" class="dropdown-menu">
<li role="presentation">
<a href="javascript:;" tabindex="-1" role="menuitem" _jobid="0" onclick="selJob(this)">{lang none}</a>
</li>
<!--{loop $upjob[jobs] $value}-->
<li role="presentation">
<a href="javascript:;" tabindex="-1" role="menuitem" _jobid="$value['jobid']" onclick="selJob(this)">$value[name]</a>
</li>
<!--{/loop}-->
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<dl>
<input type="button" class="btn btn-primary" value="{lang save_changes}" onclick="account_submit()">
</dl>
</form>
</div>
<script type="text/javascript" reload="1">
location.hash = '#user_{$user[uid]}';
var orgsel_html = jQuery('#nav').html();
var lastusername = '{$user[username]}',
lastpassword = '',
lastemail = '{eval echo strtolower($user[email])}',
lastinvitecode = '',
stmp = new Array(),
modifypwd = true;
var pwlength = 0;
var strongpw = new Array();
var ignoreEmail = false;
checkPwdComplexity(document.getElementById('password'), document.getElementById('password2'), 1);
function account_submit() {
//判断用户名
if(jQuery('#username').val() == '') {
jQuery('#username').focus();
showmessage('{lang name_will}', 'danger', 1000, 1);
return false;
}
if((jQuery('#password').val() != '' || jQuery('#password2').val() != '') && jQuery('#password').val() != jQuery('#password2').val()){
jQuery('#password').focus();
return false;
}
var flag = 0;
jQuery('#accountform kbd').each(function(){
var self=jQuery(this);
if(self.hasClass('help-msg') && self.html() != '') {
flag=1;
return false;
}
});
if(flag) return false;
//判定微信号和手机
var phone = jQuery('#phone').val();
if(phone != '' && phone.match(/^\d+$/) == null) {
jQuery('#phone').focus();
showmessage('{lang phone_number_illegal}', 'danger', 1000, 1);
return false;
}
var weixinid = jQuery('#weixinid').val();
if(weixinid != '' && weixinid.match(/^[a-zA-Z\d_]{5,}$/) == null) {
jQuery('#weixinid').focus();
showmessage('{lang weixin_illegal}', 'danger', 1000, 1);
return false;
}
ajaxpost('accountform', 'ajaxwaitid', 'return_edituser');
return false;
}
function succeedhandle_edituser(url, message, values) {
showmessage(message, 'success', 3000, 1);
};
function errorhandle_edituser(msg, values) {
showmessage(msg, 'error', 3000, 1);
}
jQuery(document).ready(function(e) {
jQuery('select').lyearSelect();
jQuery('.dropdown-menu li.disabled a').on('click', function() {
return false;
});
});
</script>

View File

@@ -1,71 +0,0 @@
<!--{template common/header_simple_start}-->
<script type="text/javascript">
var selorg={};
<!--{if $openarr}-->
selorg.openarr=$openarr;
<!--{/if}-->
selorg.add=function(ctrlid,vals){
if(vals[0].orgid=='other') vals[0].path='{lang all_personnel}';
jQuery('#'+ctrlid+'_Menu').html(vals[0].path+' ');
jQuery('#sel_'+ctrlid).val(vals[0].orgid);
}
</script>
<!--{template common/header_simple_end}-->
<!--{template commer_header}-->
<div class="bs-container clearfix">
<div class="bs-main-container">
<div class="main-header clearfix">
<ul class="nav nav-pills">
<li class="nav-item"><a class="nav-link active" href="{MOD_URL}&op=export&orgid=$orgid">{lang export_change}</a></li>
</ul>
</div>
<div class="main-content">
<div class="row">
<div class="col-md-12">
<form id="cpform" action="{MOD_URL}&op=export" class="form-horizontal form-horizontal-left" method="post" name="cpform" onsubmit="return validate(this)">
<input type="hidden" value="{FORMHASH}" name="formhash">
<input type="hidden" value="true" name="exportsubmit">
<div class="row mb-3">
<label class="col-sm-2">{lang export_range}</label>
<div class="col-sm-10">
<div class="dropdown">
<input id="sel_orgid" type="hidden" name="orgid" value="$orgid" />
<button type="button" id="orgid_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
$orgpath
</button>
<div id="orgid_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="orgid_Menu">
<iframe name="orgids_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=orgid&nouser=1&stype=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true" ></iframe>
</div>
</div>
<span class="help-block">{lang export_range_user}</span></div>
</div>
<div class="row mb-3">
<label class="col-sm-2">{lang export_data}</label>
<div class="col-sm-10">
<!--{loop $h0 $key $title}-->
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="$key" name="item[]" value="$key" checked="checked">
<label class="form-check-label" for="$key">$title</label>
</div>
<!--{/loop}-->
<span class="help-block"></span>
</div>
</div>
<dl>
<button type="submit" class="btn btn-primary" data-loading-text="{lang in_export}">{lang export_immediately}</button>
</dl>
</form>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
function validate(form){
jQuery(form).find('button[type=submit]').button('loading');
return true;
}
</script>
<!--{template common/footer_simple}-->

View File

@@ -1,20 +0,0 @@
<div style="padding:10px 20px 0 30px;line-height:2.5">
<h4><strong>{lang Organization management instructions}</strong></h4>
<ul class="">
<li><img src="dzz/system/images/organization.png" />&nbsp;{lang Select organization to set organization information}</li>
<li><img src="dzz/system/images/department.png" />&nbsp;{lang Select department to set department information}</li>
<li><img src="dzz/system/images/user.png" />&nbsp;{lang Select personnel to set personnel information}</li>
<li>{lang Personnel, departments and institutions can directly drag and move to change positions. Move refers to changing the Department to which the person belongs, and changing the superior organization or department of the Department.}</li>
<li> {lang Hold}<img src="{MOD_PATH}/images/ctrl.png"> {lang Key to move personnel or departments to copy. It is used to join personnel to multiple departments at the same time.}</li>
<li>{lang Hold}<img src="{MOD_PATH}/images/ctrl.png"> {lang Key can be used for multiple selections, and release after multiple selections} <img src="{MOD_PATH}/images/ctrl.png"> {lang Key movement is batch movement. Do not loosen} <img src="{MOD_PATH}/images/ctrl.png"> {lang Key to move to batch copy.} </li>
<li>{lang Right click departments, institutions and personnel to open the right-click menu. There are corresponding more operations in the menu.} </li>
</ul>
<div class="alert alert-warning">
<h4><strong>{lang Delete user description}</strong></h4>
<ul>
<li>{lang Organization management instructions}</li>
<li>{lang Deleting users from all institutions or departments is only removing users from their own institutions or departments. Users can no longer have all the use rights of their own institutions or departments. It is not deleting users from the system.}</li>
<li style="color:red">{lang When the system administrator deletes the user from the "list of non institutional users", the user will be completely deleted in the system, and all system data and saved files of the user will be deleted. Please use it cautiously by the administrator, and delete it after confirming that the member is to be deleted.}</li>
</ul>
</div>
</div>

View File

@@ -1,13 +0,0 @@
<!--{if $_GET[op]=='import' || $_GET[op]=='export'}-->
<a class="leftTopmenu navbar-brand" href="{MOD_URL}">
<div class="gb_fc">
<span class="dzz dzz-chevron-left"></span>
</div>
<!--{else}-->
<a class="leftTopmenu navbar-brand" onclick="_header.leftTopmenu(this)">
<div class="gb_fc">
<span class="dzz dzz-menu"></span>
</div>
<!--{/if}-->
{lang appname}
</a>

View File

@@ -1,25 +0,0 @@
<!--{if empty($_GET[op])}-->
<div class="input-search">
<form name="search" action="{MOD_URL}" onsubmit="return false">
<i class="input-search-icon glyphicon glyphicon-search" aria-hidden="true" onclick="jstree_search(jQuery('#searchval').val())"></i>
<input type="text" class="form-control search form-search" value="" placeholder="{lang search}" id="searchval" onkeyup="if(this.value!=''){jQuery('#emptysearchcondition').show();}if(event.keyCode==13){jstree_search(jQuery('#searchval').val())}">
<span aria-hidden="true" id="emptysearchcondition" class="header-closebutton">×</span>
</form>
</div>
<script type="text/javascript">
jQuery('#searchval').focus(function (e) {//头部搜索框变颜色
jQuery(this).closest('.input-search').addClass('focus');
if(this.value!='') jQuery('#emptysearchcondition').show();
});
jQuery('#searchval').blur(function (e) {//失去焦点时
jQuery(this).closest('.input-search').removeClass('focus');
if(this.value=='') jQuery('#emptysearchcondition').hide();
});
jQuery('#emptysearchcondition').on('click',function(){
jstree_search('stop');
jQuery('#emptysearchcondition').hide();
return false;
});
</script>
<!--{/if}-->

View File

@@ -1,71 +0,0 @@
<!--{template common/header_simple_start}-->
<link href="static/bootstrap/css/bootstrapSwitch.css?{VERHASH}" rel="stylesheet" media="all">
<script src="admin/scripts/admin.js?{VERHASH}" type="text/javascript"></script>
<style>
p {
min-height: 25px;
min-width: 50px;
margin: 5px 0;
}
p input.form-control {
box-shadow: none;
height: 25px;
width: 90%;
}
p input.form-control:focus {
box-shadow: none;
}
</style>
<!--{template common/header_simple_end}-->
<!--{template commer_header}-->
<div class="bs-container clearfix">
<div class="bs-main-container clearfix">
<div class="main-header clearfix">
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" href="{MOD_URL}&op=import">{lang user_import}</a>
</li>
</ul>
</div>
<div class="main-content">
<div class="col-md-12">
<div class="row mb-3">
<label class="col-sm-2">{lang step}1</label>
<div class="col-sm-10">
<a class="btn btn-outline-secondary" href="{MOD_URL}&op=export_tmpl" target="_blank">{lang inport_guide_download}</a>
<span class="help-block">{lang inport_guide_template}</span>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2">{lang step}2</label>
<div class="col-sm-10">
{lang inport_guide_user.}
</div>
</div>
<form name="importfile" class="form-horizontal form-horizontal-left" method="post" action="{MOD_URL}&op=import" id="importfile" enctype="multipart/form-data">
<input type="hidden" name="formhash" value="{FORMHASH}">
<input type="hidden" name="importfilesubmit" value="true">
<div class="row mb-3">
<label class="col-sm-2">{lang inport_guide_step}</label>
<div class="col-sm-10">
<input type="file" name="importfile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" class="form-control"/>
<span class="help-block">{lang inport_guide_layout}</span>
</div>
</div>
<dl>
<input type="submit" name="" class="btn btn-primary" style="padding:6px 25px" value="{lang next_step}" />
</dl>
</form>
<div class="alert alert-warning ">
<p><strong>{lang inport_guide_notice}</strong></p>
<ul class="list-unstyled" style="padding-left:25px;">
{lang inport_guide_notice_text}
</ul>
</div>
</div>
</div>
</div>
</div>
<!--{template common/footer_simple}-->

View File

@@ -1,209 +0,0 @@
<!--{template common/header_simple_start}-->
<style>
p {
min-height: 25px;
min-width: 50px;
margin:5px 0;
}
p input.form-control{
box-shadow:none;
height:25px;
width:90%;
}
.table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td{
text-overflow: ellipsis;
}
p input.form-control:focus{
box-shadow:none;
}
.table>thead>tr>th{
min-width: 130px
}
</style>
<script type="text/javascript">
var selorg={};
<!--{if $openarr}-->
selorg.openarr=$openarr;
<!--{/if}-->
selorg.add=function(ctrlid,vals){
if(vals[0].orgid=='other') vals[0].path='{lang please_select_a_organization_or_department}';
jQuery('#'+ctrlid+'_Menu').html(vals[0].path+' ');
jQuery('#sel_'+ctrlid).val(vals[0].orgid);
}
</script>
<!--{template common/header_simple_end}-->
<!--{template commer_header}-->
<div class="bs-container clearfix">
<div class="bs-main-container clearfix">
<div class="main-header clearfix">
<ul class="nav nav-pills">
<li class="nav-item"><a class="nav-link" href="{MOD_URL}&op=import">{lang start_import}</a></li>
<li class="nav-item"><a class="nav-link active" href="{MOD_URL}&op=import&do=list">{lang import_set}</a></li>
</ul>
</div>
<div class="main-content">
<div class="row mb-3">
<label class="col-sm-2" for="pswdefault">{lang import_organization}</label>
<div class="col-sm-10">
<div class="controls">
<div class="dropdown">
<input id="sel_orgid" type="hidden" name="orgid" value="$orgid" />
<button type="button" id="orgid_Menu" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
$orgpath
</button>
<div id="orgid_dropdown_menu" class="dropdown-menu org-sel-box" role="menu" aria-labelledby="orgid_Menu">
<iframe name="orgids_iframe" class="org-sel-box-iframe" src="index.php?mod=system&op=orgtree&ctrlid=orgid&nouser=1&stype=1" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true" ></iframe>
</div>
</div>
</div>
<span class="help-block">{lang import_list_organization}</span>
</div>
</div>
<div class="row mb-3" id="pass_default">
<label class="col-sm-2" for="pswdefault">{lang default_password}</label>
<div class="col-sm-10">
<input id="pswdefault" type="text" class="form-control" value="111" name="pswdefault">
<span class="help-block">{lang import_list_password}</span>
</div>
</div>
<div class="row mb-3" id="pass_default">
<label class="col-sm-2">{lang import_way}</label>
<div class="col-sm-10">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="append" name="append" value="1" checked="checked">
<label class="form-check-label" for="append1">{lang bulking}</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="append2" name="append" value="0">
<label class="form-check-label" for="append2">{lang coverage}</label>
</div>
<span class="help-block">{lang import_list_coverage}</span>
</div>
</div>
<ul class="help-block" style="line-height:1.8em">
{lang import_list_text}
</ul>
<div style="padding:0;">
<table class="table table-hover" style="border-bottom:1px solid #DDD;table-layout:fixed">
<thead>
<tr>
<!--{loop $h $key $value}-->
<th>$h0[$value]</th>
<!--{/loop}-->
<th><button type="button" id="button_import_all" class="btn btn-primary" style="padding:6px 25px;" data-loading-text="{lang import_finish}" onclick="toggle_import_all(this)">{lang all_import}</button></th>
</tr>
</thead>
{eval $i=0;}
<!--{loop $list $value}-->
<tr class="item" id="item_$i">
<!--{loop $h $key1 $value1}-->
<!--{if is_array($value[$value1])}-->
<td class="editable" key="$value1"><!--{loop $value[$value1] $value2}-->
<p>$value2</p>
<!--{/loop}--></td>
<!--{else}-->
<td class="editable" key="$value1"><p>$value[$value1]</p></td>
<!--{/if}-->
<!--{/loop}-->
<td><button type="button" id="button_item_$i" class="btn btn-outline-secondary" onclick="item_import('item_$i',this);" data-loading-text="{lang in_import}">{lang import_nbsp}</button>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:;" title="{lang delete_item}" onclick="item_remove(this);return false;"><i class="glyphicon glyphicon-remove"></i></a></td>
</tr>
{eval $i++;}
<!--{/loop}-->
</table>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var url='{BASESCRIPT}?mod=member';
var importing=false;
function toggle_import_all(obj){
var el=jQuery(obj);
if(importing){
importing=false;
el.html('{lang continue_import}');
}else{
importing=true;
el.html('{lang import_click_stop}');
run_import_all();
}
}
function run_import_all(){
if(!importing) return;
var list=jQuery('.item:not(.danger,.success)');
if(!list.length){
jQuery('#button_import_all').button('loading');
}else{
var id=jQuery('.item:not(.danger,.success1)').attr('id');
if(id) item_import(id);
}
}
function item_import(id){
var data=getData(id);
var el=jQuery('#button_'+id);
el.button('loading');
jQuery.getJSON('{MOD_URL}&op=import&do=importing',data,function(json){
if(json.error){
el.button('reset');
el.html(json.error);
el.parent().parent().addClass('danger');
}else{
el.parent().parent().addClass('success1');
el.html('{lang import_success}');
//el.parent().parent().fadeOut(50,function(){jQuery(this).remove();});
window.setTimeout(function(){el.parent().parent().remove();if(importing) run_import_all();},0);
}
});
}
function getData(id){
var data={};
//获取设置项数据
data.orgid=jQuery('#sel_orgid').val();
data.pswdefault=jQuery('#pswdefault').val();
data.append=jQuery('#append').prop('checked')?1:0;
data.sendmail=jQuery('#sendmail').prop('checked')?1:0;
//获取导入项的数据
if(document.getElementById(id)){
jQuery('#'+id).children().each(function(){
var el=jQuery(this);
if(el.attr('key')){
if(el.find('p').length>1){
var vals=[];
el.find('p').each(function(){
vals.push(jQuery(this).html());
});
data[el.attr('key')]=vals.join('/');
}else{
data[el.attr('key')]=el.find('p').html();
}
}
});
}
return data;
}
function item_remove(obj){
jQuery(obj).parent().parent().remove();
}
jQuery(document).ready(function(e) {
jQuery('.editable p').on('click',function(e){
e=e?e:window.event;
var tag = e.srcElement ? e.srcElement :e.target;
if(tag.type=="text"||tag.type=="textarea"){
return true;
}
var val=jQuery(this).html();
jQuery(this).html('<input type="text" class="form-control editinput" onkeyup="if(event.keyCode==13){jQuery(this).parent().html(this.value);}" style="width:'+(jQuery(this).width())+'px" value="'+val+'" onblur="jQuery(this).parent().html(this.value);">');
jQuery(this).find('input').focus();
});
});
</script>
<!--{template common/footer_simple}-->

View File

@@ -1,87 +0,0 @@
<!--{template common/header_simple_start}-->
<link href="static/jstree/themes/default/style.min.css?{VERHASH}" rel="stylesheet" media="all">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link href="{MOD_PATH}/images/orguser.css?{VERHASH}" rel="stylesheet" media="all">
<script src="{MOD_PATH}/scripts/orguser.js?{VERHASH}"></script>
<script type="text/javascript">
var selorg={};
<!--{if $openarr}-->
selorg.openarr=$openarr;
<!--{/if}-->
selorg.add=function(ctrlid,vals){
if(vals[0].orgid=='other') vals[0].path='{lang please_select_a_organization_or_department}';
jQuery('#'+ctrlid+'_Menu').html(vals[0].path+' ');
jQuery('#sel_'+ctrlid).val(vals[0].orgid).trigger('change');
}
</script>
<!--{template common/header_simple_end}-->
<!--{template commer_header}-->
<div class="bs-container clearfix">
<div class="bs-left-container clearfix">
<!--{template tree}-->
</div>
<div class="left-drager">
<div class="left-drager-op">
<div class="left-drager-sub"></div>
</div>
</div>
<div class="bs-main-container">
<div class="main-content clearfix">
<div id="orguser_container" class="orguser-container">
</div>
</div>
</div>
<div id="loading_info" style="position: absolute; left: 0px; top: 0px; width: 100%; height: 100%;margin:0;padding:0;overflow:hidden; z-index: 11000;background:transparent;display:none;">
<table height="100%" width="100%">
<tbody>
<tr>
<td align="center" valign="middle">
<div class="loading_img">
<div class="loading_process"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<script type="text/javascript">
jQuery('.left-drager').leftDrager_layout(function() {
jQuery('#classtree').css('height', jQuery('.bs-left-container').outerHeight(true) - jQuery('#classtree_top').outerHeight(true));
});
var currentHash = '';
jQuery(document).ready(function(e) {
jQuery('select').lyearSelect();
jQuery(document).on('mouseenter', '.moderators-container .user-item', function() {
jQuery(this).addClass('hover');
});
jQuery(document).on('mouseleave', '.moderators-container .user-item', function() {
jQuery(this).removeClass('hover');
});
var hash = window.location.hash.replace('#', '');
if(hash) {
var hasharr = hash.split('_');
showDetail(hasharr[1], hasharr[0], hasharr[2], hasharr[3]);
} else {
show_guide();
}
});
window.onhashchange = function() { //调转到指定的页面
var hash = window.location.hash.replace('#', '');
if(hash && hash != currentHash) {
var hasharr = hash.split('_');
showDetail(hasharr[1], hasharr[0], hasharr[2], hasharr[3]);
}
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/js/jstree.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/jquery.textareaexplander.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.ui.widget.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.iframe-transport.js?{VERHASH}"></script>
<!-- The basic File Upload plugin -->
<script type="text/javascript" src="static/jquery_file_upload/jquery.fileupload.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.fileupload-process.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.fileupload-validate.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,55 +0,0 @@
<div class="main-header clearfix">
<ul class="nav nav-pills">
<strong class="pull-left">$space[username]</strong>
<li class="nav-item">
<a class="nav-link" href="{MOD_URL}&op=edituser&uid=$uid#user_{$user[uid]}_" onclick="jQuery('#orguser_container').load(this.href);return false;">{lang basic_message}</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="{MOD_URL}&op=edituser&do=profile&uid=$uid" onclick="jQuery('#orguser_container').load(this.href);return false;">{lang details_information}</a>
</li>
</ul>
</div>
<div class="main-content">
<div id="return_edituserprofile"></div>
<form id="accountform" name="accountform" class="form-horizontal form-horizontal-left" action="{MOD_URL}&op=edituser&do=profile" method="post" onsubmit="account_submit();return false">
<input type="hidden" name="profilesubmit" value="true" />
<input type="hidden" name="uid" value="$uid" />
<input type="hidden" name="handlekey" value="edituserprofile" />
<input type="hidden" name="formhash" value="{FORMHASH}" />
<!--{loop $settings $key $value}-->
<!--{if $value[available]}-->
<div class="row mb-3">
<label class="col-sm-2" for="$key">$value[title]</label>
<div class="col-sm-10">
$htmls[$key]
</div>
</div>
<!--{/if}-->
<!--{/loop}-->
<dl>
<input type="submit" class="btn btn-primary" value="{lang save_changes}">
</dl>
</form>
</div>
<script type="text/javascript" reload="1">
currentHash = 'user_{$space[uid]}_profile';
location.hash = '#user_{$space[uid]}_profile';
jQuery(document).ready(function (e) {
jQuery('select').lyearSelect();
});
function account_submit() {
ajaxpost('accountform', 'ajaxwaitid', 'return_edituserprofile');
return false;
}
function succeedhandle_edituserprofile(url, message, values) {
showmessage(message, 'success', 3000, 1);
};
</script>
<!--日期选择器css-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker3.min.css">
<!--日期选择器js-->
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js"></script>
<script type="text/javascript" src="static/js/main.min.js" ></script>

View File

@@ -1,420 +0,0 @@
<div id="classtree_top" class="classtree-topbar">
<a class="newdir" href="javascript:;" onclick="jstree_create_organization();return false;" title="{lang creation_agency}"></a>
<a class="newdir_1" href="javascript:;" onclick="jstree_create_dir();return false;" title="{lang creation_bottom_section}"></a>
<a class="newdoc" href="javascript:;" onclick="jstree_create_user();return false;" title="{lang add_user}"></a>
<!--{if $_G['adminid']==1}-->
<a class="import " href="{MOD_URL}&op=import" title="{lang import_user}"></a>
<!--{/if}-->
<a class="guide" href="javascript:;" onclick="show_guide();return false;" title="{lang moderate_explain}"></a>
</div>
<div class="classtree-search">
<a href="javascript:;" class="search" onclick="jstree_search(jQuery('#jstree_search_input').val());return false" title="{lang search}"><i class="glyphicon glyphicon-search"></i></a>
<a href="javascript:;" class="delete" onclick="jstree_search('stop');return false" title="{lang close_search}"><i class="glyphicon glyphicon-remove"></i></a>
<input id="jstree_search_input" type="text" class="form-control" placeholder="{lang enter_search}" onkeyup="if(event.keyCode==13){jstree_search(jQuery('#jstree_search_input').val())}" />
</div>
<div id="classtree" class="classtree-container" style="padding:5px 0;overflow:auto;border-top:1px solid #FFF;"></div>
<script type="text/javascript">
var orgtree = $orgtree;
var ajaxurl = '{MOD_URL}&op=ajax&';
var baseurl = '{MOD_URL}&';
jQuery(document).ready(function(e) {
jQuery("#classtree").jstree({
"core": {
"multiple": true,
'check_callback': function(operation, node, node_parent, node_position, more) {
// operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node'
// in case of 'rename_node' node_position is filled with the new node name
if(node.id == 'other') return false;
if(node_parent.id == 'other' && node.type != 'user') return false;
return operation === 'copy_node' && node.type == 'organization' ? false : true;
},
"themes": { "responsive": false, "variant": 'large' },
"data": {
dataType: 'json',
url: '{MOD_URL}&op=ajax&do=getchildren&t=' + new Date().getTime(),
data: function(node) {
return { 'id': node.id };
}
}
},
"dnd": {
"copy": true,
"open_timeout": 500,
"is_draggable": function(node) {
var inst = jQuery("#classtree").jstree(true);
for(var i in node) {
if(inst.is_disabled(node[i])) return false;
}
return true;
}
},
"types": {
"#": {
"max_children": -1,
"max_depth": -1,
"valid_children": -1
},
"organization": {
"valid_children": ['user', 'organization']
},
"group": {
"icon":"dzz dzz-group",
"valid_children": ['user']
},
"default": {
"valid_children": ['user']
},
"disabled": {
// "icon" : "jstree-icon-file",
"valid_children": []
},
"user": {
// "icon" : "jstree-icon-file",
"valid_children": []
}
},
'contextmenu': {
'select_node': false,
'show_at_node': false,
'items': {
"create_sibing": {
"separator_before": false,
"separator_after": false,
"_disabled": function(data) {
var inst = jQuery.jstree.reference(data.reference);
var node = inst.get_node(data.reference);
if(node.type == 'default') return true;
//if(node.type == 'user') return true;
if(inst.is_disabled(node)) {
return true;
}
var parent = inst.get_node(node.parent);
if(inst.is_disabled(parent)) {
return true;
}
return false;
},
"label": "{lang creation_equally_section}",
"icon": "glyphicon glyphicon-tag",
"action": function(data) {
var inst = jQuery.jstree.reference(data.reference),
obj = inst.get_node(data.reference),
obj1 = inst.get_node(obj.parent);
var position = jQuery.inArray(obj.id, obj1.children) + 1;
jQuery.post('{MOD_URL}&op=ajax&do=create', { 'forgid': obj.parent, 'orgid': obj.id, 't': new Date().getTime() }, function(json) {
if(!json || json.error) {
showmessage(json.error, 'danger', 3000, 1);
} else if(json.orgid > 0) {
var arr = { "id": json.orgid, "text": json.orgname, "type": "organization", "icon": (json.forgid > 0) ? 'dzz/system/images/department.png' : 'dzz/system/images/organization.png' }
inst.create_node(obj1, arr, position, function(new_node) {
setTimeout(function() { inst.edit(new_node); }, 0);
});
}
}, 'json');
}
},
"create": {
"separator_before": false,
"separator_after": false,
"_disabled": function(data) {
var inst = jQuery.jstree.reference(data.reference);
var node = inst.get_node(data.reference);
var parent = inst.get_node(node.parent);
if(node.type == 'group') return true;
if(node.type == 'default') return true;
if(node.type == 'user') return true;
if(inst.is_disabled(node)) {
return true;
}
return false;
},
"label": "{lang creation_bottom_section}",
"icon": "glyphicon glyphicon-tags",
"action": function(data) {
var inst = jQuery.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
inst.open_node(obj,function(){
jQuery.post('{MOD_URL}&op=ajax&do=create', { 'forgid': obj.id, 't': new Date().getTime() }, function(json) {
if(!json || json.error) {
showmessage(json.error, 'danger', 3000, 1);
} else if(json.orgid > 0) {
var arr = { "id": json.orgid, "text": json.orgname, "type": "organization", "icon": (json.forgid > 0) ? 'dzz/system/images/department.png' : 'dzz/system/images/organization.png' };
inst.create_node(obj, arr, "first", function(new_node) {
setTimeout(function() { inst.edit(new_node); }, 0);
});
}
}, 'json');
});
}
},
"rename": {
"separator_before": false,
"separator_after": false,
"_disabled": function(data) {
var inst = jQuery.jstree.reference(data.reference);
var node = inst.get_node(data.reference);
if(node.type == 'default') return true;
if(inst.is_disabled(node)) {
return true;
}
if(node.type == 'user') return true;
return false;
},
"label": "{lang rechristen}",
"shortcut" : 113,
"shortcut_label" : 'F2',
"icon": "glyphicon glyphicon-leaf",
"action": function(data) {
var inst = jQuery.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
console.log('aaaaaaa');
inst.edit(obj);
}
},
"remove": {
"separator_before": false,
"icon": false,
"separator_after": false,
"_disabled": function(data) {
var inst = jQuery.jstree.reference(data.reference);
var node = inst.get_node(data.reference);
if(node.type == 'default') return true;
if(inst.is_disabled(node)) {
return true;
}
var parent = inst.get_node(node.parent);
if(inst.is_disabled(parent)) {
return true;
}
return false;
},
"label": "{lang delete}",
"icon": "glyphicon glyphicon-remove",
"action": function(data) {
var inst = jQuery.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
//判断是否为相同类型的多选和相同部门的
var msg = '';
var nodes = [];
if(inst.is_selected(obj)) {
var nodes = inst.get_selected(true);
var type = null;
var parent = null;
for(var i in nodes) {
if(!type) type = nodes[i].type;
else if(type != nodes[i].type) {
msg = '{lang please_select_same_type_node}';
break;
}
if(!parent) parent = nodes[i].parent;
else if(parent != nodes[i].parent) {
msg = '{lang please_select_same_section_node}';
break;
}
}
} else {
var nodes = [obj];
}
if(msg) {
showmessage(msg, 'danger', 3000, 1);
return;
}
if(obj.parent == 'other') {
var uids = [];
for(var i in nodes) {
uids.push(nodes[i].li_attr.uid);
}
var msg = '{lang orguser_tree_delete}';
var data = { 'uids': uids, 'forgid': obj.parent, 'type': 'user', 'realdelete': '1' };
} else {
if(obj.type == 'user') {
var uids = [];
for(var i in nodes) {
uids.push(nodes[i].li_attr.uid);
}
var msg = '{lang orguser_tree_permission_delete}';
var data = { 'uids': uids, 'forgid': obj.parent, 'type': 'user' };
} else {
if(nodes.length > 1) {
showmessage('{lang orguser_tree_batch_delete}', 'danger', 3000, 1);
return;
}
var msg = '{lang orguser_tree_all_delete}';
var data = { 'orgid': obj.id, 'forgid': obj.parent }
}
}
Confirm(msg,function(){
jQuery.post('{MOD_URL}&op=ajax&do=delete&t=' + new Date().getTime(), data, function(json) {
if(json.error) {
showmessage(json.error, 'danger', 3000, 1);
} else {
if(inst.is_selected(obj)) {
inst.delete_node(inst.get_selected(true));
} else {
inst.delete_node(obj);
}
if(obj.type == 'user') {
var parent = inst.get_node('other');
inst.refresh_node(parent);
}
}
}, 'json');
});
}
}
}
},
"search": {
"show_only_matches": true,
"fuzzy": false,
"ajax": { 'url': '{MOD_URL}&op=ajax&do=search', 'dataType': 'json' }
},
"plugins": ["unique", "contextmenu", "dnd", "types", "search",'wholerow']
// List of active plugins
});
jQuery("#classtree").on('ready.jstree', function(e) {
var inst = jQuery("#classtree").jstree(true);
for(var i in orgtree) {
if(document.getElementById(orgtree[i][0])) open_node_dg(inst, document.getElementById(orgtree[i][0]), orgtree[i]);
}
});
jQuery(document).on('touchend', '#classtree .jstree-anchor', function() {
var inst = jQuery("#classtree").jstree(true);
var node = jQuery(this).closest('.jstree-node');
inst.select_node(node);
return false;
});
jQuery("#classtree").on('select_node.jstree', function(e, data) {
var inst = jQuery("#classtree").jstree(true);
inst.open_node(data.node);
if(data.selected.length > 1) return;
if(data.node.id == "other") return;
if(data.node.type == 'user') {
showDetail(data.node.li_attr.uid, 'user');
} else {
showDetail(data.node.id, 'organization');
}
});
jQuery("#classtree").on('load_node.jstree', function(e, data) { //设置空节点为leaf
var inst = jQuery("#classtree").jstree(true);
if(data.node.children.length < 1) {
jQuery('#' + data.node.id).removeClass('jstree-closed').addClass('jstree-leaf');;
}
});
jQuery(document).on('dnd_move.vakata', function(e, data) {
if(jQuery(data.event.target).closest('.moderators-acceptor').length) {
jQuery('.moderators-acceptor').addClass('hover').find('img').attr('src', 'avatar.php?uid=' + jQuery(data.element).parent().attr('uid') + '&size=middle');
} else {
jQuery('.moderators-acceptor').removeClass('hover');
}
});
jQuery(document).on('dnd_stop.vakata', function(e, data) {
if(!jQuery(data.event.target).closest('.moderators-acceptor').length) return;
var uid = jQuery(data.element).parent().attr('uid');
var orgid = jQuery('.moderators-acceptor').attr('orgid');
moderator_add(orgid, uid);
});
jQuery("#classtree").on('move_node.jstree', function(e, data) {
if(jQuery(e.target).closest('.moderators-acceptor').length) return;
var inst = jQuery("#classtree").jstree(true);
var node = data.node;
var parent = inst.get_node(data.parent);
var post = {};
var needsave = 0;
if(node.type == 'user' && data.parent != data.old_parent) { //移动用户
post.uid = node.li_attr.uid;
post.forgid = data.old_parent;
post.orgid = data.parent;
post.type = 'user';
needsave = 1;
} else {
post.orgid = node.id;
post.forgid = data.parent;
post.position = data.position;
needsave = 1;
}
if(needsave) {
jQuery.post('{MOD_URL}&op=ajax&do=move&t=' + new Date().getTime(), post, function(json) {
if(json.error) {
showmessage(json.error, 'danger', 3000, 1, null, function() {
window.location.reload();
});
}
}, 'json');
}
});
jQuery("#classtree").on('copy_node.jstree', function(e, data) {
if(jQuery(e.target).closest('.moderators-acceptor').length) return;
var inst = jQuery("#classtree").jstree(true);
var node = data.node;
var parent = inst.get_node(data.parent);
var post = {};
var needsave = 0;
if(node.type == 'user' && data.parent != data.old_parent) { //移动用户
post.uid = node.li_attr.uid;
post.forgid = data.old_parent;
post.orgid = data.parent;
post.type = 'user';
post.copy = 1;
needsave = 1;
} else {
return;
}
if(needsave) {
jQuery.post('{MOD_URL}&op=ajax&do=move&t=' + new Date().getTime(), post, function(json) {
}, 'json');
}
});
jQuery("#classtree").on('open_node.jstree', function(e, data) {
//jQuery("#"+data.node.id+" .jstree-anchor").addTouch();
});
jQuery("#classtree").on('rename_node.jstree', function(e, data) {
var inst = jQuery("#classtree").jstree(true);
var obj = inst.get_node(data.node);
var oldtext = data.old.replace(/<(.+?)>(.+?)<\/(.+?)>/,'');
if(data.text == '' || data.text == oldtext) {
inst.set_text(obj, data.old);
return;
}
jQuery.post('{MOD_URL}&op=ajax&do=rename&t=' + new Date().getTime(), { 'orgid': data.node.id, text: data.text }, function(json) {
if(!json || json.error) {
obj.text = data.old;
inst.set_text(obj, data.old);
if(json.error) showmessage(json.error, 'danger', 3000, 1);
}else{
jQuery('#title_orgname').html(data.text);
jQuery('#orgname').val(data.text).data('oldname',data.text);
inst.refresh();
}
}, 'json');
});
// jQuery("#classtree").on('create_node.jstree',function(e,data){});
});
</script>

View File

@@ -1,60 +0,0 @@
<?php
/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
if (!defined('IN_DZZ')) {
exit('Access Denied');
}
include_once libfile('function/organization');
$type = trim($_GET['idtype']);
if ($type == 'user') {
$_GET['uid'] = intval($_GET['id']);
include DZZ_ROOT . MOD_PATH.'/edituser.php';
exit();
} else {
$orgid = intval($_GET['id']);
if (!C::t('organization_admin') -> ismoderator_by_uid_orgid($orgid, $_G['uid'])) {
exit(lang('orguser_vidw_delete'));
}
if($org = C::t('organization') -> fetch($orgid)){
$org['avatar'] = avatar_group($org['orgid'],array($org['orgid']=>array('aid'=>$org['aid'],'orgname'=>$org['orgname'])));
}
if ($org && $org['forgid'] > 0) {
$toporgid = C::t('organization') -> getTopOrgid($orgid);
$toporg = C::t('organization') -> fetch($toporgid);
$folder_available = $toporg['available'];
$group_on = $toporg['syatemon'];
} else {
$folder_available = 1;
$group_on = 1;
}
//可分配空间
$allowallotspace = C::t('organization')->get_allowallotspacesize_by_orgid($orgid);
//获取已使用空间
$org['usesize'] = C::t('organization')->get_orgallotspace_by_orgid($orgid,0,false);
/*echo formatsize($org['usesize']);
die;*/
//获取总空间
if($org['maxspacesize'] == 0){
$maxspacesize = C::t('organization')->get_parent_maxspacesize_by_pathkey($org['pathkey'],$orgid);
$org['maxallotspacesize'] = $maxspacesize['maxspacesize'];
}else{
if($org['maxspacesize'] == -1){
$org['maxallotspacesize'] = -1;
}else{
$org['maxallotspacesize'] = $org['maxspacesize']*1024*1024;
}
}
$pmoderator = C::t('organization_admin') -> ismoderator_by_uid_orgid($org['forgid'], $_G['uid']);
$jobs = C::t('organization_job') -> fetch_all_by_orgid($orgid);
$moderators = C::t('organization_admin') -> fetch_moderators_by_orgid($orgid);
//$grouppic= C::t('resources_grouppic')->fetch_user_pic();
include template('detail_org');
}
?>

View File

@@ -1,6 +1,6 @@
<!--{template common/header_simple_start}-->
<script type="text/javascript" src="static/js/jquery.textareaexplander.js?{VERHASH}"></script>
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<script src="admin/scripts/admin.js?{VERHASH}"></script>
<style>
.loginset-template {
@@ -1581,7 +1581,7 @@
});
});
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.ui.widget.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.iframe-transport.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.fileupload.js?{VERHASH}"></script>

View File

@@ -1,4 +1,4 @@
<link rel="stylesheet" href="{MOD_PATH}/images/setting.css">
<link rel="stylesheet" href="{MOD_PATH}/images/setting.css?{VERHASH}">
<style type="text/css">
.view-eidt{
padding-right: 5px;

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple_start}-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<script src="admin/scripts/admin.js?{VERHASH}"></script>
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
@@ -87,5 +87,5 @@
jQuery('select').lyearSelect();
});
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,6 +1,6 @@
<!--{template common/header_simple_start}-->
<script src="admin/scripts/admin.js?{VERHASH}"></script>
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<style>
input[type="text"] {
margin: 0;
@@ -178,5 +178,5 @@
jQuery('select').lyearSelect();
});
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -351,5 +351,5 @@ jQuery(document).ready(function(e) {
</script>
<script type="text/javascript" src="static/js/datepicker/jquery.ui.core.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/datepicker/jquery.ui.datepicker.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/datepicker/jquery.datepicker-{$_G[language]}.js"></script>
<script type="text/javascript" src="static/js/datepicker/jquery.datepicker-{$_G[language]}.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple_start}-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<style>
input[type="text"] {
margin: 0;
@@ -102,5 +102,5 @@
</div>
</div>
</div>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

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.6');
define('CORE_XHVERSION', '1.87.7');
define('CORE_XHRELEASE', '20240412');
define('CORE_XHFIXBUG' , '20240110');
}

View File

@@ -1,7 +1,7 @@
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<style>
.signin-form .has-feedback {
position: relative;

View File

@@ -3,7 +3,7 @@
<iframe id="wrapper_frame" name="wrapper_frame" src="$_G['setting']['loginset']['url']" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%" allowtransparency="true" style="z-index:20;position:absolute;width:100%;height:100%;background:url(dzz/images/b.gif);"></iframe>
<!--{elseif $_G['setting']['loginset']['bcolor']}-->
<!--{else}-->
<link rel="stylesheet" type="text/css" href="static/css/beijin.css">
<link rel="stylesheet" type="text/css" href="static/css/beijin.css?{VERHASH}">
<div class="backstretch">
<div id="stars"></div>
<div id="stars2"></div>

View File

@@ -132,9 +132,9 @@ $_G['setting']['statcode']
}
</script>
<!--{/if}-->
<script type="text/javascript" src="static/js/popper.min.js"></script>
<script type="text/javascript" src="static/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="static/js/main.min.js"></script>
<script type="text/javascript" src="static/js/lyear-loading.js"></script>
<script type="text/javascript" src="static/js/popper.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/main.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/lyear-loading.js?{VERHASH}"></script>
</body>
</html>

View File

@@ -138,10 +138,10 @@ try{
}
</script>
<!--{/if}-->
<script type="text/javascript" src="static/js/popper.min.js"></script>
<script type="text/javascript" src="static/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="static/js/main.min.js"></script>
<script type="text/javascript" src="static/js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="static/js/lyear-loading.js"></script>
<script type="text/javascript" src="static/js/popper.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/main.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/jquery.cookie.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/lyear-loading.js?{VERHASH}"></script>
</body>
</html>

View File

@@ -18,10 +18,10 @@ try{
<!--{if $_G['setting']['statcode']}-->
$_G['setting']['statcode']
<!--{/if}-->
<script type="text/javascript" src="static/js/popper.min.js"></script>
<script type="text/javascript" src="static/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="static/js/main.min.js"></script>
<script type="text/javascript" src="static/js/jquery.cookie.min.js"></script>
<script type="text/javascript" src="static/js/lyear-loading.js"></script>
<script type="text/javascript" src="static/js/popper.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/bootstrap/js/bootstrap.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/main.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/jquery.cookie.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/lyear-loading.js?{VERHASH}"></script>
</body>
</html>

View File

@@ -17,14 +17,14 @@
<meta name="apple-touch-fullscreen" content="yes">
<meta name="renderer" content="webkit">
<base href="{$_G['siteurl']}" />
<link rel="stylesheet" type="text/css" href="static/css/barber-shop.css">
<script type="text/javascript" src="static/js/pace.min.js"></script>
<link rel="stylesheet" type="text/css" href="static/css/barber-shop.css?{VERHASH}">
<script type="text/javascript" src="static/js/pace.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery/jquery.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery/jquery.json-2.4.min.js?{VERHASH}"></script>
<script type="text/javascript">
var DZZSCRIPT='{DZZSCRIPT}',LANG='{$_G[language]}', STATICURL = 'static/', IMGDIR = '{$_G[setting][imgdir]}', VERHASH = '{VERHASH}', charset = '{CHARSET}', dzz_uid = '$_G[uid]', cookiepre = '{$_G[config][cookie][cookiepre]}', cookiedomain = '{$_G[config][cookie][cookiedomain]}', cookiepath = '{$_G[config][cookie][cookiepath]}',attackevasive = '{$_G[config][security][attackevasive]}', disallowfloat = '{$_G[setting][disallowfloat]}', REPORTURL = '$_G[currenturl_encode]', SITEURL = '$_G[siteurl]', JSPATH = '$_G[setting][jspath]',MOD_PATH='{MOD_PATH}',APP_URL='{MOD_URL}',MOD_URL='{MOD_URL}';
</script>
<script type="text/javascript" src="static/js/common.js"></script>
<script type="text/javascript" src="static/js/common.js?{VERHASH}"></script>
</head>
<body id="nv_dzz" class="$bodyClass">
<div id="append_parent" style="z-index:99999;"></div>

View File

@@ -5,7 +5,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>$_G[setting][sitename]</title>
<base href="{$_G['siteurl']}" />
<link rel="stylesheet" type="text/css" href="static/css/quanju.css">
<script type="text/javascript" src="static/jquery/jquery.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery/jquery.json-2.4.min.js?{VERHASH}"></script>
<script type="text/javascript">var DZZSCRIPT='{DZZSCRIPT}', STATICURL = 'static/', VERHASH = '{VERHASH}', charset = '{CHARSET}', dzz_uid = '$_G[uid]', cookiepre = '{$_G[config][cookie][cookiepre]}', cookiedomain = '{$_G[config][cookie][cookiedomain]}', cookiepath = '{$_G[config][cookie][cookiepath]}',attackevasive = '{$_G[config][security][attackevasive]}', disallowfloat = '{$_G[setting][disallowfloat]}', SITEURL = '$_G[siteurl]', JSPATH = '$_G[setting][jspath]',MOD_PATH='{MOD_PATH}',APP_URL='{MOD_URL}',MOD_URL='{MOD_URL}';</script>

View File

@@ -16,12 +16,12 @@
<meta http-equiv="MSThemeCompatible" content="Yes" />
<meta name="apple-touch-fullscreen" content="yes">
<base href="{$_G['siteurl']}" />
<link rel="stylesheet" type="text/css" href="static/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="static/css/barber-shop.css">
<script type="text/javascript" src="static/js/pace.min.js"></script>
<link rel="stylesheet" type="text/css" href="static/bootstrap/css/bootstrap.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/barber-shop.css?{VERHASH}">
<script type="text/javascript" src="static/js/pace.min.js?{VERHASH}"></script>
<link rel="stylesheet" type="text/css" href="static/dzzicon/icon.css?{VERHASH}"/>
<script type="text/javascript">var DZZSCRIPT='{DZZSCRIPT}',LANG='{$_G[language]}', STATICURL = 'static/', IMGDIR = '{$_G[setting][imgdir]}', VERHASH = '{VERHASH}', charset = '{CHARSET}', dzz_uid = '$_G[uid]', cookiepre = '{$_G[config][cookie][cookiepre]}', cookiedomain = '{$_G[config][cookie][cookiedomain]}', cookiepath = '{$_G[config][cookie][cookiepath]}',attackevasive = '{$_G[config][security][attackevasive]}', disallowfloat = '{$_G[setting][disallowfloat]}', REPORTURL = '$_G[currenturl_encode]', SITEURL = '$_G[siteurl]', JSPATH = '$_G[setting][jspath]',MOD_PATH='{MOD_PATH}',APP_URL='{MOD_URL}',MOD_URL='{MOD_URL}';</script>
<script type="text/javascript" src="static/jquery/jquery.min.js"></script>
<script type="text/javascript" src="static/jquery/jquery.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/common.js?{VERHASH}"></script>
{eval
$hex_color=$_config['ztys']?$_config['ztys']:'#0d6efd';

View File

@@ -10,29 +10,29 @@
<meta name="generator" content="$_G[setting][sitename]" />
<meta name="author" content="$_G[setting][sitename]" />
<meta name="copyright" content="<!--{eval echo replacesitevar($_G['setting']['sitecopyright'])}-->" />
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="MSSmartTagsPreventParsing" content="True" />
<meta http-equiv="MSThemeCompatible" content="Yes" />
<meta name="apple-touch-fullscreen" content="yes">
<meta name="renderer" content="webkit">
<base href="{$_G['siteurl']}" />
<link rel="stylesheet" type="text/css" href="static/css/barber-shop.css">
<link rel="stylesheet" type="text/css" href="static/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="static/css/barber-shop.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/bootstrap/css/bootstrap.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/app_manage.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/dzzicon/icon.css?{VERHASH}"/>
<link rel="stylesheet" href="static/popbox/popbox.css">
<link rel="stylesheet" type="text/css" href="static/css/common.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/animate.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<script type="text/javascript" src="static/js/pace.min.js"></script>
<script type="text/javascript" src="static/jquery/jquery.min.js"></script>
<link rel="stylesheet" href="static/popbox/popbox.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/common.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<script type="text/javascript" src="static/js/pace.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery/jquery.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery/jquery.json-2.4.min.js?{VERHASH}"></script>
<script type="text/javascript">var DZZSCRIPT='{DZZSCRIPT}',LANG='{$_G[language]}', STATICURL = 'static/', IMGDIR = '{$_G[setting][imgdir]}', VERHASH = '{VERHASH}', charset = '{CHARSET}', dzz_uid = '$_G[uid]', cookiepre = '{$_G[config][cookie][cookiepre]}', cookiedomain = '{$_G[config][cookie][cookiedomain]}', cookiepath = '{$_G[config][cookie][cookiepath]}',attackevasive = '{$_G[config][security][attackevasive]}', disallowfloat = '{$_G[setting][disallowfloat]}', REPORTURL = '$_G[currenturl_encode]', SITEURL = '$_G[siteurl]', JSPATH = '$_G[setting][jspath]',MOD_PATH='{MOD_PATH}',APP_URL='{MOD_URL}',MOD_URL='{MOD_URL}';</script>
<script type="text/javascript" src="static/popbox/jquery.popbox.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<!--{hook header_tpl}-->
<script type="text/javascript" src="static/js/jquery.leftDrager.js?{VERHASH}"></script>
<!--{hook header_tpl}-->
<script type="text/javascript">
if(!!window.ActiveXObject || "ActiveXObject" in window){
try{$.ajaxSetup({ cache: false });}catch(e){}

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple_start}-->
<link rel='stylesheet' type="text/css" href="static/css/ddxsy.css"/>
<link rel='stylesheet' type="text/css" href="static/css/ddxsy.css?{VERHASH}"/>
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
<style>
@@ -56,12 +56,12 @@
<div id="dplayer"></div>
<!--{/if}-->
</div>
<script src="{MOD_PATH}/js/flv.min.js"></script>
<script src="{MOD_PATH}/js/dash.all.min.js"></script>
<script src="{MOD_PATH}/js/DPlayer.min.js"></script>
<script src="{MOD_PATH}/js/hls.min.js"></script>
<script src="{MOD_PATH}/js/dash.all.min.js"></script>
<script src="{MOD_PATH}/js/webtorrent.min.js"></script>
<script src="{MOD_PATH}/js/flv.min.js?{VERHASH}"></script>
<script src="{MOD_PATH}/js/dash.all.min.js?{VERHASH}"></script>
<script src="{MOD_PATH}/js/DPlayer.min.js?{VERHASH}"></script>
<script src="{MOD_PATH}/js/hls.min.js?{VERHASH}"></script>
<script src="{MOD_PATH}/js/dash.all.min.js?{VERHASH}"></script>
<script src="{MOD_PATH}/js/webtorrent.min.js?{VERHASH}"></script>
<script>
const dp = new DPlayer({
container: document.getElementById('dplayer'),

View File

@@ -3,7 +3,7 @@
<link href="{MOD_PATH}/images/comment.css?Xqd" rel="stylesheet" media="all">
<link href="static/dzzthumb/jquery.dzzthumb.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/dzzthumb/jquery.dzzthumb.js?{VERHASH}"></script>
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<style type="text/css">
.overflow-auto{
max-height: 180px;
@@ -244,5 +244,5 @@ function delete_file(){
}
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -2,7 +2,7 @@
<link href="dzz/images/folder/folder.css?{VERHASH}" rel="stylesheet" media="all">
<link href="static/dzzthumb/jquery.dzzthumb.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/dzzthumb/jquery.dzzthumb.js?{VERHASH}"></script>
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<style type="text/css">
.lie{
min-width: 120px
@@ -338,5 +338,5 @@ function togglecplog(k) {
}
<!--{/if}-->
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,6 +1,6 @@
<!--{template common/header_simple_start}-->
<link href="static/jstree/themes/default/style.min.css?{VERHASH}" rel="stylesheet" media="all">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<link href="{MOD_PATH}/images/orguser.css?{VERHASH}" rel="stylesheet" media="all">
<script src="{MOD_PATH}/scripts/orguser.js?{VERHASH}"></script>
<script type="text/javascript">
@@ -75,7 +75,7 @@
}
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/jstree.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/js/jquery.textareaexplander.js?{VERHASH}"></script>
<script type="text/javascript" src="static/jquery_file_upload/jquery.ui.widget.js?{VERHASH}"></script>

View File

@@ -1,6 +1,6 @@
<!--{template common/header_simple_start}-->
<link href="dzz/images/folder/folder.css?{VERHASH}" rel="stylesheet" media="all">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
<div class="bs-container clearfix">
@@ -333,6 +333,6 @@
}
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<script type="text/javascript" src="static/clipboard/clipboard.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -2,7 +2,7 @@
<link href="dzz/images/folder/folder.css?{VERHASH}" rel="stylesheet" media="all">
<link href="static/dzzthumb/jquery.dzzthumb.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="static/dzzthumb/jquery.dzzthumb.js?{VERHASH}"></script>
<script type="text/javascript" src="{MOD_PATH}/scripts/_hotkey.js?"></script>
<script type="text/javascript" src="{MOD_PATH}/scripts/_hotkey.js?{VERHASH}"></script>
<!--{template common/header_simple_end}-->
<!--头部信息框-->

View File

@@ -1,7 +1,7 @@
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--[if lt IE 9]>
<script src="static/js/jquery.placeholder.js" type="text/javascript"></script>
<![endif]-->

View File

@@ -1,6 +1,6 @@
<!--{template common/header_simple}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--{template common/beijing}-->
<style>
html, body{

View File

@@ -1,7 +1,7 @@
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<style>
html, body{
overflow:auto;

View File

@@ -1,7 +1,7 @@
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--[if lt IE 9]>
<script src="static/js/jquery.placeholder.js" type="text/javascript"></script>
<![endif]-->

View File

@@ -1,6 +1,6 @@
<!--{template common/header_simple}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--{template common/beijing}-->
<style>
body{

View File

@@ -1,7 +1,7 @@
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--{template common/beijing}-->
<style>
body{

View File

@@ -1,9 +1,9 @@
<!--{if empty($_GET['inajax'])}-->
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<script src="user/scripts/login.js" type="text/javascript"></script>
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<script src="user/scripts/login.js?{VERHASH}" type="text/javascript"></script>
<!--{eval $loginhash = 'L'.random(4);}-->
<!--{template common/beijing}-->
<style>

View File

@@ -1,6 +1,6 @@
<!--{if empty($_GET['inajax'])}-->
<!--{template common/header_simple}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<!--{template common/beijing}-->
<style>
html, body{

View File

@@ -1,8 +1,8 @@
<!--{if empty($_GET['inajax'])}-->
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--{template common/beijing}-->
<style>
body{

View File

@@ -1,8 +1,8 @@
<!--{template common/header_simple_start}-->
<link href="user/scripts/jquery.cropbox.css?{VERHASH}" rel="stylesheet" media="all">
<script type="text/javascript" src="user/scripts/hammer.js"></script>
<script type="text/javascript" src="user/scripts/jquery.mousewheel.js"></script>
<script type="text/javascript" src="user/scripts/jquery.cropbox.js"></script>
<script type="text/javascript" src="user/scripts/hammer.js?{VERHASH}"></script>
<script type="text/javascript" src="user/scripts/jquery.mousewheel.js?{VERHASH}"></script>
<script type="text/javascript" src="user/scripts/jquery.cropbox.js?{VERHASH}"></script>
<!--{template common/header_simple_end}-->
<!--{template common/commer_header}-->
<div class="bs-container clearfix">

View File

@@ -1,8 +1,8 @@
<!--{template common/header_simple_start}-->
<script type="text/javascript" src="static/js/jquery.textareaexplander.js?{VERHASH}"></script>
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.css?{VERHASH}">
<!--日期选择器css-->
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker3.min.css">
<link rel="stylesheet" type="text/css" href="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker3.min.css?{VERHASH}">
<style>
.form-horizontal-left .form-group .col-sm-10{
float:left;
@@ -174,8 +174,8 @@ function clearErrorInfo() {
jQuery('.has-error').removeClass('has-error');
}
</script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-lyear-select/bootstrap-lyear-select.js?{VERHASH}"></script>
<!--日期选择器js-->
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/bootstrap-datepicker.min.js?{VERHASH}"></script>
<script type="text/javascript" src="static/lyear/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js?{VERHASH}"></script>
<!--{template common/footer_simple}-->

View File

@@ -1,7 +1,7 @@
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--[if lt IE 9]>
<script src="static/js/jquery.placeholder.js" type="text/javascript"></script>
<![endif]-->

View File

@@ -1,5 +1,5 @@
<!--{template common/header_simple}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<!--{template common/beijing}-->
<style>
body{

View File

@@ -1,7 +1,7 @@
<!--{template common/header_simple}-->
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css">
<!--{if $_G[setting][loginset][lwaveanimation]}--><link rel="stylesheet" type="text/css" href="static/css/animate.min.css?{VERHASH}"><!--{/if}-->
<link rel="stylesheet" type="text/css" href="static/dzzicon/materialdesignicons.min.css?{VERHASH}">
<link rel="stylesheet" type="text/css" href="static/css/style.min.css?{VERHASH}">
<!--{template common/beijing}-->
<style>
body{