import React, { useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import { Card, CardBody } from 'reactstrap'; import AdminCustomizeContainer from '~/client/services/AdminCustomizeContainer'; import { toastSuccess, toastError } from '~/client/util/apiNotification'; import { withUnstatedContainers } from '../../UnstatedUtils'; import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow'; type Props = { adminCustomizeContainer: AdminCustomizeContainer } const CustomizeScriptSetting = (props: Props): JSX.Element => { const { adminCustomizeContainer } = props; const { t } = useTranslation(); const onClickSubmit = useCallback(async() => { try { await adminCustomizeContainer.updateCustomizeScript(); toastSuccess(t('toaster.update_successed', { target: t('admin:customize_settings.custom_script'), ns: 'commons' })); } catch (err) { toastError(err); } }, [t, adminCustomizeContainer]); const getExampleCode = useCallback(() => { return `console.log($('.main-container')); window.addEventListener('load', (event) => { console.log('config: ', appContainer.config); }); `; }, []); return (

{t('admin:customize_settings.custom_script')}

{t('admin:customize_settings.write_java')}
{t('admin:customize_settings.reflect_change')}
Placeholders:
(Available after load event)
$ jQuery instance
appContainer GROWI App unstated container
growiRenderer GROWI Renderer origin instance
growiPlugin GROWI Plugin Manager instance
Crowi Crowi legacy instance (jQuery based)
Examples:
{getExampleCode()}