diff --git a/rsconcept/frontend/src/models/miscellaneous.ts b/rsconcept/frontend/src/models/miscellaneous.ts index ea9dbb5c..8fbf2db6 100644 --- a/rsconcept/frontend/src/models/miscellaneous.ts +++ b/rsconcept/frontend/src/models/miscellaneous.ts @@ -37,6 +37,11 @@ export type FontStyle = 'controls' | 'main' | 'math' | 'math2'; export enum HelpTopic { MAIN = 'main', + DOCS = 'documentation', + RULES = 'rules', + PRIVACY = 'privacy', + API = 'api', + INTERFACE = 'user-interface', UI_LIBRARY = 'ui-library', UI_RS_MENU = 'ui-rsform-menu', @@ -62,10 +67,9 @@ export enum HelpTopic { RSL_TEMPLATES = 'rslang-templates', TERM_CONTROL = 'terminology-control', + ACCESS = 'access', VERSIONS = 'versions', - EXTEOR = 'exteor', - API = 'api', - PRIVACY = 'privacy' + EXTEOR = 'exteor' } /** @@ -74,6 +78,11 @@ export enum HelpTopic { export const topicParent: Map = new Map([ [HelpTopic.MAIN, HelpTopic.MAIN], + [HelpTopic.DOCS, HelpTopic.DOCS], + [HelpTopic.RULES, HelpTopic.DOCS], + [HelpTopic.API, HelpTopic.DOCS], + [HelpTopic.PRIVACY, HelpTopic.DOCS], + [HelpTopic.INTERFACE, HelpTopic.INTERFACE], [HelpTopic.UI_LIBRARY, HelpTopic.INTERFACE], [HelpTopic.UI_RS_MENU, HelpTopic.INTERFACE], @@ -99,16 +108,15 @@ export const topicParent: Map = new Map([ [HelpTopic.RSL_TEMPLATES, HelpTopic.RSLANG], [HelpTopic.TERM_CONTROL, HelpTopic.TERM_CONTROL], + [HelpTopic.ACCESS, HelpTopic.ACCESS], [HelpTopic.VERSIONS, HelpTopic.VERSIONS], - [HelpTopic.EXTEOR, HelpTopic.EXTEOR], - [HelpTopic.API, HelpTopic.API], - [HelpTopic.PRIVACY, HelpTopic.PRIVACY] + [HelpTopic.EXTEOR, HelpTopic.EXTEOR] ]); /** * Topics that can be folded. */ -export const foldableTopics = [HelpTopic.INTERFACE, HelpTopic.RSLANG, HelpTopic.CONCEPTUAL]; +export const foldableTopics = [HelpTopic.INTERFACE, HelpTopic.RSLANG, HelpTopic.CONCEPTUAL, HelpTopic.DOCS]; /** * Represents {@link IConstituenta} matching mode. diff --git a/rsconcept/frontend/src/pages/ManualsPage/TopicPage.tsx b/rsconcept/frontend/src/pages/ManualsPage/TopicPage.tsx index b8a1106a..54640a5f 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/TopicPage.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/TopicPage.tsx @@ -1,5 +1,6 @@ import { HelpTopic } from '@/models/miscellaneous'; +import HelpAccess from './items/HelpAccess'; import HelpAPI from './items/HelpAPI'; import HelpConcept from './items/HelpConcept'; import HelpConceptRelations from './items/HelpConceptRelations'; @@ -9,6 +10,7 @@ import HelpCstAttributes from './items/HelpCstAttributes'; import HelpCstClass from './items/HelpCstClass'; import HelpCstEditor from './items/HelpCstEditor'; import HelpCstStatus from './items/HelpCstStatus'; +import HelpDocs from './items/HelpDocs'; import HelpExteor from './items/HelpExteor'; import HelpFormulaTree from './items/HelpFormulaTree'; import HelpInterface from './items/HelpInterface'; @@ -24,6 +26,7 @@ import HelpRSLangInterpret from './items/HelpRSLangInterpret'; import HelpRSLangOperations from './items/HelpRSLangOperations'; import HelpRSLangTemplates from './items/HelpRSLangTemplates'; import HelpRSLangTypes from './items/HelpRSLangTypes'; +import HelpRules from './items/HelpRules'; import HelpTermGraph from './items/HelpTermGraph'; import HelpTerminologyControl from './items/HelpTerminologyControl'; import HelpVersions from './items/HelpVersions'; @@ -35,6 +38,11 @@ interface TopicPageProps { function TopicPage({ topic }: TopicPageProps) { if (topic === HelpTopic.MAIN) return ; + if (topic === HelpTopic.DOCS) return ; + if (topic === HelpTopic.RULES) return ; + if (topic === HelpTopic.PRIVACY) return ; + if (topic === HelpTopic.API) return ; + if (topic === HelpTopic.INTERFACE) return ; if (topic === HelpTopic.UI_LIBRARY) return ; if (topic === HelpTopic.UI_RS_MENU) return ; @@ -60,10 +68,9 @@ function TopicPage({ topic }: TopicPageProps) { if (topic === HelpTopic.RSL_TEMPLATES) return ; if (topic === HelpTopic.TERM_CONTROL) return ; + if (topic === HelpTopic.ACCESS) return ; if (topic === HelpTopic.VERSIONS) return ; if (topic === HelpTopic.EXTEOR) return ; - if (topic === HelpTopic.API) return ; - if (topic === HelpTopic.PRIVACY) return ; return null; } diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpAccess.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpAccess.tsx new file mode 100644 index 00000000..44897b7f --- /dev/null +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpAccess.tsx @@ -0,0 +1,10 @@ +function HelpAccess() { + return ( +
+

Организация доступов к схемам

+

TBD.

+
+ ); +} + +export default HelpAccess; diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpDocs.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpDocs.tsx new file mode 100644 index 00000000..47d68089 --- /dev/null +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpDocs.tsx @@ -0,0 +1,16 @@ +import { HelpTopic } from '@/models/miscellaneous'; + +import Subtopics from '../Subtopics'; + +function HelpDocs() { + return ( +
+

Документы

+

TBD.

+ + +
+ ); +} + +export default HelpDocs; diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx index 6d3162ee..ccee134d 100644 --- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpPortal.tsx @@ -39,14 +39,14 @@ function HelpPortal() {

Разделы Справки

{[ + HelpTopic.DOCS, HelpTopic.INTERFACE, HelpTopic.CONCEPTUAL, HelpTopic.RSLANG, HelpTopic.TERM_CONTROL, + HelpTopic.ACCESS, HelpTopic.VERSIONS, - HelpTopic.EXTEOR, - HelpTopic.API, - HelpTopic.PRIVACY + HelpTopic.EXTEOR ].map(topic => ( ))} diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpRules.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRules.tsx new file mode 100644 index 00000000..af9a6b72 --- /dev/null +++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpRules.tsx @@ -0,0 +1,10 @@ +function HelpRules() { + return ( +
+

Правила Портала

+

TBD.

+
+ ); +} + +export default HelpRules; diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/AccessToolbar.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/AccessToolbar.tsx index b0b3ca08..63c9fcf5 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/AccessToolbar.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/AccessToolbar.tsx @@ -61,7 +61,7 @@ function AccessToolbar({ visible, toggleVisible, readOnly, toggleReadOnly }: Acc disabled={accessLevel === UserLevel.READER || controller.isProcessing} /> - + ); diff --git a/rsconcept/frontend/src/pages/RegisterPage.tsx b/rsconcept/frontend/src/pages/RegisterPage.tsx index 0b77b348..1fadf108 100644 --- a/rsconcept/frontend/src/pages/RegisterPage.tsx +++ b/rsconcept/frontend/src/pages/RegisterPage.tsx @@ -21,6 +21,7 @@ import AnimateFade from '@/components/wrap/AnimateFade'; import ExpectedAnonymous from '@/components/wrap/ExpectedAnonymous'; import { useAuth } from '@/context/AuthContext'; import { useConceptNavigation } from '@/context/NavigationContext'; +import { HelpTopic } from '@/models/miscellaneous'; import { IUserSignupData } from '@/models/user'; import { globals, patterns } from '@/utils/constants'; @@ -54,8 +55,12 @@ function RegisterPage() { const [lastName, setLastName] = useState(''); const [acceptPrivacy, setAcceptPrivacy] = useState(false); + const [acceptRules, setAcceptRules] = useState(false); - const isValid = useMemo(() => acceptPrivacy && !!email && !!username, [acceptPrivacy, email, username]); + const isValid = useMemo( + () => acceptPrivacy && acceptRules && !!email && !!username, + [acceptPrivacy, acceptRules, email, username] + ); useEffect(() => { setError(undefined); @@ -180,7 +185,11 @@ function RegisterPage() {
- + +
+
+ +
diff --git a/rsconcept/frontend/src/utils/labels.ts b/rsconcept/frontend/src/utils/labels.ts index 18d6506b..697e0f8b 100644 --- a/rsconcept/frontend/src/utils/labels.ts +++ b/rsconcept/frontend/src/utils/labels.ts @@ -352,6 +352,11 @@ export function labelHelpTopic(topic: HelpTopic): string { switch (topic) { case HelpTopic.MAIN: return 'Портал'; + case HelpTopic.DOCS: return 'Документы'; + case HelpTopic.RULES: return 'Правила'; + case HelpTopic.PRIVACY: return 'Обработка данных'; + case HelpTopic.API: return 'REST API'; + case HelpTopic.INTERFACE: return 'Интерфейс'; case HelpTopic.UI_LIBRARY: return 'Библиотека'; case HelpTopic.UI_RS_MENU: return 'Меню схемы'; @@ -377,10 +382,9 @@ export function labelHelpTopic(topic: HelpTopic): string { case HelpTopic.RSL_TEMPLATES: return 'Шаблоны выражений'; case HelpTopic.TERM_CONTROL: return 'Терминологизация'; + case HelpTopic.ACCESS: return 'Доступы'; case HelpTopic.VERSIONS: return 'Версионирование'; case HelpTopic.EXTEOR: return 'Экстеор'; - case HelpTopic.API: return 'REST API'; - case HelpTopic.PRIVACY: return 'Конфиденциальность'; } } @@ -392,6 +396,11 @@ export function describeHelpTopic(topic: HelpTopic): string { switch (topic) { case HelpTopic.MAIN: return 'общая справка по порталу'; + case HelpTopic.DOCS: return 'нормативные и технические документы'; + case HelpTopic.RULES: return 'правила пользования Порталом'; + case HelpTopic.PRIVACY: return 'политика обработки персональных данных'; + case HelpTopic.API: return 'интерфейс для разработчиков'; + case HelpTopic.INTERFACE: return 'описание интерфейса пользователя'; case HelpTopic.UI_LIBRARY: return 'интерфейс Библиотеки схем'; case HelpTopic.UI_RS_MENU: return 'меню редактирования схемы'; @@ -417,10 +426,9 @@ export function describeHelpTopic(topic: HelpTopic): string { case HelpTopic.RSL_TEMPLATES: return 'работа с шаблонными выражениями'; case HelpTopic.TERM_CONTROL: return 'справка по контролю терминов и текстовым отсылкам'; + case HelpTopic.ACCESS: return 'организация доступов к схемам'; case HelpTopic.VERSIONS: return 'справка по управлению версиями схем'; case HelpTopic.EXTEOR: return 'справка по программе для экспликации "Экстеор" для Windows'; - case HelpTopic.API: return 'интерфейс для разработчиков'; - case HelpTopic.PRIVACY: return 'политика обработки персональных данных'; } }