+
+ }
+ className='h-full pl-2'
+ onClick={schemaMenu.toggle}
+ />
+
+ }
+ onClick={handleShare}
+ />
+ {controller.isMutable ? (
+ }
+ disabled={controller.isProcessing || accessLevel < UserLevel.OWNER}
+ onClick={handleDelete}
+ />
+ ) : null}
+ {user ? (
+ }
+ onClick={handleCreateNew}
+ />
+ ) : null}
+ }
+ onClick={() => router.push(urls.library)}
+ />
+
+
+
+ {user ? (
+
+
}
+ onClick={editMenu.toggle}
+ />
+
+ операции над ОСС
+
+
+ ) : null}
+
+ {user ? (
+
+
+ ) : accessLevel === UserLevel.OWNER ? (
+
+ ) : accessLevel === UserLevel.EDITOR ? (
+
+ ) : (
+
+ )
+ }
+ onClick={accessMenu.toggle}
+ />
+
+ }
+ onClick={() => handleChangeMode(UserLevel.READER)}
+ />
+ }
+ disabled={!model.isOwned && !model.schema?.editors.includes(user.id)}
+ onClick={() => handleChangeMode(UserLevel.EDITOR)}
+ />
+ }
+ disabled={!model.isOwned}
+ onClick={() => handleChangeMode(UserLevel.OWNER)}
+ />
+ }
+ disabled={!user?.is_staff}
+ onClick={() => handleChangeMode(UserLevel.ADMIN)}
+ />
+
+
+ ) : null}
+ {!user ? (
+
}
+ onClick={handleLogin}
+ />
+ ) : null}
+
+ );
+}
+
+export default OssTabsMenu;
diff --git a/rsconcept/frontend/src/pages/OssPage/index.tsx b/rsconcept/frontend/src/pages/OssPage/index.tsx
new file mode 100644
index 00000000..9f0c59d7
--- /dev/null
+++ b/rsconcept/frontend/src/pages/OssPage/index.tsx
@@ -0,0 +1 @@
+export { default } from './OssPage';
diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/index.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/index.tsx
deleted file mode 100644
index 7a05933c..00000000
--- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './EditorRSForm';
\ No newline at end of file
diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/AccessToolbar.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/AccessToolbar.tsx
similarity index 93%
rename from rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/AccessToolbar.tsx
rename to rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/AccessToolbar.tsx
index 63c9fcf5..fd7db157 100644
--- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/AccessToolbar.tsx
+++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/AccessToolbar.tsx
@@ -8,21 +8,19 @@ import Label from '@/components/ui/Label';
import MiniButton from '@/components/ui/MiniButton';
import Overlay from '@/components/ui/Overlay';
import { useAccessMode } from '@/context/AccessModeContext';
-import { AccessPolicy } from '@/models/library';
+import { AccessPolicy, ILibraryItemEditor } from '@/models/library';
import { HelpTopic } from '@/models/miscellaneous';
import { UserLevel } from '@/models/user';
-import { useRSEdit } from '../RSEditContext';
-
interface AccessToolbarProps {
visible: boolean;
toggleVisible: () => void;
readOnly: boolean;
toggleReadOnly: () => void;
+ controller: ILibraryItemEditor;
}
-function AccessToolbar({ visible, toggleVisible, readOnly, toggleReadOnly }: AccessToolbarProps) {
- const controller = useRSEdit();
+function AccessToolbar({ visible, toggleVisible, readOnly, toggleReadOnly, controller }: AccessToolbarProps) {
const { accessLevel } = useAccessMode();
const policy = useMemo(
() => controller.schema?.access_policy ?? AccessPolicy.PRIVATE,
diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorLibraryItem.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx
similarity index 95%
rename from rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorLibraryItem.tsx
rename to rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx
index a740763f..9d30da25 100644
--- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorLibraryItem.tsx
+++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorLibraryItem.tsx
@@ -10,21 +10,20 @@ import Tooltip from '@/components/ui/Tooltip';
import { useAccessMode } from '@/context/AccessModeContext';
import { useUsers } from '@/context/UsersContext';
import useDropdown from '@/hooks/useDropdown';
-import { ILibraryItemEx } from '@/models/library';
+import { ILibraryItemData, ILibraryItemEditor } from '@/models/library';
import { UserID, UserLevel } from '@/models/user';
import { prefixes } from '@/utils/constants';
import LabeledValue from '../../../components/ui/LabeledValue';
-import { useRSEdit } from '../RSEditContext';
interface EditorLibraryItemProps {
- item?: ILibraryItemEx;
+ item?: ILibraryItemData;
isModified?: boolean;
+ controller: ILibraryItemEditor;
}
-function EditorLibraryItem({ item, isModified }: EditorLibraryItemProps) {
+function EditorLibraryItem({ item, isModified, controller }: EditorLibraryItemProps) {
const { getUserLabel, users } = useUsers();
- const controller = useRSEdit();
const { accessLevel } = useAccessMode();
const intl = useIntl();
diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorRSForm.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
similarity index 86%
rename from rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorRSForm.tsx
rename to rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
index 4d65ddd2..15868e51 100644
--- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/EditorRSForm.tsx
+++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
@@ -8,20 +8,22 @@ import { useAuth } from '@/context/AuthContext';
import { useRSForm } from '@/context/RSFormContext';
import { globals } from '@/utils/constants';
+import { useRSEdit } from '../RSEditContext';
import EditorLibraryItem from './EditorLibraryItem';
import FormRSForm from './FormRSForm';
import RSFormStats from './RSFormStats';
import RSFormToolbar from './RSFormToolbar';
-interface EditorRSFormProps {
+interface EditorRSFormCardProps {
isModified: boolean;
setIsModified: React.Dispatch