mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-27 07:44:50 +00:00
Merge branch 'master' into 13.0
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
.dir-content-nav {
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
width: 24%;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.dir-content-nav:hover {
|
||||
@@ -45,43 +45,45 @@
|
||||
.tree-node-inner {
|
||||
position: relative;
|
||||
display: flex;
|
||||
padding-right: 1rem;
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
|
||||
.tree-node-inner i {
|
||||
.tree-node-inner .sf3-font-down {
|
||||
position: absolute;
|
||||
top: 20%;
|
||||
top: 15%;
|
||||
left: 0.3rem;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.tree-node-inner-hover {
|
||||
background-color: #FFEFB2;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 0.25rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tree-node-hight-light {
|
||||
color: #fff;
|
||||
border-radius: 4px;
|
||||
background-color: #feac74 !important;
|
||||
background-color: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.tree-node-hight-light i {
|
||||
color: #fff;
|
||||
.tree-node-hight-light::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 4px;
|
||||
left: -8px;
|
||||
top: 2px;
|
||||
bottom: 2px;
|
||||
border-radius: 2px;
|
||||
background-color: #ff9800;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.tree-node-hight-light .attr-action-icon,
|
||||
.tree-node-hight-light .attr-action-icon:focus,
|
||||
.tree-node-hight-light .attr-action-icon:hover {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.tree-node-icon {
|
||||
.tree-view .tree-node-icon {
|
||||
padding-right: 1.5rem;
|
||||
}
|
||||
|
||||
.tree-node-text {
|
||||
.tree-view .tree-node-text {
|
||||
width: calc(100% - 2.5rem);
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
@@ -90,7 +92,18 @@
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.tree-view {
|
||||
padding: 12px 12px 12px 0;
|
||||
flex: 1 1;
|
||||
.tree-view .dropdown .right-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #666;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.tree-view .dropdown .right-icon:hover {
|
||||
background-color: #dbdbdb;
|
||||
}
|
||||
|
@@ -22,7 +22,7 @@
|
||||
.dir-content-nav {
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
width: 24%;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.dir-content-nav:hover {
|
||||
@@ -45,43 +45,45 @@
|
||||
.tree-node-inner {
|
||||
position: relative;
|
||||
display: flex;
|
||||
padding-right: 1rem;
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
|
||||
.tree-node-inner i {
|
||||
.tree-node-inner .sf3-font-down {
|
||||
position: absolute;
|
||||
top: 20%;
|
||||
top: 15%;
|
||||
left: 0.3rem;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.tree-node-inner-hover {
|
||||
background-color: #FFEFB2;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 0.25rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tree-node-hight-light {
|
||||
color: #fff;
|
||||
border-radius: 4px;
|
||||
background-color: #feac74 !important;
|
||||
background-color: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.tree-node-hight-light i {
|
||||
color: #fff;
|
||||
.tree-node-hight-light::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 4px;
|
||||
left: -8px;
|
||||
top: 2px;
|
||||
bottom: 2px;
|
||||
border-radius: 2px;
|
||||
background-color: #ff9800;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.tree-node-hight-light .attr-action-icon,
|
||||
.tree-node-hight-light .attr-action-icon:focus,
|
||||
.tree-node-hight-light .attr-action-icon:hover {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.tree-node-icon {
|
||||
.tree-view .tree-node-icon {
|
||||
padding-right: 1.5rem;
|
||||
}
|
||||
|
||||
.tree-node-text {
|
||||
.tree-view .tree-node-text {
|
||||
width: calc(100% - 2.5rem);
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
@@ -90,7 +92,18 @@
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.tree-view {
|
||||
padding: 12px 12px 12px 0;
|
||||
flex: 1 1;
|
||||
.tree-view .dropdown .right-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #666;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.tree-view .dropdown .right-icon:hover {
|
||||
background-color: #dbdbdb;
|
||||
}
|
||||
|
@@ -60,6 +60,10 @@ class DingtalkDepartments extends Component {
|
||||
|
||||
getDingtalkDepartmentsList = (departmentID) => {
|
||||
systemAdminAPI.sysAdminListDingtalkDepartments(departmentID).then((res) => {
|
||||
if (!res.data.department && res.data.errmsg) {
|
||||
toaster.danger(res.data.errmsg);
|
||||
return;
|
||||
}
|
||||
if (!departmentID) {
|
||||
let departmentsTree = this.getDepartmentsTree(res.data.department);
|
||||
this.setState({
|
||||
@@ -302,7 +306,7 @@ class DingtalkDepartments extends Component {
|
||||
<div className="cur-view-path">
|
||||
<h3 className="sf-heading">{'钉钉集成'}</h3>
|
||||
</div>
|
||||
<div className="cur-view-content d-flex flex-row">
|
||||
<div className="cur-view-content d-flex flex-row p-0">
|
||||
<DingtalkDepartmentsTreePanel
|
||||
departmentsTree={this.state.departmentsTree}
|
||||
isTreeLoading={this.state.isTreeLoading}
|
||||
|
@@ -115,13 +115,14 @@ class DingtalkDepartmentsTreeNode extends Component {
|
||||
style={this.state.active ? {} : { opacity: 0 }}
|
||||
>
|
||||
<DropdownToggle
|
||||
tag='i'
|
||||
className='sf3-font sf3-font-more-vertical cursor-pointer attr-action-icon'
|
||||
tag='span'
|
||||
className='cursor-pointer right-icon'
|
||||
title={gettext('More operations')}
|
||||
aria-label={gettext('More operations')}
|
||||
data-toggle="dropdown"
|
||||
aria-expanded={this.state.dropdownOpen}
|
||||
>
|
||||
<i className="sf3-font sf3-font-more"></i>
|
||||
</DropdownToggle>
|
||||
<DropdownMenu className="drop-list">
|
||||
<DropdownItem
|
||||
|
@@ -12,19 +12,14 @@ const DingtalkDepartmentsTreePanelPropTypes = {
|
||||
};
|
||||
|
||||
class DingtalkDepartmentsTreePanel extends Component {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
}
|
||||
|
||||
render() {
|
||||
const { departmentsTree } = this.props;
|
||||
return (
|
||||
<div className="dir-content-nav">
|
||||
<div className="tree-view tree">
|
||||
<div className="tree-view p-4">
|
||||
{this.props.isTreeLoading ?
|
||||
<Loading/> :
|
||||
<div className="tree-node">
|
||||
<>
|
||||
{departmentsTree.length > 0 && departmentsTree.map((department, index) => {
|
||||
return (
|
||||
<DingtalkDepartmentsTreeNode
|
||||
@@ -38,7 +33,7 @@ class DingtalkDepartmentsTreePanel extends Component {
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -59,6 +59,10 @@ class WorkWeixinDepartments extends Component {
|
||||
|
||||
getWorkWeixinDepartmentsList = (departmentID) => {
|
||||
systemAdminAPI.sysAdminListWorkWeixinDepartments(departmentID).then((res) => {
|
||||
if (!res.data.department && res.data.errmsg) {
|
||||
toaster.danger(res.data.errmsg);
|
||||
return;
|
||||
}
|
||||
if (!departmentID) {
|
||||
let departmentsTree = this.getDepartmentsTree(res.data.department);
|
||||
this.setState({
|
||||
@@ -302,7 +306,7 @@ class WorkWeixinDepartments extends Component {
|
||||
<div className="cur-view-path">
|
||||
<h3 className="sf-heading">{'企业微信集成'}</h3>
|
||||
</div>
|
||||
<div className="cur-view-content d-flex flex-row">
|
||||
<div className="cur-view-content d-flex flex-row p-0">
|
||||
<WorkWeixinDepartmentsTreePanel
|
||||
departmentsTree={this.state.departmentsTree}
|
||||
isTreeLoading={this.state.isTreeLoading}
|
||||
|
@@ -115,13 +115,14 @@ class WorkWeixinDepartmentsTreeNode extends Component {
|
||||
style={this.state.active ? {} : { opacity: 0 }}
|
||||
>
|
||||
<DropdownToggle
|
||||
tag='i'
|
||||
className='sf3-font sf3-font-more-vertical cursor-pointer attr-action-icon'
|
||||
tag='span'
|
||||
className='cursor-pointer right-icon'
|
||||
title={gettext('More operations')}
|
||||
aria-label={gettext('More operations')}
|
||||
data-toggle="dropdown"
|
||||
aria-expanded={this.state.dropdownOpen}
|
||||
>
|
||||
<i className="sf3-font sf3-font-more"></i>
|
||||
</DropdownToggle>
|
||||
<DropdownMenu className="drop-list">
|
||||
<DropdownItem
|
||||
|
@@ -12,19 +12,14 @@ const WorkWeixinDepartmentsTreePanelPropTypes = {
|
||||
};
|
||||
|
||||
class WorkWeixinDepartmentsTreePanel extends Component {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
}
|
||||
|
||||
render() {
|
||||
const { departmentsTree } = this.props;
|
||||
return (
|
||||
<div className="dir-content-nav">
|
||||
<div className="tree-view tree">
|
||||
<div className="tree-view p-4">
|
||||
{this.props.isTreeLoading ?
|
||||
<Loading/> :
|
||||
<div className="tree-node">
|
||||
<>
|
||||
{departmentsTree.length > 0 && departmentsTree.map((department, index) => {
|
||||
return (
|
||||
<WorkWeixinDepartmentsTreeNode
|
||||
@@ -38,7 +33,7 @@ class WorkWeixinDepartmentsTreePanel extends Component {
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -18,5 +18,5 @@ CREATE TABLE IF NOT EXISTS OrgUploadRateLimit (
|
||||
UNIQUE INDEX(org_id)
|
||||
) ENGINE=INNODB;
|
||||
|
||||
ALTER TABLE RepoInfo ADD COLUMN IF NOT EXISTS type varchar(10);
|
||||
CREATE INDEX IF NOT EXISTS RepoInfoTypeIndex on RepoInfo (type);
|
||||
ALTER TABLE RepoInfo ADD COLUMN type varchar(10);
|
||||
CREATE INDEX RepoInfoTypeIndex on RepoInfo (type);
|
||||
|
@@ -89,9 +89,9 @@ CREATE TABLE IF NOT EXISTS `wiki_wiki2_publish` (
|
||||
KEY `ix_wiki2_publish_repo_id` (`repo_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
ALTER TABLE share_fileshare ADD COLUMN IF NOT EXISTS `user_scope` varchar(225) DEFAULT 'all_users';
|
||||
ALTER TABLE share_fileshare ADD COLUMN IF NOT EXISTS `authed_details` LONGTEXT DEFAULT NULL;
|
||||
ALTER TABLE share_fileshare ADD INDEX IF NOT EXISTS `idx_ctime` (`ctime`);
|
||||
ALTER TABLE share_fileshare ADD INDEX IF NOT EXISTS `idx_view_cnt` (`view_cnt`);
|
||||
ALTER TABLE share_fileshare ADD COLUMN `user_scope` varchar(225) DEFAULT 'all_users';
|
||||
ALTER TABLE share_fileshare ADD COLUMN `authed_details` LONGTEXT DEFAULT NULL;
|
||||
ALTER TABLE share_fileshare ADD INDEX `idx_ctime` (`ctime`);
|
||||
ALTER TABLE share_fileshare ADD INDEX `idx_view_cnt` (`view_cnt`);
|
||||
|
||||
ALTER TABLE profile_profile ADD COLUMN IF NOT EXISTS `is_manually_set_contact_email` tinyint(1) DEFAULT 0;
|
||||
ALTER TABLE profile_profile ADD COLUMN `is_manually_set_contact_email` tinyint(1) DEFAULT 0;
|
||||
|
Reference in New Issue
Block a user