2020-10-20 16:24:25 +08:00
import React , { Fragment } from 'react' ;
import ReactDOM from 'react-dom' ;
import { Utils } from '../../utils/utils' ;
2021-04-19 16:01:33 +08:00
import { seafileAPI } from '../../utils/seafile-api' ;
2020-10-20 16:24:25 +08:00
import { gettext } from '../../utils/constants' ;
import Logo from '../../components/logo' ;
import Account from '../../components/common/account' ;
import FileUploader from './file-uploader' ;
import '../../css/upload-link.css' ;
const loggedUser = window . app . pageOptions . username ;
const {
dirName ,
sharedBy ,
noQuota ,
maxUploadFileSize ,
token ,
repoID ,
path
} = window . uploadLink ;
class SharedUploadLink extends React . Component {
2021-04-19 16:01:33 +08:00
onFileUploadSuccess = ( direntObject ) => {
const { name , size } = direntObject ;
seafileAPI . shareLinksUploadDone ( token , Utils . joinPath ( path , name ) ) ;
}
2020-10-20 16:24:25 +08:00
render ( ) {
return (
< div className = "h-100 d-flex flex-column" >
< div className = "top-header d-flex justify-content-between" >
< Logo / >
{ loggedUser && < Account / > }
< / d i v >
< div className = "o-auto" >
< div className = "py-4 px-6 mx-auto rounded" id = "upload-link-panel" >
< h3 className = "h5" dangerouslySetInnerHTML = { { _ _html : gettext ( 'Upload files to {folder_name_placeholder}' )
. replace ( '{folder_name_placeholder}' , ` <span class="op-target"> ${ Utils . HTMLescape ( dirName ) } </span> ` ) } } > < / h 3 >
< p className = "small shared-by" dangerouslySetInnerHTML = { { _ _html : ` ${ gettext ( 'shared by:' ) } ${ sharedBy . avatar } ${ sharedBy . name } ` } } > < / p >
{ noQuota ? (
< div className = "py-6 text-center" >
< span className = "sf3-font sf3-font-tips warning-icon" > < / s p a n >
< p > { gettext ( 'The owner of this library has run out of space.' ) } < / p >
< / d i v >
) : (
< Fragment >
< ol className = "small text-gray" >
< li className = "tip-list-item" > { gettext ( 'Folder upload is limited to Chrome, Firefox 50+, and Microsoft Edge.' ) } < / l i >
2022-06-22 12:32:20 +08:00
{ maxUploadFileSize && < li className = "tip-list-item" > { gettext ( 'File size should be smaller than {max_size_placeholder}.' ) . replace ( '{max_size_placeholder}' , Utils . bytesToSize ( maxUploadFileSize * 1000 * 1000 ) ) } < / l i > }
2020-10-20 16:24:25 +08:00
< / o l >
< div id = "upload-link-drop-zone" className = "text-center mt-2 mb-4" >
< span className = "sf3-font sf3-font-upload upload-icon" > < / s p a n >
< p className = "small text-gray mb-0" > { gettext ( 'Drag and drop files or folders here.' ) } < / p >
< / d i v >
< FileUploader
ref = { uploader => this . uploader = uploader }
dragAndDrop = { true }
token = { token }
repoID = { repoID }
path = { path }
2021-04-19 16:01:33 +08:00
onFileUploadSuccess = { this . onFileUploadSuccess }
2020-10-20 16:24:25 +08:00
/ >
< / F r a g m e n t >
) }
< / d i v >
< / d i v >
< / d i v >
) ;
}
}
ReactDOM . render (
< SharedUploadLink / > ,
document . getElementById ( 'wrapper' )
) ;