1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-27 15:54:39 +00:00
This commit is contained in:
Michael An
2025-06-17 15:44:01 +08:00
committed by GitHub
parent 6036d0471f
commit 473c686bd3
16 changed files with 37 additions and 37 deletions

View File

@@ -173,7 +173,7 @@ class NoticeItem extends React.Component {
let repoName = detail.repo_name;
let repoUrl = siteRoot + 'library/' + detail.repo_id + '/' + repoName + '/';
// 1. handle translate
let notice = gettext('{user} has transfered a library named {repo_link} to you.');
let notice = gettext('{user} has transferred a library named {repo_link} to you.');
// 2. handle xss(cross-site scripting)
notice = notice.replace('{user}', repoOwner);
notice = notice.replace('{repo_link}', `{tagA}${repoName}{/tagA}`);

View File

@@ -12,7 +12,7 @@ import '../../css/transfer-group-dialog.css';
const propTypes = {
groupID: PropTypes.number.isRequired,
onGroupTransfered: PropTypes.func.isRequired,
onGroupTransferred: PropTypes.func.isRequired,
toggleDialog: PropTypes.func.isRequired
};
@@ -41,8 +41,8 @@ class TransferGroupDialog extends React.Component {
return false;
}
seafileAPI.transferGroup(this.props.groupID, email).then((res) => {
toaster.success(gettext('Group has been transfered'));
this.props.onGroupTransfered(res.data);
toaster.success(gettext('Group has been transferred'));
this.props.onGroupTransferred(res.data);
this.props.toggleDialog();
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);

View File

@@ -17,7 +17,7 @@ export const DownloadFileProvider = ({ repoID, eventBus, children }) => {
const pathRef = useRef('');
const direntListRef = useRef([]);
const handelDownload = useCallback((path, direntList = []) => {
const handleDownload = useCallback((path, direntList = []) => {
const direntCount = direntList.length;
if (direntCount === 0) return;
if (direntCount === 1 && !direntList[0].is_dir) {
@@ -50,14 +50,14 @@ export const DownloadFileProvider = ({ repoID, eventBus, children }) => {
}, []);
useEffect(() => {
const unsubscribeDownloadFile = eventBus.subscribe(EVENT_BUS_TYPE.DOWNLOAD_FILE, handelDownload);
const unsubscribeDownloadFile = eventBus.subscribe(EVENT_BUS_TYPE.DOWNLOAD_FILE, handleDownload);
return () => {
unsubscribeDownloadFile();
};
}, [eventBus, handelDownload]);
}, [eventBus, handleDownload]);
return (
<DownloadFileContext.Provider value={{ eventBus, handelDownload }}>
<DownloadFileContext.Provider value={{ eventBus, handleDownload }}>
{children}
{isZipDialogOpen && (
<ModalPortal>

View File

@@ -70,7 +70,7 @@ const FileTagsDialog = ({ record, onToggle, onSubmit }) => {
setSelectedTags(newSelectedTags);
}, [selectedTags]);
const handelSubmit = useCallback(() => {
const handleSubmit = useCallback(() => {
if (isLoading || selectedTags.length === 0) {
onToggle();
return;
@@ -137,7 +137,7 @@ const FileTagsDialog = ({ record, onToggle, onSubmit }) => {
return (
<Modal
isOpen={true}
toggle={() => { handelSubmit(); }}
toggle={() => { handleSubmit(); }}
className="sf-file-tags"
backdropClassName="sf-file-tags-backdrop"
>

View File

@@ -41,7 +41,7 @@ const PeoplesDialog = ({ selectedImages, onToggle, onSubmit }) => {
}
}, [selectedPeopleIds]);
const handelSubmit = useCallback(() => {
const handleSubmit = useCallback(() => {
setSubmitting(true);
onSubmit(selectedPeopleIds, selectedImages, {
success_callback: onToggle,
@@ -83,7 +83,7 @@ const PeoplesDialog = ({ selectedImages, onToggle, onSubmit }) => {
</ModalBody>
<ModalFooter>
<Button color="secondary" onClick={() => onToggle()}>{gettext('Cancel')}</Button>
<Button color="primary" disabled={isSubmitting || !selectedPeopleIds.length} onClick={handelSubmit}>{gettext('Submit')}</Button>
<Button color="primary" disabled={isSubmitting || !selectedPeopleIds.length} onClick={handleSubmit}>{gettext('Submit')}</Button>
</ModalFooter>
</Modal>
);

View File

@@ -65,7 +65,7 @@ const AIIcon = () => {
setMenuShow(!isMenuShow);
}, [isMenuShow]);
const handelOperation = useCallback((op) => {
const handleOperation = useCallback((op) => {
const { value: opType, record } = op;
const recordId = getRecordIdFromRecord(record);
const parentDir = getParentDirFromRecord(record);
@@ -148,7 +148,7 @@ const AIIcon = () => {
{isMenuShow && (
<div className="sf-metadata-ai-dropdown-menu large">
<DropdownMenu>
{options.map(op => (<DropdownItem key={op.value} onClick={() => handelOperation(op)}>{op.label}</DropdownItem>))}
{options.map(op => (<DropdownItem key={op.value} onClick={() => handleOperation(op)}>{op.label}</DropdownItem>))}
</DropdownMenu>
</div>
)}

View File

@@ -4,7 +4,7 @@ import { SeahubSelect } from '../../components/common/select';
const Selector = ({ options, settingKey, value, defaultValue, onChange }) => {
const handelOnChange = useCallback((option) => {
const handleOnChange = useCallback((option) => {
const newValue = option.value;
if (newValue === value) return;
onChange(settingKey, newValue);
@@ -20,7 +20,7 @@ const Selector = ({ options, settingKey, value, defaultValue, onChange }) => {
classNamePrefix="sf-metadata-setting-selector"
value={selectedOption}
options={options}
onChange={handelOnChange}
onChange={handleOnChange}
isSearchable={false}
isClearable={false}
menuPortalTarget=".sf-metadata-view-setting-panel"

View File

@@ -21,7 +21,7 @@ const GalleryContextMenu = ({ selectedImages, onDelete, onDuplicate, addFolder,
const [isCopyDialogOpen, setIsCopyDialogOpen] = useState(false);
const [isPeoplesDialogShow, setPeoplesDialogShow] = useState(false);
const { handelDownload: handelDownloadAPI } = useDownloadFile();
const { handleDownload: handleDownloadAPI } = useDownloadFile();
const repoID = window.sfMetadataContext.getSetting('repoID');
const checkCanDeleteRow = window.sfMetadataContext.checkCanDeleteRow();
@@ -65,8 +65,8 @@ const GalleryContextMenu = ({ selectedImages, onDelete, onDuplicate, addFolder,
const name = image.parentDir === '/' ? image.name : `${image.parentDir}/${image.name}`;
return { name };
});
handelDownloadAPI('/', direntList);
}, [handelDownloadAPI, selectedImages]);
handleDownloadAPI('/', direntList);
}, [handleDownloadAPI, selectedImages]);
const handleOptionClick = useCallback(option => {
switch (option.value) {

View File

@@ -23,7 +23,7 @@ const KanbanContextMenu = ({ selectedCard, onDelete, onRename }) => {
const [isRenameDialogShow, setIsRenameDialogShow] = useState(false);
const { metadata } = useMetadataView();
const { handelDownload: handelDownloadAPI } = useDownloadFile();
const { handleDownload: handleDownloadAPI } = useDownloadFile();
const selectedRecord = useMemo(() => getRowById(metadata, selectedCard), [metadata, selectedCard]);
const isDir = useMemo(() => checkIsDir(selectedRecord), [selectedRecord]);
@@ -67,9 +67,9 @@ const KanbanContextMenu = ({ selectedCard, onDelete, onRename }) => {
});
}, [metadata, selectedCard, onRename]);
const handelDownload = useCallback(() => {
handelDownloadAPI(parentDir, [{ name: oldName, is_dir: isDir }]);
}, [handelDownloadAPI, parentDir, oldName, isDir]);
const handleDownload = useCallback(() => {
handleDownloadAPI(parentDir, [{ name: oldName, is_dir: isDir }]);
}, [handleDownloadAPI, parentDir, oldName, isDir]);
const handleOptionClick = useCallback((option) => {
if (!selectedCard) return;
@@ -86,7 +86,7 @@ const KanbanContextMenu = ({ selectedCard, onDelete, onRename }) => {
break;
}
case CONTEXT_MENU_KEY.DOWNLOAD: {
handelDownload(record);
handleDownload(record);
break;
}
case CONTEXT_MENU_KEY.DELETE: {
@@ -101,7 +101,7 @@ const KanbanContextMenu = ({ selectedCard, onDelete, onRename }) => {
break;
}
}
}, [metadata, repoID, selectedCard, onDelete, openRenameDialog, handelDownload]);
}, [metadata, repoID, selectedCard, onDelete, openRenameDialog, handleDownload]);
return (
<>

View File

@@ -18,7 +18,7 @@ const propTypes = {
unshareRepoToGroup: PropTypes.func,
onTransferRepo: PropTypes.func.isRequired,
onGroupNameChanged: PropTypes.func.isRequired,
onGroupTransfered: PropTypes.func.isRequired,
onGroupTransferred: PropTypes.func.isRequired,
onGroupDeleted: PropTypes.func.isRequired,
onLeavingGroup: PropTypes.func.isRequired
};
@@ -86,7 +86,7 @@ class GroupItem extends React.Component {
group={group}
addNewRepo={this.addNewRepo}
onGroupNameChanged={this.onGroupNameChanged}
onGroupTransfered={this.props.onGroupTransfered}
onGroupTransferred={this.props.onGroupTransferred}
onGroupDeleted={this.onGroupDeleted}
onLeavingGroup={this.onLeavingGroup}
/>

View File

@@ -23,7 +23,7 @@ const propTypes = {
group: PropTypes.object.isRequired,
addNewRepo: PropTypes.func.isRequired,
onGroupNameChanged: PropTypes.func.isRequired,
onGroupTransfered: PropTypes.func.isRequired,
onGroupTransferred: PropTypes.func.isRequired,
onGroupDeleted: PropTypes.func.isRequired,
onLeavingGroup: PropTypes.func.isRequired
};
@@ -241,7 +241,7 @@ class GroupOperationMenu extends React.Component {
{this.state.isTransferGroupDialogOpen &&
<TransferGroupDialog
groupID={groupID}
onGroupTransfered={this.props.onGroupTransfered}
onGroupTransferred={this.props.onGroupTransferred}
toggleDialog={this.toggleTransferGroupDialog}
/>
}

View File

@@ -239,7 +239,7 @@ class GroupView extends React.Component {
});
};
onGroupTransfered = (group) => {
onGroupTransferred = (group) => {
this.setState({
currentGroup: group
});
@@ -281,7 +281,7 @@ class GroupView extends React.Component {
group={currentGroup}
addNewRepo={this.addNewRepo}
onGroupNameChanged={this.onGroupNameChanged}
onGroupTransfered={this.onGroupTransfered}
onGroupTransferred={this.onGroupTransferred}
onGroupDeleted={this.onGroupDeleted}
onLeavingGroup={this.onLeavingGroup}
/>

View File

@@ -292,7 +292,7 @@ class Libraries extends Component {
this.setState({ groupList: newGroupList });
};
onGroupTransfered = (group) => {
onGroupTransferred = (group) => {
const { groupList } = this.state;
let newGroupList = [...groupList];
let targetGroup = newGroupList.find((item) => item.id === group.id);
@@ -487,7 +487,7 @@ class Libraries extends Component {
deleteRelatedGroupsRepos={this.deleteRelatedGroupsRepos}
addRepoToGroup={this.addRepoToGroup}
onGroupNameChanged={this.onGroupNameChanged}
onGroupTransfered={this.onGroupTransfered}
onGroupTransferred={this.onGroupTransferred}
onGroupDeleted={this.onGroupDeleted}
onLeavingGroup={this.onLeavingGroup}
unshareRepoToGroup={this.unshareRepoToGroup}

View File

@@ -1987,7 +1987,7 @@ class RepoOwner(APIView):
break
# send a signal when successfully transfered repo
# send a signal when successfully transferred repo
try:
repo_transfer.send(sender=None, org_id=org_id,
repo_owner=repo_owner, to_user=new_owner, repo_id=repo_id,

View File

@@ -397,7 +397,7 @@ class UserNotificationManager(models.Manager):
to_user, MSG_TYPE_GUEST_INVITATION_ACCEPTED, detail)
def add_repo_transfer_msg(self, to_user, detail):
"""Nofity ``to_user`` that a library has been transfered to him/her.
"""Nofity ``to_user`` that a library has been transferred to him/her.
"""
return self._add_user_notification(
to_user, MSG_TYPE_REPO_TRANSFER, detail)
@@ -926,7 +926,7 @@ class UserNotification(models.Model):
repo_id = d['repo_id']
repo_name = d['repo_name']
repo_url = reverse('lib_view', args=[repo_id, repo_name, ''])
msg = _('%(user)s has transfered a library named <a href="%(repo_url)s">%(repo_name)s</a> to you.') % {
msg = _('%(user)s has transferred a library named <a href="%(repo_url)s">%(repo_name)s</a> to you.') % {
'user': repo_owner_name,
'repo_url': repo_url,
'repo_name': repo_name,

View File

@@ -90,7 +90,7 @@ class UserOptionsManagerTest(BaseTestCase):
assert len(UserOptions.objects.filter(email=self.user.email,
option_key=KEY_WEBDAV_SECRET)) == 0
def test_file_udpates_email_interval(self, ):
def test_file_updates_email_interval(self, ):
assert len(UserOptions.objects.filter(
email=self.user.email, option_key=KEY_FILE_UPDATES_EMAIL_INTERVAL)) == 0