mirror of
https://github.com/makeplane/plane.git
synced 2026-07-13 05:49:40 +02:00
Merge pull request #2172 from makeplane/sync/ce-ee
Sync: Community Changes
This commit is contained in:
@@ -135,10 +135,12 @@ class IssueAttachmentV2Endpoint(BaseAPIView):
|
||||
|
||||
# Get the presigned URL
|
||||
storage = S3Storage(request=request)
|
||||
|
||||
# Generate a presigned URL to share an S3 object
|
||||
presigned_url = storage.generate_presigned_post(
|
||||
object_name=asset_key, file_type=type, file_size=size_limit
|
||||
)
|
||||
|
||||
# Return the presigned URL
|
||||
return Response(
|
||||
{
|
||||
|
||||
@@ -388,6 +388,18 @@ ATTACHMENT_MIME_TYPES = [
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||
"text/plain",
|
||||
"application/rtf",
|
||||
"application/vnd.oasis.opendocument.spreadsheet",
|
||||
"application/vnd.oasis.opendocument.text",
|
||||
"application/vnd.oasis.opendocument.presentation",
|
||||
"application/vnd.oasis.opendocument.graphics",
|
||||
# Microsoft Visio
|
||||
"application/vnd.visio",
|
||||
# Netpbm format
|
||||
"image/x-portable-graymap",
|
||||
"image/x-portable-bitmap",
|
||||
"image/x-portable-pixmap",
|
||||
# Open Office Bae
|
||||
"application/vnd.oasis.opendocument.database",
|
||||
# Audio
|
||||
"audio/mpeg",
|
||||
"audio/wav",
|
||||
|
||||
@@ -87,12 +87,9 @@ export const EditorBubbleMenu: FC<EditorBubbleMenuProps> = (props: any) => {
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<BubbleMenu
|
||||
{...bubbleMenuProps}
|
||||
className="flex py-2 divide-x divide-custom-border-200 rounded-lg border border-custom-border-200 bg-custom-background-100 shadow-custom-shadow-rg"
|
||||
>
|
||||
<BubbleMenu {...bubbleMenuProps}>
|
||||
{!isSelecting && (
|
||||
<>
|
||||
<div className="flex py-2 divide-x divide-custom-border-200 rounded-lg border border-custom-border-200 bg-custom-background-100 shadow-custom-shadow-rg">
|
||||
<div className="px-2">
|
||||
{!props.editor.isActive("table") && (
|
||||
<BubbleMenuNodeSelector
|
||||
@@ -161,7 +158,7 @@ export const EditorBubbleMenu: FC<EditorBubbleMenuProps> = (props: any) => {
|
||||
editor.commands.setTextSelection(pos ?? 0);
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
</div>
|
||||
)}
|
||||
</BubbleMenu>
|
||||
);
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"create_a_draft": "Create a draft",
|
||||
"save_to_drafts": "Save to Drafts",
|
||||
"save": "Save",
|
||||
"update": "Update",
|
||||
"updating": "Updating",
|
||||
"create_new_issue": "Create new issue",
|
||||
"editor_is_not_ready_to_discard_changes": "Editor is not ready to discard changes",
|
||||
|
||||
@@ -282,6 +282,7 @@
|
||||
"create_a_draft": "Crear un borrador",
|
||||
"save_to_drafts": "Guardar en borradores",
|
||||
"save": "Guardar",
|
||||
"update": "Actualizar",
|
||||
"updating": "Actualizando",
|
||||
"create_new_issue": "Crear nuevo problema",
|
||||
"editor_is_not_ready_to_discard_changes": "El editor no está listo para descartar los cambios",
|
||||
|
||||
@@ -282,6 +282,7 @@
|
||||
"create_a_draft": "Créer un brouillon",
|
||||
"save_to_drafts": "Enregistrer dans les brouillons",
|
||||
"save": "Enregistrer",
|
||||
"update": "Mettre à jour",
|
||||
"updating": "Mise à jour",
|
||||
"create_new_issue": "Créer un nouveau problème",
|
||||
"editor_is_not_ready_to_discard_changes": "L'éditeur n'est pas prêt à annuler les modifications",
|
||||
|
||||
@@ -282,6 +282,7 @@
|
||||
"create_a_draft": "下書きを作成",
|
||||
"save_to_drafts": "下書きに保存",
|
||||
"save": "保存",
|
||||
"update": "更新",
|
||||
"updating": "更新中",
|
||||
"create_new_issue": "新しい問題を作成",
|
||||
"editor_is_not_ready_to_discard_changes": "エディターは変更を破棄する準備ができていません",
|
||||
|
||||
@@ -8,6 +8,7 @@ import { Briefcase, FileText } from "lucide-react";
|
||||
import { TActivityEntityData, THomeWidgetProps, TRecentActivityFilterKeys } from "@plane/types";
|
||||
// components
|
||||
import { LayersIcon } from "@plane/ui";
|
||||
import { ContentOverflowWrapper } from "@/components/core/content-overflow-HOC";
|
||||
import { useProject } from "@/hooks/store";
|
||||
import { WorkspaceService } from "@/plane-web/services";
|
||||
import { EmptyWorkspace } from "../empty-states";
|
||||
@@ -17,7 +18,6 @@ import { FiltersDropdown } from "./filters";
|
||||
import { RecentIssue } from "./issue";
|
||||
import { RecentPage } from "./page";
|
||||
import { RecentProject } from "./project";
|
||||
import { ContentOverflowWrapper } from "@/components/core/content-overflow-HOC";
|
||||
|
||||
const WIDGET_KEY = EWidgetKeys.RECENT_ACTIVITY;
|
||||
const workspaceService = new WorkspaceService();
|
||||
|
||||
@@ -67,11 +67,11 @@ export const IssueCommentCard: FC<TIssueCommentCard> = observer((props) => {
|
||||
defaultValues: { comment_html: comment?.comment_html },
|
||||
});
|
||||
|
||||
const onEnter = (formData: Partial<TIssueComment>) => {
|
||||
const onEnter = async (formData: Partial<TIssueComment>) => {
|
||||
if (isSubmitting || !comment) return;
|
||||
setIsEditing(false);
|
||||
|
||||
activityOperations.updateComment(comment.id, formData);
|
||||
await activityOperations.updateComment(comment.id, formData);
|
||||
|
||||
editorRef.current?.setEditorValue(formData?.comment_html ?? "<p></p>");
|
||||
showEditorRef.current?.setEditorValue(formData?.comment_html ?? "<p></p>");
|
||||
|
||||
@@ -34,6 +34,7 @@ const defaultValues: Partial<IWorkspaceView> = {
|
||||
display_properties: getComputedDisplayProperties(),
|
||||
display_filters: getComputedDisplayFilters({
|
||||
layout: EIssueLayoutTypes.SPREADSHEET,
|
||||
order_by: "-created_at",
|
||||
}),
|
||||
};
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ export interface IThemeStore {
|
||||
issueDetailSidebarCollapsed: boolean | undefined;
|
||||
epicDetailSidebarCollapsed: boolean | undefined;
|
||||
initiativesSidebarCollapsed: boolean | undefined;
|
||||
projectOverviewSidebarCollapsed: boolean | undefined;
|
||||
// actions
|
||||
toggleSidebar: (collapsed?: boolean) => void;
|
||||
toggleProfileSidebar: (collapsed?: boolean) => void;
|
||||
@@ -15,6 +16,7 @@ export interface IThemeStore {
|
||||
toggleIssueDetailSidebar: (collapsed?: boolean) => void;
|
||||
toggleEpicDetailSidebar: (collapsed?: boolean) => void;
|
||||
toggleInitiativesSidebar: (collapsed?: boolean) => void;
|
||||
toggleProjectOverviewSidebar: (collapsed?: boolean) => void;
|
||||
}
|
||||
|
||||
export class ThemeStore implements IThemeStore {
|
||||
@@ -25,6 +27,7 @@ export class ThemeStore implements IThemeStore {
|
||||
issueDetailSidebarCollapsed: boolean | undefined = undefined;
|
||||
epicDetailSidebarCollapsed: boolean | undefined = undefined;
|
||||
initiativesSidebarCollapsed: boolean | undefined = undefined;
|
||||
projectOverviewSidebarCollapsed: boolean | undefined = undefined;
|
||||
|
||||
constructor() {
|
||||
makeObservable(this, {
|
||||
@@ -35,6 +38,7 @@ export class ThemeStore implements IThemeStore {
|
||||
issueDetailSidebarCollapsed: observable.ref,
|
||||
epicDetailSidebarCollapsed: observable.ref,
|
||||
initiativesSidebarCollapsed: observable.ref,
|
||||
projectOverviewSidebarCollapsed: observable.ref,
|
||||
// action
|
||||
toggleSidebar: action,
|
||||
toggleProfileSidebar: action,
|
||||
@@ -42,6 +46,7 @@ export class ThemeStore implements IThemeStore {
|
||||
toggleIssueDetailSidebar: action,
|
||||
toggleEpicDetailSidebar: action,
|
||||
toggleInitiativesSidebar: action,
|
||||
toggleProjectOverviewSidebar: action,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -110,4 +115,13 @@ export class ThemeStore implements IThemeStore {
|
||||
}
|
||||
localStorage.setItem("initiatives_sidebar_collapsed", this.initiativesSidebarCollapsed.toString());
|
||||
};
|
||||
|
||||
toggleProjectOverviewSidebar = (collapsed?: boolean) => {
|
||||
if (collapsed === undefined) {
|
||||
this.projectOverviewSidebarCollapsed = !this.projectOverviewSidebarCollapsed;
|
||||
} else {
|
||||
this.projectOverviewSidebarCollapsed = collapsed;
|
||||
}
|
||||
localStorage.setItem("project_overview_sidebar_collapsed", this.projectOverviewSidebarCollapsed.toString());
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user