From eda46213cb1ecddfd20c0b1512f594d00431fbb5 Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Tue, 26 Nov 2024 12:17:44 +0530 Subject: [PATCH 1/3] feat: workspace management from admin app --- admin/app/authentication/page.tsx | 8 +- admin/app/workspace/create/form.tsx | 211 ++++++++++++++++++ admin/app/workspace/create/page.tsx | 19 ++ admin/app/workspace/layout.tsx | 12 + admin/app/workspace/page.tsx | 159 +++++++++++++ .../components/admin-sidebar/help-section.tsx | 4 +- .../components/admin-sidebar/sidebar-menu.tsx | 8 +- admin/core/components/auth-header.tsx | 4 + admin/core/components/new-user-popup.tsx | 12 +- admin/core/components/workspace/index.ts | 1 + admin/core/components/workspace/list-item.tsx | 79 +++++++ admin/core/hooks/store/index.ts | 1 + admin/core/hooks/store/use-workspace.tsx | 10 + admin/core/services/workspace.service.ts | 52 +++++ admin/core/store/root.store.ts | 5 + admin/core/store/workspace.store.ts | 150 +++++++++++++ apiserver/plane/app/views/workspace/base.py | 18 +- .../plane/license/api/serializers/__init__.py | 1 + .../plane/license/api/serializers/user.py | 6 + .../license/api/serializers/workspace.py | 34 +++ apiserver/plane/license/api/views/__init__.py | 2 + apiserver/plane/license/api/views/instance.py | 6 + .../plane/license/api/views/workspace.py | 115 ++++++++++ .../management/commands/configure_instance.py | 6 + apiserver/plane/license/urls.py | 12 + packages/constants/index.ts | 3 +- packages/constants/workspace.ts | 23 ++ packages/types/src/instance/base.d.ts | 5 +- packages/types/src/instance/index.d.ts | 1 + packages/types/src/instance/workspace.d.ts | 1 + packages/types/src/workspace.d.ts | 5 + web/app/create-workspace/page.tsx | 13 +- .../onboarding/create-or-join-workspaces.tsx | 24 +- .../onboarding/create-workspace.tsx | 3 +- .../workspace/create-workspace-form.tsx | 3 +- .../workspace/settings/workspace-details.tsx | 4 +- .../components/workspace/sidebar/dropdown.tsx | 25 ++- web/core/constants/workspace.ts | 17 -- 38 files changed, 1008 insertions(+), 54 deletions(-) create mode 100644 admin/app/workspace/create/form.tsx create mode 100644 admin/app/workspace/create/page.tsx create mode 100644 admin/app/workspace/layout.tsx create mode 100644 admin/app/workspace/page.tsx create mode 100644 admin/core/components/workspace/index.ts create mode 100644 admin/core/components/workspace/list-item.tsx create mode 100644 admin/core/hooks/store/use-workspace.tsx create mode 100644 admin/core/services/workspace.service.ts create mode 100644 admin/core/store/workspace.store.ts create mode 100644 apiserver/plane/license/api/serializers/user.py create mode 100644 apiserver/plane/license/api/serializers/workspace.py create mode 100644 apiserver/plane/license/api/views/workspace.py create mode 100644 packages/constants/workspace.ts create mode 100644 packages/types/src/instance/workspace.d.ts diff --git a/admin/app/authentication/page.tsx b/admin/app/authentication/page.tsx index d37b35978e7..ca5d5ccf4c3 100644 --- a/admin/app/authentication/page.tsx +++ b/admin/app/authentication/page.tsx @@ -80,9 +80,11 @@ const InstanceAuthenticationPage = observer(() => { { - Boolean(parseInt(enableSignUpConfig)) === true - ? updateConfig("ENABLE_SIGNUP", "0") - : updateConfig("ENABLE_SIGNUP", "1"); + if (Boolean(parseInt(enableSignUpConfig)) === true) { + updateConfig("ENABLE_SIGNUP", "0"); + } else { + updateConfig("ENABLE_SIGNUP", "1"); + } }} size="sm" disabled={isSubmitting} diff --git a/admin/app/workspace/create/form.tsx b/admin/app/workspace/create/form.tsx new file mode 100644 index 00000000000..4faeebaf556 --- /dev/null +++ b/admin/app/workspace/create/form.tsx @@ -0,0 +1,211 @@ +import { useState, useEffect } from "react"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { Controller, useForm } from "react-hook-form"; +// constants +import { ORGANIZATION_SIZE, RESTRICTED_URLS } from "@plane/constants"; +// types +import { IWorkspace } from "@plane/types"; +// components +import { Button, CustomSelect, getButtonStyling, Input, setToast, TOAST_TYPE } from "@plane/ui"; +// helpers +import { WEB_BASE_URL } from "@/helpers/common.helper"; +// hooks +import { useWorkspace } from "@/hooks/store"; +// services +import { WorkspaceService } from "@/services/workspace.service"; + +const workspaceService = new WorkspaceService(); + +export const WorkspaceCreateForm = () => { + // router + const router = useRouter(); + // states + const [slugError, setSlugError] = useState(false); + const [invalidSlug, setInvalidSlug] = useState(false); + const [defaultValues, setDefaultValues] = useState>({ + name: "", + slug: "", + organization_size: "", + }); + // store hooks + const { createWorkspace } = useWorkspace(); + // form info + const { + handleSubmit, + control, + setValue, + getValues, + formState: { errors, isSubmitting, isValid }, + } = useForm({ defaultValues, mode: "onChange" }); + + const handleCreateWorkspace = async (formData: IWorkspace) => { + await workspaceService + .workspaceSlugCheck(formData.slug) + .then(async (res) => { + if (res.status === true && !RESTRICTED_URLS.includes(formData.slug)) { + setSlugError(false); + await createWorkspace(formData) + .then(async () => { + setToast({ + type: TOAST_TYPE.SUCCESS, + title: "Success!", + message: "Workspace created successfully.", + }); + router.push(`/workspace`); + }) + .catch(() => { + setToast({ + type: TOAST_TYPE.ERROR, + title: "Error!", + message: "Workspace could not be created. Please try again.", + }); + }); + } else setSlugError(true); + }) + .catch(() => { + setToast({ + type: TOAST_TYPE.ERROR, + title: "Error!", + message: "Some error occurred while creating workspace. Please try again.", + }); + }); + }; + + useEffect( + () => () => { + // when the component unmounts set the default values to whatever user typed in + setDefaultValues(getValues()); + }, + [getValues, setDefaultValues] + ); + + return ( +
+
+
+

Workspace Name

+
+ + /^[\w\s-]*$/.test(value) || `Name can only contain (" "), ( - ), ( _ ) & alphanumeric characters.`, + maxLength: { + value: 80, + message: "Workspace name should not exceed 80 characters", + }, + }} + render={({ field: { value, ref, onChange } }) => ( + { + onChange(e.target.value); + setValue("name", e.target.value); + setValue("slug", e.target.value.toLocaleLowerCase().trim().replace(/ /g, "-"), { + shouldValidate: true, + }); + }} + ref={ref} + hasError={Boolean(errors.name)} + placeholder="Enter workspace name..." + className="w-full" + /> + )} + /> + {errors?.name?.message} +
+
+
+

Workspace URL

+
+ {WEB_BASE_URL}/ + ( + { + if (/^[a-zA-Z0-9_-]+$/.test(e.target.value)) setInvalidSlug(false); + else setInvalidSlug(true); + onChange(e.target.value.toLowerCase()); + }} + ref={ref} + hasError={Boolean(errors.slug)} + placeholder="Enter workspace url" + className="block w-full rounded-md border-none bg-transparent !px-0 py-2 text-sm" + /> + )} + /> +
+ {slugError &&

Workspace URL is already taken!

} + {invalidSlug && ( +

{`URL can only contain ( - ), ( _ ) & alphanumeric characters.`}

+ )} + {errors.slug && {errors.slug.message}} +
+
+

What size is your organization?

+
+ ( + c === value) ?? ( + Select organization size + ) + } + buttonClassName="!border-[0.5px] !border-custom-border-200 !shadow-none" + input + optionsClassName="w-full" + > + {ORGANIZATION_SIZE.map((item) => ( + + {item} + + ))} + + )} + /> + {errors.organization_size && ( + {errors.organization_size.message} + )} +
+
+
+
+ + + Go back + +
+
+ ); +}; diff --git a/admin/app/workspace/create/page.tsx b/admin/app/workspace/create/page.tsx new file mode 100644 index 00000000000..22ba5538029 --- /dev/null +++ b/admin/app/workspace/create/page.tsx @@ -0,0 +1,19 @@ +"use client"; + +import { observer } from "mobx-react"; +// components +import { WorkspaceCreateForm } from "./form"; + +const WorkspaceCreatePage = observer(() => ( +
+
+
Create workspace
+
Create a new workspace for your team.
+
+
+ +
+
+)); + +export default WorkspaceCreatePage; diff --git a/admin/app/workspace/layout.tsx b/admin/app/workspace/layout.tsx new file mode 100644 index 00000000000..9f2a63c67d5 --- /dev/null +++ b/admin/app/workspace/layout.tsx @@ -0,0 +1,12 @@ +import { ReactNode } from "react"; +import { Metadata } from "next"; +// layouts +import { AdminLayout } from "@/layouts/admin-layout"; + +export const metadata: Metadata = { + title: "Workspace Management - Plane Web", +}; + +export default function WorkspaceManagementLayout({ children }: { children: ReactNode }) { + return {children}; +} diff --git a/admin/app/workspace/page.tsx b/admin/app/workspace/page.tsx new file mode 100644 index 00000000000..8042473090d --- /dev/null +++ b/admin/app/workspace/page.tsx @@ -0,0 +1,159 @@ +"use client"; + +import { useState } from "react"; +import { observer } from "mobx-react"; +import Link from "next/link"; +import useSWR from "swr"; +import { Loader as LoaderIcon } from "lucide-react"; +// types +import { TInstanceConfigurationKeys } from "@plane/types"; +// ui +import { Button, getButtonStyling, Loader, setPromiseToast, ToggleSwitch } from "@plane/ui"; +// components +import { WorkspaceListItem } from "@/components/workspace"; +// helpers +import { cn } from "@/helpers/common.helper"; +// hooks +import { useInstance, useWorkspace } from "@/hooks/store"; + +const WorkspaceManagementPage = observer(() => { + // states + const [isSubmitting, setIsSubmitting] = useState(false); + // store + const { formattedConfig, fetchInstanceConfigurations, updateInstanceConfigurations } = useInstance(); + const { + workspaceIds, + loader: workspaceLoader, + paginationInfo, + fetchWorkspaces, + fetchNextWorkspaces, + } = useWorkspace(); + // derived values + const disableWorkspaceCreation = formattedConfig?.DISABLE_WORKSPACE_CREATION ?? ""; + const hasNextPage = paginationInfo?.next_page_results && paginationInfo?.next_cursor !== undefined; + + // fetch data + useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations()); + useSWR("INSTANCE_WORKSPACES", () => fetchWorkspaces()); + + const updateConfig = async (key: TInstanceConfigurationKeys, value: string) => { + setIsSubmitting(true); + + const payload = { + [key]: value, + }; + + const updateConfigPromise = updateInstanceConfigurations(payload); + + setPromiseToast(updateConfigPromise, { + loading: "Saving configuration", + success: { + title: "Success", + message: () => "Configuration saved successfully", + }, + error: { + title: "Error", + message: () => "Failed to save configuration", + }, + }); + + await updateConfigPromise + .then(() => { + setIsSubmitting(false); + }) + .catch((err) => { + console.error(err); + setIsSubmitting(false); + }); + }; + + return ( +
+
+
+
Workspace management
+
Manage your workspaces and their settings.
+
+
+ + Create workspace + +
+
+
+
+ {formattedConfig ? ( +
+
+
+
Disable workspace creation
+
+ Toggling this on will disable workspace creation for all users. +
+
+
+
+
+ { + if (Boolean(parseInt(disableWorkspaceCreation)) === true) { + updateConfig("DISABLE_WORKSPACE_CREATION", "0"); + } else { + updateConfig("DISABLE_WORKSPACE_CREATION", "1"); + } + }} + size="sm" + disabled={isSubmitting} + /> +
+
+
+ ) : ( + + + + )} + {workspaceLoader !== "init-loader" ? ( + <> +
+
+ Workspaces ({workspaceIds.length}) +
+ {workspaceLoader && ["mutation", "pagination"].includes(workspaceLoader) && ( + + )} +
+
+ {workspaceIds.map((workspaceId) => ( + + ))} +
+ {hasNextPage && ( +
+ +
+ )} + + ) : ( + + + + + + + )} +
+
+
+ ); +}); + +export default WorkspaceManagementPage; diff --git a/admin/core/components/admin-sidebar/help-section.tsx b/admin/core/components/admin-sidebar/help-section.tsx index abba68e3eae..10d5cbd0dad 100644 --- a/admin/core/components/admin-sidebar/help-section.tsx +++ b/admin/core/components/admin-sidebar/help-section.tsx @@ -52,13 +52,13 @@ export const HelpSection: FC = observer(() => { )} >
- + - {!isSidebarCollapsed && "Redirect to plane"} + {!isSidebarCollapsed && "Redirect to Plane"} diff --git a/admin/core/components/admin-sidebar/sidebar-menu.tsx b/admin/core/components/admin-sidebar/sidebar-menu.tsx index c0f1d0bf22a..1bb6873716e 100644 --- a/admin/core/components/admin-sidebar/sidebar-menu.tsx +++ b/admin/core/components/admin-sidebar/sidebar-menu.tsx @@ -3,7 +3,7 @@ import { observer } from "mobx-react"; import Link from "next/link"; import { usePathname } from "next/navigation"; -import { Image, BrainCog, Cog, Lock, Mail } from "lucide-react"; +import { Image, BrainCog, Cog, Lock, Mail, Globe } from "lucide-react"; import { Tooltip } from "@plane/ui"; // hooks import { cn } from "@/helpers/common.helper"; @@ -17,6 +17,12 @@ const INSTANCE_ADMIN_LINKS = [ description: "Identify your instances and get key details", href: `/general/`, }, + { + Icon: Globe, + name: "Workspace", + description: "Manage your workspaces", + href: `/workspace/`, + }, { Icon: Mail, name: "Email", diff --git a/admin/core/components/auth-header.tsx b/admin/core/components/auth-header.tsx index e1de884cfc9..81365d7f0cf 100644 --- a/admin/core/components/auth-header.tsx +++ b/admin/core/components/auth-header.tsx @@ -33,6 +33,10 @@ export const InstanceHeader: FC = observer(() => { return "Github"; case "gitlab": return "GitLab"; + case "workspace": + return "Workspace"; + case "create": + return "Create"; default: return pathName.toUpperCase(); } diff --git a/admin/core/components/new-user-popup.tsx b/admin/core/components/new-user-popup.tsx index 9fc3938ff3a..8e1570781c4 100644 --- a/admin/core/components/new-user-popup.tsx +++ b/admin/core/components/new-user-popup.tsx @@ -1,13 +1,13 @@ "use client"; import React from "react"; +import { resolveGeneralTheme } from "helpers/common.helper"; import { observer } from "mobx-react"; import Image from "next/image"; +import Link from "next/link"; import { useTheme as nextUseTheme } from "next-themes"; // ui import { Button, getButtonStyling } from "@plane/ui"; -// helpers -import { WEB_BASE_URL, resolveGeneralTheme } from "helpers/common.helper"; // hooks import { useTheme } from "@/hooks/store"; // icons @@ -20,8 +20,6 @@ export const NewUserPopup: React.FC = observer(() => { // theme const { resolvedTheme } = nextUseTheme(); - const redirectionLink = encodeURI(WEB_BASE_URL + "/create-workspace"); - if (!isNewUserPopup) return <>; return (
@@ -30,12 +28,12 @@ export const NewUserPopup: React.FC = observer(() => {
Create workspace
Instance setup done! Welcome to Plane instance portal. Start your journey with by creating your first - workspace, you will need to login again. + workspace.
- + Create workspace - + diff --git a/admin/core/components/workspace/index.ts b/admin/core/components/workspace/index.ts new file mode 100644 index 00000000000..24950c4f20f --- /dev/null +++ b/admin/core/components/workspace/index.ts @@ -0,0 +1 @@ +export * from "./list-item"; diff --git a/admin/core/components/workspace/list-item.tsx b/admin/core/components/workspace/list-item.tsx new file mode 100644 index 00000000000..55faa2680e6 --- /dev/null +++ b/admin/core/components/workspace/list-item.tsx @@ -0,0 +1,79 @@ +import { observer } from "mobx-react"; +import Link from "next/link"; +import { ExternalLink } from "lucide-react"; +// helpers +import { Tooltip } from "@plane/ui"; +import { WEB_BASE_URL } from "@/helpers/common.helper"; +import { getFileURL } from "@/helpers/file.helper"; +// hooks +import { useWorkspace } from "@/hooks/store"; + +type TWorkspaceListItemProps = { + workspaceId: string; +}; + +export const WorkspaceListItem = observer(({ workspaceId }: TWorkspaceListItemProps) => { + // store hooks + const { getWorkspaceById } = useWorkspace(); + // derived values + const workspace = getWorkspaceById(workspaceId); + + if (!workspace) return null; + return ( + +
+ + {workspace?.logo_url && workspace.logo_url !== "" ? ( + Workspace Logo + ) : ( + (workspace?.name?.[0] ?? "...") + )} + +
+
+

{workspace.name}

+ +

[{workspace.slug}]

+
+
+ {workspace.owner.email && ( +
+

Owned by:

+

{workspace.owner.email}

+
+ )} +
+ {workspace.total_projects !== null && ( + +

Total projects:

+

{workspace.total_projects}

+
+ )} + {workspace.total_members !== null && ( + +

Total members:

+

{workspace.total_members}

+
+ )} +
+
+
+
+ +
+ + ); +}); diff --git a/admin/core/hooks/store/index.ts b/admin/core/hooks/store/index.ts index 7447064da70..ed1781299f9 100644 --- a/admin/core/hooks/store/index.ts +++ b/admin/core/hooks/store/index.ts @@ -1,3 +1,4 @@ export * from "./use-theme"; export * from "./use-instance"; export * from "./use-user"; +export * from "./use-workspace"; diff --git a/admin/core/hooks/store/use-workspace.tsx b/admin/core/hooks/store/use-workspace.tsx new file mode 100644 index 00000000000..e3bde92d530 --- /dev/null +++ b/admin/core/hooks/store/use-workspace.tsx @@ -0,0 +1,10 @@ +import { useContext } from "react"; +// store +import { StoreContext } from "@/lib/store-provider"; +import { IWorkspaceStore } from "@/store/workspace.store"; + +export const useWorkspace = (): IWorkspaceStore => { + const context = useContext(StoreContext); + if (context === undefined) throw new Error("useWorkspace must be used within StoreProvider"); + return context.workspace; +}; diff --git a/admin/core/services/workspace.service.ts b/admin/core/services/workspace.service.ts new file mode 100644 index 00000000000..1de24fd9b00 --- /dev/null +++ b/admin/core/services/workspace.service.ts @@ -0,0 +1,52 @@ +// types +import type { IWorkspace, TWorkspacePaginationInfo } from "@plane/types"; +// helpers +import { API_BASE_URL } from "@/helpers/common.helper"; +// services +import { APIService } from "@/services/api.service"; + +export class WorkspaceService extends APIService { + constructor() { + super(API_BASE_URL); + } + + /** + * @description Fetches all workspaces + * @returns Promise + */ + async getWorkspaces(nextPageCursor?: string): Promise { + return this.get("/api/instances/workspaces/", { + cursor: nextPageCursor, + }) + .then((response) => response.data) + .catch((error) => { + throw error?.response?.data; + }); + } + + /** + * @description Checks if a slug is available + * @param slug - string + * @returns Promise + */ + async workspaceSlugCheck(slug: string): Promise { + return this.get(`/api/instances/workspace-slug-check/?slug=${slug}`) + .then((response) => response?.data) + .catch((error) => { + throw error?.response?.data; + }); + } + + /** + * @description Creates a new workspace + * @param data - IWorkspace + * @returns Promise + */ + async createWorkspace(data: IWorkspace): Promise { + return this.post("/api/instances/workspaces/", data) + .then((response) => response.data) + .catch((error) => { + throw error?.response?.data; + }); + } +} diff --git a/admin/core/store/root.store.ts b/admin/core/store/root.store.ts index 4b25bcc6868..8c53061ab91 100644 --- a/admin/core/store/root.store.ts +++ b/admin/core/store/root.store.ts @@ -3,6 +3,7 @@ import { enableStaticRendering } from "mobx-react"; import { IInstanceStore, InstanceStore } from "./instance.store"; import { IThemeStore, ThemeStore } from "./theme.store"; import { IUserStore, UserStore } from "./user.store"; +import { IWorkspaceStore, WorkspaceStore } from "./workspace.store"; enableStaticRendering(typeof window === "undefined"); @@ -10,17 +11,20 @@ export abstract class CoreRootStore { theme: IThemeStore; instance: IInstanceStore; user: IUserStore; + workspace: IWorkspaceStore; constructor() { this.theme = new ThemeStore(this); this.instance = new InstanceStore(this); this.user = new UserStore(this); + this.workspace = new WorkspaceStore(this); } hydrate(initialData: any) { this.theme.hydrate(initialData.theme); this.instance.hydrate(initialData.instance); this.user.hydrate(initialData.user); + this.workspace.hydrate(initialData.workspace); } resetOnSignOut() { @@ -28,5 +32,6 @@ export abstract class CoreRootStore { this.instance = new InstanceStore(this); this.user = new UserStore(this); this.theme = new ThemeStore(this); + this.workspace = new WorkspaceStore(this); } } diff --git a/admin/core/store/workspace.store.ts b/admin/core/store/workspace.store.ts new file mode 100644 index 00000000000..dafe96760b4 --- /dev/null +++ b/admin/core/store/workspace.store.ts @@ -0,0 +1,150 @@ +import set from "lodash/set"; +import { action, observable, runInAction, makeObservable, computed } from "mobx"; +import { IWorkspace, TLoader, TPaginationInfo } from "@plane/types"; +// services +import { WorkspaceService } from "@/services/workspace.service"; +// root store +import { CoreRootStore } from "@/store/root.store"; + +export interface IWorkspaceStore { + // observables + loader: TLoader; + workspaces: Record; + paginationInfo: TPaginationInfo | undefined; + // computed + workspaceIds: string[]; + // helper actions + hydrate: (data: any) => void; + getWorkspaceById: (workspaceId: string) => IWorkspace | undefined; + // fetch actions + fetchWorkspaces: () => Promise; + fetchNextWorkspaces: () => Promise; + // curd actions + createWorkspace: (data: IWorkspace) => Promise; +} + +export class WorkspaceStore implements IWorkspaceStore { + // observables + loader: TLoader = "init-loader"; + workspaces: Record = {}; + paginationInfo: TPaginationInfo | undefined = undefined; + // services + workspaceService; + + constructor(private store: CoreRootStore) { + makeObservable(this, { + // observables + loader: observable, + workspaces: observable, + paginationInfo: observable, + // computed + workspaceIds: computed, + // helper actions + hydrate: action, + getWorkspaceById: action, + // fetch actions + fetchWorkspaces: action, + fetchNextWorkspaces: action, + // curd actions + createWorkspace: action, + }); + this.workspaceService = new WorkspaceService(); + } + + // computed + get workspaceIds() { + return Object.keys(this.workspaces); + } + + // helper actions + /** + * @description Hydrates the workspaces + * @param data - any + */ + hydrate = (data: any) => { + if (data) this.workspaces = data; + }; + + /** + * @description Gets a workspace by id + * @param workspaceId - string + * @returns IWorkspace | undefined + */ + getWorkspaceById = (workspaceId: string) => this.workspaces[workspaceId]; + + // fetch actions + /** + * @description Fetches all workspaces + * @returns Promise<> + */ + fetchWorkspaces = async (): Promise => { + try { + if (this.workspaceIds.length > 0) { + this.loader = "mutation"; + } else { + this.loader = "init-loader"; + } + const paginatedWorkspaceData = await this.workspaceService.getWorkspaces(); + runInAction(() => { + const { results, ...paginationInfo } = paginatedWorkspaceData; + results.forEach((workspace: IWorkspace) => { + set(this.workspaces, [workspace.id], workspace); + }); + set(this, "paginationInfo", paginationInfo); + }); + return paginatedWorkspaceData.results; + } catch (error) { + console.error("Error fetching workspaces", error); + throw error; + } finally { + this.loader = "loaded"; + } + }; + + /** + * @description Fetches the next page of workspaces + * @returns Promise + */ + fetchNextWorkspaces = async (): Promise => { + if (!this.paginationInfo || this.paginationInfo.next_page_results === false) return []; + try { + this.loader = "pagination"; + const paginatedWorkspaceData = await this.workspaceService.getWorkspaces(this.paginationInfo.next_cursor); + runInAction(() => { + const { results, ...paginationInfo } = paginatedWorkspaceData; + results.forEach((workspace: IWorkspace) => { + set(this.workspaces, [workspace.id], workspace); + }); + set(this, "paginationInfo", paginationInfo); + }); + return paginatedWorkspaceData.results; + } catch (error) { + console.error("Error fetching next workspaces", error); + throw error; + } finally { + this.loader = "loaded"; + } + }; + + // curd actions + /** + * @description Creates a new workspace + * @param data - IWorkspace + * @returns Promise + */ + createWorkspace = async (data: IWorkspace): Promise => { + try { + this.loader = "mutation"; + const workspace = await this.workspaceService.createWorkspace(data); + runInAction(() => { + set(this.workspaces, [workspace.id], workspace); + }); + return workspace; + } catch (error) { + console.error("Error creating workspace", error); + throw error; + } finally { + this.loader = "loaded"; + } + }; +} diff --git a/apiserver/plane/app/views/workspace/base.py b/apiserver/plane/app/views/workspace/base.py index 6ffb643a991..63c482f2071 100644 --- a/apiserver/plane/app/views/workspace/base.py +++ b/apiserver/plane/app/views/workspace/base.py @@ -1,6 +1,7 @@ # Python imports import csv import io +import os from datetime import date from dateutil.relativedelta import relativedelta @@ -38,7 +39,7 @@ from django.views.decorators.cache import cache_control from django.views.decorators.vary import vary_on_cookie from plane.utils.constants import RESTRICTED_WORKSPACE_SLUGS - +from plane.license.utils.instance_value import get_configuration_value class WorkSpaceViewSet(BaseViewSet): model = Workspace @@ -80,6 +81,21 @@ def get_queryset(self): def create(self, request): try: + DISABLE_WORKSPACE_CREATION, = get_configuration_value( + [ + { + "key": "DISABLE_WORKSPACE_CREATION", + "default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"), + }, + ] + ) + + if DISABLE_WORKSPACE_CREATION == "1": + return Response( + {"error": "Workspace creation is not allowed"}, + status=status.HTTP_403_FORBIDDEN, + ) + serializer = WorkSpaceSerializer(data=request.data) slug = request.data.get("slug", False) diff --git a/apiserver/plane/license/api/serializers/__init__.py b/apiserver/plane/license/api/serializers/__init__.py index 681dbeb5ca4..48ecd4536a9 100644 --- a/apiserver/plane/license/api/serializers/__init__.py +++ b/apiserver/plane/license/api/serializers/__init__.py @@ -2,3 +2,4 @@ from .configuration import InstanceConfigurationSerializer from .admin import InstanceAdminSerializer, InstanceAdminMeSerializer +from .workspace import WorkspaceSerializer \ No newline at end of file diff --git a/apiserver/plane/license/api/serializers/user.py b/apiserver/plane/license/api/serializers/user.py new file mode 100644 index 00000000000..8935a882f2b --- /dev/null +++ b/apiserver/plane/license/api/serializers/user.py @@ -0,0 +1,6 @@ +from .base import BaseSerializer +from plane.db.models import User +class UserLiteSerializer(BaseSerializer): + class Meta: + model = User + fields = ["id", "email", "first_name", "last_name",] diff --git a/apiserver/plane/license/api/serializers/workspace.py b/apiserver/plane/license/api/serializers/workspace.py new file mode 100644 index 00000000000..1d3bfa8905b --- /dev/null +++ b/apiserver/plane/license/api/serializers/workspace.py @@ -0,0 +1,34 @@ +# Third Party Imports +from rest_framework import serializers + +# Module imports +from .base import BaseSerializer +from .user import UserLiteSerializer +from plane.db.models import Workspace +from plane.utils.constants import RESTRICTED_WORKSPACE_SLUGS + + +class WorkspaceSerializer(BaseSerializer): + owner = UserLiteSerializer(read_only=True) + logo_url = serializers.CharField(read_only=True) + total_projects = serializers.IntegerField(read_only=True) + total_members = serializers.IntegerField(read_only=True) + + def validate_slug(self, value): + # Check if the slug is restricted + if value in RESTRICTED_WORKSPACE_SLUGS: + raise serializers.ValidationError("Slug is not valid") + return value + + class Meta: + model = Workspace + fields = "__all__" + read_only_fields = [ + "id", + "created_by", + "updated_by", + "created_at", + "updated_at", + "owner", + "logo_url", + ] diff --git a/apiserver/plane/license/api/views/__init__.py b/apiserver/plane/license/api/views/__init__.py index 9427ed15e59..d57ebf52c09 100644 --- a/apiserver/plane/license/api/views/__init__.py +++ b/apiserver/plane/license/api/views/__init__.py @@ -14,3 +14,5 @@ ) from .changelog import ChangeLogEndpoint + +from .workspace import InstanceWorkSpaceAvailabilityCheckEndpoint, InstanceWorkSpaceEndpoint diff --git a/apiserver/plane/license/api/views/instance.py b/apiserver/plane/license/api/views/instance.py index 883fb7c9722..0e2b64fc9b0 100644 --- a/apiserver/plane/license/api/views/instance.py +++ b/apiserver/plane/license/api/views/instance.py @@ -45,6 +45,7 @@ def get(self, request): # Get all the configuration ( ENABLE_SIGNUP, + DISABLE_WORKSPACE_CREATION, IS_GOOGLE_ENABLED, IS_GITHUB_ENABLED, GITHUB_APP_NAME, @@ -65,6 +66,10 @@ def get(self, request): "key": "ENABLE_SIGNUP", "default": os.environ.get("ENABLE_SIGNUP", "0"), }, + { + "key": "DISABLE_WORKSPACE_CREATION", + "default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"), + }, { "key": "IS_GOOGLE_ENABLED", "default": os.environ.get("IS_GOOGLE_ENABLED", "0"), @@ -125,6 +130,7 @@ def get(self, request): data = {} # Authentication data["enable_signup"] = ENABLE_SIGNUP == "1" + data["is_workspace_creation_disabled"] = DISABLE_WORKSPACE_CREATION == "1" data["is_google_enabled"] = IS_GOOGLE_ENABLED == "1" data["is_github_enabled"] = IS_GITHUB_ENABLED == "1" data["is_gitlab_enabled"] = IS_GITLAB_ENABLED == "1" diff --git a/apiserver/plane/license/api/views/workspace.py b/apiserver/plane/license/api/views/workspace.py new file mode 100644 index 00000000000..00c776c2b44 --- /dev/null +++ b/apiserver/plane/license/api/views/workspace.py @@ -0,0 +1,115 @@ +# Third party imports +from rest_framework.response import Response +from rest_framework import status +from django.db import IntegrityError +from django.db.models import OuterRef, Func, F + +# Module imports +from plane.app.views.base import BaseAPIView +from plane.license.api.permissions import InstanceAdminPermission +from plane.db.models import Workspace, WorkspaceMember, Project +from plane.license.api.serializers import WorkspaceSerializer +from plane.utils.constants import RESTRICTED_WORKSPACE_SLUGS + + +class InstanceWorkSpaceAvailabilityCheckEndpoint(BaseAPIView): + permission_classes = [InstanceAdminPermission] + + def get(self, request): + slug = request.GET.get("slug", False) + + if not slug or slug == "": + return Response( + {"error": "Workspace Slug is required"}, + status=status.HTTP_400_BAD_REQUEST, + ) + + workspace = ( + Workspace.objects.filter(slug=slug).exists() + or slug in RESTRICTED_WORKSPACE_SLUGS + ) + return Response({"status": not workspace}, status=status.HTTP_200_OK) + + +class InstanceWorkSpaceEndpoint(BaseAPIView): + model = Workspace + serializer_class = WorkspaceSerializer + permission_classes = [InstanceAdminPermission] + + def get(self, request): + project_count = ( + Project.objects.filter(workspace_id=OuterRef("id")) + .order_by() + .annotate(count=Func(F("id"), function="Count")) + .values("count") + ) + + member_count = ( + WorkspaceMember.objects.filter( + workspace=OuterRef("id"), member__is_bot=False, is_active=True + ).select_related("owner") + .order_by() + .annotate(count=Func(F("id"), function="Count")) + .values("count") + ) + + workspaces = Workspace.objects.annotate( + total_projects=project_count, + total_members=member_count, + ) + + # Add search functionality + search = request.query_params.get("search", None) + if search: + workspaces = workspaces.filter(name__icontains=search) + + return self.paginate( + request=request, + queryset=workspaces, + on_results=lambda results: WorkspaceSerializer( + results, many=True, + ).data, + max_per_page=5, + default_per_page=5, + ) + + def post(self, request): + try: + serializer = WorkspaceSerializer (data=request.data) + + slug = request.data.get("slug", False) + name = request.data.get("name", False) + + if not name or not slug: + return Response( + {"error": "Both name and slug are required"}, + status=status.HTTP_400_BAD_REQUEST, + ) + + if len(name) > 80 or len(slug) > 48: + return Response( + {"error": "The maximum length for name is 80 and for slug is 48"}, + status=status.HTTP_400_BAD_REQUEST, + ) + + if serializer.is_valid(raise_exception=True): + serializer.save(owner=request.user) + # Create Workspace member + _ = WorkspaceMember.objects.create( + workspace_id=serializer.data["id"], + member=request.user, + role=20, + company_role=request.data.get("company_role", ""), + ) + return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response( + [serializer.errors[error][0] for error in serializer.errors], + status=status.HTTP_400_BAD_REQUEST, + ) + + except IntegrityError as e: + if "already exists" in str(e): + return Response( + {"slug": "The workspace with the slug already exists"}, + status=status.HTTP_410_GONE, + ) diff --git a/apiserver/plane/license/management/commands/configure_instance.py b/apiserver/plane/license/management/commands/configure_instance.py index a1c27851e32..548c9c77ed0 100644 --- a/apiserver/plane/license/management/commands/configure_instance.py +++ b/apiserver/plane/license/management/commands/configure_instance.py @@ -29,6 +29,12 @@ def handle(self, *args, **options): "category": "AUTHENTICATION", "is_encrypted": False, }, + { + "key": "DISABLE_WORKSPACE_CREATION", + "value": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"), + "category": "WORKSPACE_MANAGEMENT", + "is_encrypted": False, + }, { "key": "ENABLE_EMAIL_PASSWORD", "value": os.environ.get("ENABLE_EMAIL_PASSWORD", "1"), diff --git a/apiserver/plane/license/urls.py b/apiserver/plane/license/urls.py index 50e6d0de896..842af09595f 100644 --- a/apiserver/plane/license/urls.py +++ b/apiserver/plane/license/urls.py @@ -12,6 +12,8 @@ InstanceAdminSignOutEndpoint, InstanceAdminUserSessionEndpoint, ChangeLogEndpoint, + InstanceWorkSpaceAvailabilityCheckEndpoint, + InstanceWorkSpaceEndpoint, ) urlpatterns = [ @@ -55,4 +57,14 @@ EmailCredentialCheckEndpoint.as_view(), name="email-credential-check", ), + path( + "workspace-slug-check/", + InstanceWorkSpaceAvailabilityCheckEndpoint.as_view(), + name="instance-workspace-availability", + ), + path( + "workspaces/", + InstanceWorkSpaceEndpoint.as_view(), + name="instance-workspace", + ), ] diff --git a/packages/constants/index.ts b/packages/constants/index.ts index 66089416f1e..85e95bf4e0c 100644 --- a/packages/constants/index.ts +++ b/packages/constants/index.ts @@ -1,2 +1,3 @@ export * from "./auth"; -export * from "./issue"; \ No newline at end of file +export * from "./issue"; +export * from "./workspace"; diff --git a/packages/constants/workspace.ts b/packages/constants/workspace.ts new file mode 100644 index 00000000000..32f36de1b96 --- /dev/null +++ b/packages/constants/workspace.ts @@ -0,0 +1,23 @@ +export const ORGANIZATION_SIZE = [ + "Just myself", + "2-10", + "11-50", + "51-200", + "201-500", + "500+", +]; + +export const RESTRICTED_URLS = [ + "404", + "accounts", + "api", + "create-workspace", + "error", + "god-mode", + "installations", + "invitations", + "onboarding", + "profile", + "spaces", + "workspace-invitations", +]; diff --git a/packages/types/src/instance/base.d.ts b/packages/types/src/instance/base.d.ts index 8095f4e01f3..41198b27c9c 100644 --- a/packages/types/src/instance/base.d.ts +++ b/packages/types/src/instance/base.d.ts @@ -4,6 +4,7 @@ import { TInstanceEmailConfigurationKeys, TInstanceImageConfigurationKeys, TInstanceAuthenticationKeys, + TInstanceWorkspaceConfigurationKeys, } from "./"; export interface IInstanceInfo { @@ -36,6 +37,7 @@ export interface IInstance { } export interface IInstanceConfig { + is_workspace_creation_disabled: boolean; is_google_enabled: boolean; is_github_enabled: boolean; is_gitlab_enabled: boolean; @@ -78,7 +80,8 @@ export type TInstanceConfigurationKeys = | TInstanceEmailConfigurationKeys | TInstanceImageConfigurationKeys | TInstanceAuthenticationKeys - | TInstanceIntercomConfigurationKeys; + | TInstanceIntercomConfigurationKeys + | TInstanceWorkspaceConfigurationKeys; export interface IInstanceConfiguration { id: string; diff --git a/packages/types/src/instance/index.d.ts b/packages/types/src/instance/index.d.ts index c68f196d35d..bc6474b832f 100644 --- a/packages/types/src/instance/index.d.ts +++ b/packages/types/src/instance/index.d.ts @@ -3,3 +3,4 @@ export * from "./auth"; export * from "./base"; export * from "./email"; export * from "./image"; +export * from "./workspace"; diff --git a/packages/types/src/instance/workspace.d.ts b/packages/types/src/instance/workspace.d.ts new file mode 100644 index 00000000000..15a7317d002 --- /dev/null +++ b/packages/types/src/instance/workspace.d.ts @@ -0,0 +1 @@ +export type TInstanceWorkspaceConfigurationKeys = "DISABLE_WORKSPACE_CREATION"; diff --git a/packages/types/src/workspace.d.ts b/packages/types/src/workspace.d.ts index 412083c4288..500eaa7b513 100644 --- a/packages/types/src/workspace.d.ts +++ b/packages/types/src/workspace.d.ts @@ -21,6 +21,7 @@ export interface IWorkspace { readonly updated_by: string; organization_size: string; total_issues: number; + total_projects?: number; } export interface IWorkspaceLite { @@ -222,3 +223,7 @@ export interface IWorkspaceProgressResponse { export interface IWorkspaceAnalyticsResponse { completion_chart: any; } + +export type TWorkspacePaginationInfo = TPaginationInfo & { + results: IWorkspace[]; +}; diff --git a/web/app/create-workspace/page.tsx b/web/app/create-workspace/page.tsx index 1a5625ad646..2d4dbea1eeb 100644 --- a/web/app/create-workspace/page.tsx +++ b/web/app/create-workspace/page.tsx @@ -9,7 +9,7 @@ import { IWorkspace } from "@plane/types"; // components import { CreateWorkspaceForm } from "@/components/workspace"; // hooks -import { useUser, useUserProfile } from "@/hooks/store"; +import { useInstance, useUser, useUserProfile } from "@/hooks/store"; import { useAppRouter } from "@/hooks/use-app-router"; // wrappers import { AuthenticationWrapper } from "@/lib/wrappers"; @@ -23,6 +23,7 @@ const CreateWorkspacePage = observer(() => { // store hooks const { data: currentUser } = useUser(); const { updateUserProfile } = useUserProfile(); + const { config } = useInstance(); // states const [defaultValues, setDefaultValues] = useState({ name: "", @@ -31,6 +32,8 @@ const CreateWorkspacePage = observer(() => { }); // hooks const { resolvedTheme } = useTheme(); + // derived values + const isWorkspaceCreationDisabled = config?.is_workspace_creation_disabled; const onSubmit = async (workspace: IWorkspace) => { await updateUserProfile({ last_workspace_id: workspace.id }).then(() => router.push(`/${workspace.slug}`)); @@ -38,6 +41,14 @@ const CreateWorkspacePage = observer(() => { const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; + if (isWorkspaceCreationDisabled) { + return ( +
+ Workspace creation is disabled. Please contact your instance admin. +
+ ); + } + return (
diff --git a/web/core/components/onboarding/create-or-join-workspaces.tsx b/web/core/components/onboarding/create-or-join-workspaces.tsx index 3bfc71a2be2..1ab949c4cc6 100644 --- a/web/core/components/onboarding/create-or-join-workspaces.tsx +++ b/web/core/components/onboarding/create-or-join-workspaces.tsx @@ -8,7 +8,7 @@ import { IWorkspaceMemberInvitation, TOnboardingSteps } from "@plane/types"; // components import { Invitations, OnboardingHeader, SwitchAccountDropdown, CreateWorkspace } from "@/components/onboarding"; // hooks -import { useUser } from "@/hooks/store"; +import { useInstance, useUser } from "@/hooks/store"; // assets import CreateJoinWorkspaceDark from "@/public/onboarding/create-join-workspace-dark.webp"; import CreateJoinWorkspace from "@/public/onboarding/create-join-workspace-light.webp"; @@ -32,8 +32,11 @@ export const CreateOrJoinWorkspaces: React.FC = observer((props) => { const [currentView, setCurrentView] = useState(null); // store hooks const { data: user } = useUser(); + const { config } = useInstance(); // hooks const { resolvedTheme } = useTheme(); + // derived values + const isWorkspaceCreationEnabled = config?.is_workspace_creation_disabled === false; useEffect(() => { if (invitations.length > 0) { @@ -66,12 +69,19 @@ export const CreateOrJoinWorkspaces: React.FC = observer((props) => { handleCurrentViewChange={() => setCurrentView(ECreateOrJoinWorkspaceViews.WORKSPACE_CREATE)} /> ) : currentView === ECreateOrJoinWorkspaceViews.WORKSPACE_CREATE ? ( - setCurrentView(ECreateOrJoinWorkspaceViews.WORKSPACE_JOIN)} - /> + isWorkspaceCreationEnabled ? ( + setCurrentView(ECreateOrJoinWorkspaceViews.WORKSPACE_JOIN)} + /> + ) : ( +
+ Workspace creation is disabled. Please complete onboarding through an invite or contact your instance + admin. +
+ ) ) : (
diff --git a/web/core/components/onboarding/create-workspace.tsx b/web/core/components/onboarding/create-workspace.tsx index d9d789ede16..b74bf814a31 100644 --- a/web/core/components/onboarding/create-workspace.tsx +++ b/web/core/components/onboarding/create-workspace.tsx @@ -3,13 +3,14 @@ import { useState } from "react"; import { observer } from "mobx-react"; import { Controller, useForm } from "react-hook-form"; +// constants +import { ORGANIZATION_SIZE, RESTRICTED_URLS } from "@plane/constants"; // types import { IUser, IWorkspace, TOnboardingSteps } from "@plane/types"; // ui import { Button, CustomSelect, Input, Spinner, TOAST_TYPE, setToast } from "@plane/ui"; // constants import { E_ONBOARDING, WORKSPACE_CREATED } from "@/constants/event-tracker"; -import { ORGANIZATION_SIZE, RESTRICTED_URLS } from "@/constants/workspace"; // hooks import { useEventTracker, useUserProfile, useUserSettings, useWorkspace } from "@/hooks/store"; // services diff --git a/web/core/components/workspace/create-workspace-form.tsx b/web/core/components/workspace/create-workspace-form.tsx index f9234290d34..efb65563e28 100644 --- a/web/core/components/workspace/create-workspace-form.tsx +++ b/web/core/components/workspace/create-workspace-form.tsx @@ -3,13 +3,14 @@ import { Dispatch, SetStateAction, useEffect, useState, FC } from "react"; import { observer } from "mobx-react"; import { Controller, useForm } from "react-hook-form"; +// constants +import { ORGANIZATION_SIZE, RESTRICTED_URLS } from "@plane/constants"; // types import { IWorkspace } from "@plane/types"; // ui import { Button, CustomSelect, Input, TOAST_TYPE, setToast } from "@plane/ui"; // constants import { WORKSPACE_CREATED } from "@/constants/event-tracker"; -import { ORGANIZATION_SIZE, RESTRICTED_URLS } from "@/constants/workspace"; // hooks import { useEventTracker, useWorkspace } from "@/hooks/store"; import { useAppRouter } from "@/hooks/use-app-router"; diff --git a/web/core/components/workspace/settings/workspace-details.tsx b/web/core/components/workspace/settings/workspace-details.tsx index dbcaf1ae9b0..8368705b5d5 100644 --- a/web/core/components/workspace/settings/workspace-details.tsx +++ b/web/core/components/workspace/settings/workspace-details.tsx @@ -4,6 +4,9 @@ import { useEffect, useState, FC } from "react"; import { observer } from "mobx-react"; import { Controller, useForm } from "react-hook-form"; import { Pencil } from "lucide-react"; +// constants +import { ORGANIZATION_SIZE } from "@plane/constants"; +// types import { IWorkspace } from "@plane/types"; // ui import { Button, CustomSelect, Input, TOAST_TYPE, setToast } from "@plane/ui"; @@ -12,7 +15,6 @@ import { LogoSpinner } from "@/components/common"; import { WorkspaceImageUploadModal } from "@/components/core"; // constants import { WORKSPACE_UPDATED } from "@/constants/event-tracker"; -import { ORGANIZATION_SIZE } from "@/constants/workspace"; // helpers import { getFileURL } from "@/helpers/file.helper"; import { copyUrlToClipboard } from "@/helpers/string.helper"; diff --git a/web/core/components/workspace/sidebar/dropdown.tsx b/web/core/components/workspace/sidebar/dropdown.tsx index a60a7d7e1b1..4e037ea3b27 100644 --- a/web/core/components/workspace/sidebar/dropdown.tsx +++ b/web/core/components/workspace/sidebar/dropdown.tsx @@ -17,7 +17,7 @@ import { GOD_MODE_URL, cn } from "@/helpers/common.helper"; // helpers import { getFileURL } from "@/helpers/file.helper"; // hooks -import { useAppTheme, useUser, useUserPermissions, useUserProfile, useWorkspace } from "@/hooks/store"; +import { useAppTheme, useInstance, useUser, useUserPermissions, useUserProfile, useWorkspace } from "@/hooks/store"; // plane web constants import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions"; import { WorkspaceLogo } from "../logo"; @@ -46,6 +46,7 @@ export const SidebarDropdown = observer(() => { // store hooks const { sidebarCollapsed, toggleSidebar } = useAppTheme(); const { data: currentUser } = useUser(); + const { config } = useInstance(); const { // updateCurrentUser, // isUserInstanceAdmin, @@ -53,6 +54,8 @@ export const SidebarDropdown = observer(() => { } = useUser(); const { updateUserProfile } = useUserProfile(); const { allowPermissions } = useUserPermissions(); + // derived values + const isWorkspaceCreationEnabled = config?.is_workspace_creation_disabled === false; const isUserInstanceAdmin = false; const { currentWorkspace: activeWorkspace, workspaces } = useWorkspace(); @@ -205,15 +208,17 @@ export const SidebarDropdown = observer(() => { )}
- - - - Create workspace - - + {isWorkspaceCreationEnabled && ( + + + + Create workspace + + + )} {userLinks(workspaceSlug?.toString() ?? "").map( (link, index) => allowPermissions(link.access, EUserPermissionsLevel.WORKSPACE) && ( diff --git a/web/core/constants/workspace.ts b/web/core/constants/workspace.ts index 405c680d725..3b523ffb4ed 100644 --- a/web/core/constants/workspace.ts +++ b/web/core/constants/workspace.ts @@ -29,8 +29,6 @@ export const ROLE_DETAILS = { }, }; -export const ORGANIZATION_SIZE = ["Just myself", "2-10", "11-50", "51-200", "201-500", "500+"]; - export const USER_ROLES = [ { value: "Product / Project Manager", label: "Product / Project Manager" }, { value: "Development / Engineering", label: "Development / Engineering" }, @@ -106,18 +104,3 @@ export const DEFAULT_GLOBAL_VIEWS_LIST: { label: "Subscribed", }, ]; - -export const RESTRICTED_URLS = [ - "404", - "accounts", - "api", - "create-workspace", - "error", - "god-mode", - "installations", - "invitations", - "onboarding", - "profile", - "spaces", - "workspace-invitations", -]; From 44e8d6c7f820bbb5fd0515f55f0b5d277c2d46ea Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Tue, 26 Nov 2024 20:24:18 +0530 Subject: [PATCH 2/3] chore: UI and UX copy improvements --- admin/app/ai/form.tsx | 7 +++- admin/app/authentication/github/form.tsx | 2 +- admin/app/authentication/gitlab/form.tsx | 2 +- admin/app/authentication/google/form.tsx | 2 +- admin/app/authentication/page.tsx | 4 +- admin/app/email/email-config-form.tsx | 8 ++-- admin/app/general/form.tsx | 7 ++-- admin/app/general/intercom.tsx | 4 +- admin/app/workspace/create/form.tsx | 33 +++++++-------- admin/app/workspace/create/page.tsx | 6 ++- admin/app/workspace/page.tsx | 40 ++++++++++++------- admin/ce/components/common/upgrade-button.tsx | 4 +- .../components/admin-sidebar/sidebar-menu.tsx | 20 +++++----- admin/core/components/workspace/list-item.tsx | 15 ++++--- .../plane/license/api/views/workspace.py | 4 +- packages/ui/src/icons/index.ts | 1 + packages/ui/src/icons/workspace-icon.tsx | 14 +++++++ web/app/create-workspace/page.tsx | 7 ++-- web/ce/helpers/instance.helper.ts | 7 ++++ .../onboarding/create-or-join-workspaces.tsx | 7 ++-- .../onboarding/create-workspace.tsx | 31 +++++++------- .../workspace/create-workspace-form.tsx | 34 ++++++++-------- .../components/workspace/sidebar/dropdown.tsx | 8 ++-- web/ee/helpers/instance.helper.ts | 1 + 24 files changed, 161 insertions(+), 107 deletions(-) create mode 100644 packages/ui/src/icons/workspace-icon.tsx create mode 100644 web/ce/helpers/instance.helper.ts create mode 100644 web/ee/helpers/instance.helper.ts diff --git a/admin/app/ai/form.tsx b/admin/app/ai/form.tsx index 510566e8021..4258a99fbb2 100644 --- a/admin/app/ai/form.tsx +++ b/admin/app/ai/form.tsx @@ -121,7 +121,12 @@ export const InstanceAIForm: FC = (props) => {
-
If you have a preferred AI models vendor, please get in touch with us.
+
+ If you have a preferred AI models vendor, please get in{" "} + + touch with us. + +
diff --git a/admin/app/authentication/github/form.tsx b/admin/app/authentication/github/form.tsx index afab9a3c513..23ba9ccd155 100644 --- a/admin/app/authentication/github/form.tsx +++ b/admin/app/authentication/github/form.tsx @@ -195,7 +195,7 @@ export const InstanceGithubConfigForm: FC = (props) => { Go back diff --git a/admin/app/authentication/gitlab/form.tsx b/admin/app/authentication/gitlab/form.tsx index 2d5782e10ba..1cc9794d377 100644 --- a/admin/app/authentication/gitlab/form.tsx +++ b/admin/app/authentication/gitlab/form.tsx @@ -191,7 +191,7 @@ export const InstanceGitlabConfigForm: FC = (props) => { Go back diff --git a/admin/app/authentication/google/form.tsx b/admin/app/authentication/google/form.tsx index cf579789520..61fe7af620c 100644 --- a/admin/app/authentication/google/form.tsx +++ b/admin/app/authentication/google/form.tsx @@ -192,7 +192,7 @@ export const InstanceGoogleConfigForm: FC = (props) => { Go back diff --git a/admin/app/authentication/page.tsx b/admin/app/authentication/page.tsx index ca5d5ccf4c3..dc6aa6a6dce 100644 --- a/admin/app/authentication/page.tsx +++ b/admin/app/authentication/page.tsx @@ -60,7 +60,7 @@ const InstanceAuthenticationPage = observer(() => {
Manage authentication modes for your instance
- Configure authentication modes for your team and restrict sign ups to be invite only. + Configure authentication modes for your team and restrict sign-ups to be invite only.
@@ -92,7 +92,7 @@ const InstanceAuthenticationPage = observer(() => {
-
Authentication modes
+
Available authentication modes
) : ( diff --git a/admin/app/email/email-config-form.tsx b/admin/app/email/email-config-form.tsx index 2cc24fc8969..73a1af17442 100644 --- a/admin/app/email/email-config-form.tsx +++ b/admin/app/email/email-config-form.tsx @@ -72,7 +72,7 @@ export const InstanceEmailForm: FC = (props) => { { key: "EMAIL_FROM", type: "text", - label: "Sender email address", + label: "Sender's email address", description: "This is the email address your users will see when getting emails from this instance. You will need to verify this address.", placeholder: "no-reply@projectplane.so", @@ -174,12 +174,12 @@ export const InstanceEmailForm: FC = (props) => {
-
+
-
Authentication (optional)
+
Authentication
- We recommend setting up a username password for your SMTP server + This is optional, but we recommend setting up a username and a password for your SMTP server.
diff --git a/admin/app/general/form.tsx b/admin/app/general/form.tsx index 4422ee91ffe..09aac8b4590 100644 --- a/admin/app/general/form.tsx +++ b/admin/app/general/form.tsx @@ -117,17 +117,18 @@ export const GeneralConfigurationForm: FC = observer(
- Allow Plane to collect anonymous usage events + Let Plane collect anonymous usage data
- We collect usage events without any PII to analyse and improve Plane.{" "} + No PII is collected.This anonymized data is used to understand how you use Plane and build new features + in line with{" "} - Know more. + our Telemetry Policy.
diff --git a/admin/app/general/intercom.tsx b/admin/app/general/intercom.tsx index aaeacfc0fe0..37f7e307114 100644 --- a/admin/app/general/intercom.tsx +++ b/admin/app/general/intercom.tsx @@ -60,9 +60,9 @@ export const IntercomConfig: FC = observer((props) => {
-
Talk to Plane
+
Chat with us
- Let your members chat with us via Intercom or another service. Toggling Telemetry off turns this off + Let your users chat with us via Intercom or another service. Toggling Telemetry off turns this off automatically.
diff --git a/admin/app/workspace/create/form.tsx b/admin/app/workspace/create/form.tsx index 4faeebaf556..bc4b2d42c56 100644 --- a/admin/app/workspace/create/form.tsx +++ b/admin/app/workspace/create/form.tsx @@ -84,18 +84,19 @@ export const WorkspaceCreateForm = () => {
-

Workspace Name

+

Name your workspace

- /^[\w\s-]*$/.test(value) || `Name can only contain (" "), ( - ), ( _ ) & alphanumeric characters.`, + /^[\w\s-]*$/.test(value) || + `Workspaces names can contain only (" "), ( - ), ( _ ) and alphanumeric characters.`, maxLength: { value: 80, - message: "Workspace name should not exceed 80 characters", + message: "Limit your name to 80 characters.", }, }} render={({ field: { value, ref, onChange } }) => ( @@ -112,7 +113,7 @@ export const WorkspaceCreateForm = () => { }} ref={ref} hasError={Boolean(errors.name)} - placeholder="Enter workspace name..." + placeholder="Something familiar and recognizable is always best." className="w-full" /> )} @@ -121,17 +122,17 @@ export const WorkspaceCreateForm = () => {
-

Workspace URL

+

Set your workspace's URL

{WEB_BASE_URL}/ ( @@ -146,32 +147,32 @@ export const WorkspaceCreateForm = () => { }} ref={ref} hasError={Boolean(errors.slug)} - placeholder="Enter workspace url" + placeholder="workspace-name" className="block w-full rounded-md border-none bg-transparent !px-0 py-2 text-sm" /> )} />
- {slugError &&

Workspace URL is already taken!

} + {slugError &&

This URL is taken. Try something else.

} {invalidSlug && ( -

{`URL can only contain ( - ), ( _ ) & alphanumeric characters.`}

+

{`URLs can contain only ( - ), ( _ ) and alphanumeric characters.`}

)} {errors.slug && {errors.slug.message}}
-

What size is your organization?

+

How many people will use this workspace?

( c === value) ?? ( - Select organization size + Select a range ) } buttonClassName="!border-[0.5px] !border-custom-border-200 !shadow-none" @@ -200,9 +201,9 @@ export const WorkspaceCreateForm = () => { disabled={!isValid} loading={isSubmitting} > - {isSubmitting ? "Creating" : "Create Workspace"} + {isSubmitting ? "Creating workspace" : "Create workspace"} - + Go back
diff --git a/admin/app/workspace/create/page.tsx b/admin/app/workspace/create/page.tsx index 22ba5538029..0186286a7b4 100644 --- a/admin/app/workspace/create/page.tsx +++ b/admin/app/workspace/create/page.tsx @@ -7,8 +7,10 @@ import { WorkspaceCreateForm } from "./form"; const WorkspaceCreatePage = observer(() => (
-
Create workspace
-
Create a new workspace for your team.
+
Create a new workspace on this instance.
+
+ You will need to invite users from Workspace Settings after you create this workspace. +
diff --git a/admin/app/workspace/page.tsx b/admin/app/workspace/page.tsx index 8042473090d..ef8a3c42d28 100644 --- a/admin/app/workspace/page.tsx +++ b/admin/app/workspace/page.tsx @@ -71,13 +71,10 @@ const WorkspaceManagementPage = observer(() => {
-
Workspace management
-
Manage your workspaces and their settings.
-
-
- - Create workspace - +
Workspaces on this instance
+
+ See all workspaces and control who can create them. +
@@ -86,9 +83,10 @@ const WorkspaceManagementPage = observer(() => {
-
Disable workspace creation
+
Prevent anyone else from creating a workspace.
- Toggling this on will disable workspace creation for all users. + Toggling this on will let only you create workspaces. You will have to invite users to new + workspaces.
@@ -116,13 +114,25 @@ const WorkspaceManagementPage = observer(() => { )} {workspaceLoader !== "init-loader" ? ( <> -
-
- Workspaces ({workspaceIds.length}) +
+
+
+ All workspaces on this instance{" "} + • {workspaceIds.length} + {workspaceLoader && ["mutation", "pagination"].includes(workspaceLoader) && ( + + )} +
+
+ You can't yet delete workspaces and you can only go to the workspace if you are an Admin or a + Member. +
+
+
+ + Create workspace +
- {workspaceLoader && ["mutation", "pagination"].includes(workspaceLoader) && ( - - )}
{workspaceIds.map((workspaceId) => ( diff --git a/admin/ce/components/common/upgrade-button.tsx b/admin/ce/components/common/upgrade-button.tsx index aa3c95fdbed..c2b264baeb9 100644 --- a/admin/ce/components/common/upgrade-button.tsx +++ b/admin/ce/components/common/upgrade-button.tsx @@ -9,8 +9,8 @@ import { getButtonStyling } from "@plane/ui"; import { cn } from "@/helpers/common.helper"; export const UpgradeButton: React.FC = () => ( - - Available on One + + Upgrade ); diff --git a/admin/core/components/admin-sidebar/sidebar-menu.tsx b/admin/core/components/admin-sidebar/sidebar-menu.tsx index 1bb6873716e..a985842e7f3 100644 --- a/admin/core/components/admin-sidebar/sidebar-menu.tsx +++ b/admin/core/components/admin-sidebar/sidebar-menu.tsx @@ -3,8 +3,8 @@ import { observer } from "mobx-react"; import Link from "next/link"; import { usePathname } from "next/navigation"; -import { Image, BrainCog, Cog, Lock, Mail, Globe } from "lucide-react"; -import { Tooltip } from "@plane/ui"; +import { Image, BrainCog, Cog, Lock, Mail } from "lucide-react"; +import { Tooltip, WorkspaceIcon } from "@plane/ui"; // hooks import { cn } from "@/helpers/common.helper"; import { useTheme } from "@/hooks/store"; @@ -14,37 +14,37 @@ const INSTANCE_ADMIN_LINKS = [ { Icon: Cog, name: "General", - description: "Identify your instances and get key details", + description: "Identify your instances and get key details.", href: `/general/`, }, { - Icon: Globe, - name: "Workspace", - description: "Manage your workspaces", + Icon: WorkspaceIcon, + name: "Workspaces", + description: "Manage all workspaces on this instance.", href: `/workspace/`, }, { Icon: Mail, name: "Email", - description: "Set up emails to your users", + description: "Configure your SMTP controls.", href: `/email/`, }, { Icon: Lock, name: "Authentication", - description: "Configure authentication modes", + description: "Configure authentication modes.", href: `/authentication/`, }, { Icon: BrainCog, name: "Artificial intelligence", - description: "Configure your OpenAI creds", + description: "Configure your OpenAI creds.", href: `/ai/`, }, { Icon: Image, name: "Images in Plane", - description: "Allow third-party image libraries", + description: "Allow third-party image libraries.", href: `/image/`, }, ]; diff --git a/admin/core/components/workspace/list-item.tsx b/admin/core/components/workspace/list-item.tsx index 55faa2680e6..9289140f7dc 100644 --- a/admin/core/components/workspace/list-item.tsx +++ b/admin/core/components/workspace/list-item.tsx @@ -44,8 +44,8 @@ export const WorkspaceListItem = observer(({ workspaceId }: TWorkspaceListItemPr
-

{workspace.name}

- +

{workspace.name}

/ +

[{workspace.slug}]

@@ -63,10 +63,13 @@ export const WorkspaceListItem = observer(({ workspaceId }: TWorkspaceListItemPr )} {workspace.total_members !== null && ( - -

Total members:

-

{workspace.total_members}

-
+ <> + • + +

Total members:

+

{workspace.total_members}

+
+ )}
diff --git a/apiserver/plane/license/api/views/workspace.py b/apiserver/plane/license/api/views/workspace.py index 00c776c2b44..af9e8773ad3 100644 --- a/apiserver/plane/license/api/views/workspace.py +++ b/apiserver/plane/license/api/views/workspace.py @@ -69,8 +69,8 @@ def get(self, request): on_results=lambda results: WorkspaceSerializer( results, many=True, ).data, - max_per_page=5, - default_per_page=5, + max_per_page=10, + default_per_page=10, ) def post(self, request): diff --git a/packages/ui/src/icons/index.ts b/packages/ui/src/icons/index.ts index d1cc6af038d..91ae0e2f190 100644 --- a/packages/ui/src/icons/index.ts +++ b/packages/ui/src/icons/index.ts @@ -33,3 +33,4 @@ export * from "./in-progress-icon"; export * from "./done-icon"; export * from "./pending-icon"; export * from "./pi-chat"; +export * from "./workspace-icon"; diff --git a/packages/ui/src/icons/workspace-icon.tsx b/packages/ui/src/icons/workspace-icon.tsx new file mode 100644 index 00000000000..07872b264ca --- /dev/null +++ b/packages/ui/src/icons/workspace-icon.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import { ISvgIcons } from "./type"; + +export const WorkspaceIcon: React.FC = ({ className }) => ( + + + +); diff --git a/web/app/create-workspace/page.tsx b/web/app/create-workspace/page.tsx index 2d4dbea1eeb..100ea412441 100644 --- a/web/app/create-workspace/page.tsx +++ b/web/app/create-workspace/page.tsx @@ -9,10 +9,12 @@ import { IWorkspace } from "@plane/types"; // components import { CreateWorkspaceForm } from "@/components/workspace"; // hooks -import { useInstance, useUser, useUserProfile } from "@/hooks/store"; +import { useUser, useUserProfile } from "@/hooks/store"; import { useAppRouter } from "@/hooks/use-app-router"; // wrappers import { AuthenticationWrapper } from "@/lib/wrappers"; +// plane web helpers +import { getIsWorkspaceCreationDisabled } from "@/plane-web/helpers/instance.helper"; // images import BlackHorizontalLogo from "@/public/plane-logos/black-horizontal-with-blue-logo.png"; import WhiteHorizontalLogo from "@/public/plane-logos/white-horizontal-with-blue-logo.png"; @@ -23,7 +25,6 @@ const CreateWorkspacePage = observer(() => { // store hooks const { data: currentUser } = useUser(); const { updateUserProfile } = useUserProfile(); - const { config } = useInstance(); // states const [defaultValues, setDefaultValues] = useState({ name: "", @@ -33,7 +34,7 @@ const CreateWorkspacePage = observer(() => { // hooks const { resolvedTheme } = useTheme(); // derived values - const isWorkspaceCreationDisabled = config?.is_workspace_creation_disabled; + const isWorkspaceCreationDisabled = getIsWorkspaceCreationDisabled(); const onSubmit = async (workspace: IWorkspace) => { await updateUserProfile({ last_workspace_id: workspace.id }).then(() => router.push(`/${workspace.slug}`)); diff --git a/web/ce/helpers/instance.helper.ts b/web/ce/helpers/instance.helper.ts new file mode 100644 index 00000000000..622ef4af7e3 --- /dev/null +++ b/web/ce/helpers/instance.helper.ts @@ -0,0 +1,7 @@ +import { store } from "@/lib/store-context"; + +export const getIsWorkspaceCreationDisabled = () => { + const instanceConfig = store.instance.config; + + return instanceConfig?.is_workspace_creation_disabled; +}; diff --git a/web/core/components/onboarding/create-or-join-workspaces.tsx b/web/core/components/onboarding/create-or-join-workspaces.tsx index 1ab949c4cc6..0cb42bdfa18 100644 --- a/web/core/components/onboarding/create-or-join-workspaces.tsx +++ b/web/core/components/onboarding/create-or-join-workspaces.tsx @@ -8,7 +8,9 @@ import { IWorkspaceMemberInvitation, TOnboardingSteps } from "@plane/types"; // components import { Invitations, OnboardingHeader, SwitchAccountDropdown, CreateWorkspace } from "@/components/onboarding"; // hooks -import { useInstance, useUser } from "@/hooks/store"; +import { useUser } from "@/hooks/store"; +// plane web helpers +import { getIsWorkspaceCreationDisabled } from "@/plane-web/helpers/instance.helper"; // assets import CreateJoinWorkspaceDark from "@/public/onboarding/create-join-workspace-dark.webp"; import CreateJoinWorkspace from "@/public/onboarding/create-join-workspace-light.webp"; @@ -32,11 +34,10 @@ export const CreateOrJoinWorkspaces: React.FC = observer((props) => { const [currentView, setCurrentView] = useState(null); // store hooks const { data: user } = useUser(); - const { config } = useInstance(); // hooks const { resolvedTheme } = useTheme(); // derived values - const isWorkspaceCreationEnabled = config?.is_workspace_creation_disabled === false; + const isWorkspaceCreationEnabled = getIsWorkspaceCreationDisabled() === false; useEffect(() => { if (invitations.length > 0) { diff --git a/web/core/components/onboarding/create-workspace.tsx b/web/core/components/onboarding/create-workspace.tsx index b74bf814a31..56cbb14e372 100644 --- a/web/core/components/onboarding/create-workspace.tsx +++ b/web/core/components/onboarding/create-workspace.tsx @@ -155,18 +155,19 @@ export const CreateWorkspace: React.FC = observer((props) => { className="text-sm text-onboarding-text-300 font-medium after:content-['*'] after:ml-0.5 after:text-red-500" htmlFor="name" > - Workspace name + Name your workspace - /^[\w\s-]*$/.test(value) || `Name can only contain (" "), ( - ), ( _ ) & alphanumeric characters.`, + /^[\w\s-]*$/.test(value) || + `Workspaces names can contain only (" "), ( - ), ( _ ) and alphanumeric characters.`, maxLength: { value: 80, - message: "Workspace name should not exceed 80 characters", + message: "Limit your name to 80 characters.", }, }} render={({ field: { value, ref, onChange } }) => ( @@ -183,7 +184,7 @@ export const CreateWorkspace: React.FC = observer((props) => { shouldValidate: true, }); }} - placeholder="Enter workspace name..." + placeholder="Something familiar and recognizable is always best." ref={ref} hasError={Boolean(errors.name)} className="w-full border-onboarding-border-100 placeholder:text-custom-text-400" @@ -199,16 +200,16 @@ export const CreateWorkspace: React.FC = observer((props) => { className="text-sm text-onboarding-text-300 font-medium after:content-['*'] after:ml-0.5 after:text-red-500" htmlFor="slug" > - Workspace URL + Set your workspace's URL ( @@ -224,20 +225,22 @@ export const CreateWorkspace: React.FC = observer((props) => { type="text" value={value.toLocaleLowerCase().trim().replace(/ /g, "-")} onChange={(e) => { - /^[a-zA-Z0-9_-]+$/.test(e.target.value) ? setInvalidSlug(false) : setInvalidSlug(true); + if (/^[a-zA-Z0-9_-]+$/.test(e.target.value)) setInvalidSlug(false); + else setInvalidSlug(true); onChange(e.target.value.toLowerCase()); }} ref={ref} hasError={Boolean(errors.slug)} + placeholder="workspace-name" className="w-full border-none !px-0" />
)} />

You can only edit the slug of the URL

- {slugError &&

Workspace URL is already taken!

} + {slugError &&

This URL is taken. Try something else.

} {invalidSlug && ( -

{`URL can only contain ( - ), ( _ ) & alphanumeric characters.`}

+

{`URLs can contain only ( - ), ( _ ) and alphanumeric characters.`}

)} {errors.slug && {errors.slug.message}}
@@ -247,20 +250,20 @@ export const CreateWorkspace: React.FC = observer((props) => { className="text-sm text-onboarding-text-300 font-medium after:content-['*'] after:ml-0.5 after:text-red-500" htmlFor="organization_size" > - Company size + How many people will use this workspace?
( c === value) ?? ( - Select organization size + Select a range ) } buttonClassName="!border-[0.5px] !border-onboarding-border-100 !shadow-none !rounded-md" diff --git a/web/core/components/workspace/create-workspace-form.tsx b/web/core/components/workspace/create-workspace-form.tsx index efb65563e28..72568cd5d1d 100644 --- a/web/core/components/workspace/create-workspace-form.tsx +++ b/web/core/components/workspace/create-workspace-form.tsx @@ -41,8 +41,8 @@ export const CreateWorkspaceForm: FC = observer((props) => { setDefaultValues, secondaryButton, primaryButtonText = { - loading: "Creating...", - default: "Create Workspace", + loading: "Creating workspace", + default: "Create workspace", }, } = props; // states @@ -125,7 +125,7 @@ export const CreateWorkspaceForm: FC = observer((props) => {
@@ -133,12 +133,13 @@ export const CreateWorkspaceForm: FC = observer((props) => { control={control} name="name" rules={{ - required: "Workspace name is required", + required: "This is a required field.", validate: (value) => - /^[\w\s-]*$/.test(value) || `Name can only contain (" "), ( - ), ( _ ) & alphanumeric characters.`, + /^[\w\s-]*$/.test(value) || + `Workspaces names can contain only (" "), ( - ), ( _ ) and alphanumeric characters.`, maxLength: { value: 80, - message: "Workspace name should not exceed 80 characters", + message: "Limit your name to 80 characters.", }, }} render={({ field: { value, ref, onChange } }) => ( @@ -155,7 +156,7 @@ export const CreateWorkspaceForm: FC = observer((props) => { }} ref={ref} hasError={Boolean(errors.name)} - placeholder="Enter workspace name..." + placeholder="Something familiar and recognizable is always best." className="w-full" /> )} @@ -165,7 +166,7 @@ export const CreateWorkspaceForm: FC = observer((props) => {
@@ -174,10 +175,10 @@ export const CreateWorkspaceForm: FC = observer((props) => { control={control} name="slug" rules={{ - required: "Workspace slug is required", + required: "This is a required field.", maxLength: { value: 48, - message: "Workspace slug should not exceed 48 characters", + message: "Limit your URL to 48 characters.", }, }} render={({ field: { onChange, value, ref } }) => ( @@ -186,12 +187,13 @@ export const CreateWorkspaceForm: FC = observer((props) => { type="text" value={value.toLocaleLowerCase().trim().replace(/ /g, "-")} onChange={(e) => { - /^[a-zA-Z0-9_-]+$/.test(e.target.value) ? setInvalidSlug(false) : setInvalidSlug(true); + if (/^[a-zA-Z0-9_-]+$/.test(e.target.value)) setInvalidSlug(false); + else setInvalidSlug(true); onChange(e.target.value.toLowerCase()); }} ref={ref} hasError={Boolean(errors.slug)} - placeholder="Enter workspace url..." + placeholder="workspace-name" className="block w-full rounded-md border-none bg-transparent !px-0 py-2 text-sm" /> )} @@ -199,26 +201,26 @@ export const CreateWorkspaceForm: FC = observer((props) => {
{slugError &&

Workspace URL is already taken!

} {invalidSlug && ( -

{`URL can only contain ( - ), ( _ ) & alphanumeric characters.`}

+

{`URLs can contain only ( - ), ( _ ) and alphanumeric characters.`}

)} {errors.slug && {errors.slug.message}}
- What size is your organization?* + How many people will use this workspace?*
( c === value) ?? ( - Select organization size + Select a range ) } buttonClassName="!border-[0.5px] !border-custom-border-200 !shadow-none" diff --git a/web/core/components/workspace/sidebar/dropdown.tsx b/web/core/components/workspace/sidebar/dropdown.tsx index 4e037ea3b27..472f1b4efd6 100644 --- a/web/core/components/workspace/sidebar/dropdown.tsx +++ b/web/core/components/workspace/sidebar/dropdown.tsx @@ -17,9 +17,12 @@ import { GOD_MODE_URL, cn } from "@/helpers/common.helper"; // helpers import { getFileURL } from "@/helpers/file.helper"; // hooks -import { useAppTheme, useInstance, useUser, useUserPermissions, useUserProfile, useWorkspace } from "@/hooks/store"; +import { useAppTheme, useUser, useUserPermissions, useUserProfile, useWorkspace } from "@/hooks/store"; // plane web constants import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions"; +// plane web helpers +import { getIsWorkspaceCreationDisabled } from "@/plane-web/helpers/instance.helper"; +// components import { WorkspaceLogo } from "../logo"; // Static Data @@ -46,7 +49,6 @@ export const SidebarDropdown = observer(() => { // store hooks const { sidebarCollapsed, toggleSidebar } = useAppTheme(); const { data: currentUser } = useUser(); - const { config } = useInstance(); const { // updateCurrentUser, // isUserInstanceAdmin, @@ -55,7 +57,7 @@ export const SidebarDropdown = observer(() => { const { updateUserProfile } = useUserProfile(); const { allowPermissions } = useUserPermissions(); // derived values - const isWorkspaceCreationEnabled = config?.is_workspace_creation_disabled === false; + const isWorkspaceCreationEnabled = getIsWorkspaceCreationDisabled() === false; const isUserInstanceAdmin = false; const { currentWorkspace: activeWorkspace, workspaces } = useWorkspace(); diff --git a/web/ee/helpers/instance.helper.ts b/web/ee/helpers/instance.helper.ts new file mode 100644 index 00000000000..ece25547ddd --- /dev/null +++ b/web/ee/helpers/instance.helper.ts @@ -0,0 +1 @@ +export * from "ce/helpers/instance.helper"; From 9721c034f16fa434bda59088ac934f5633cbbb1a Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Tue, 26 Nov 2024 23:48:28 +0530 Subject: [PATCH 3/3] chore: ux copy improvements --- web/app/create-workspace/page.tsx | 50 ++++++++++++------ .../account/auth-forms/auth-header.tsx | 18 +++---- .../components/account/auth-forms/email.tsx | 2 +- .../onboarding/create-or-join-workspaces.tsx | 13 +++-- .../workspace/workspace-creation-disabled.png | Bin 0 -> 191452 bytes 5 files changed, 53 insertions(+), 30 deletions(-) create mode 100644 web/public/workspace/workspace-creation-disabled.png diff --git a/web/app/create-workspace/page.tsx b/web/app/create-workspace/page.tsx index 100ea412441..36bc8978ad2 100644 --- a/web/app/create-workspace/page.tsx +++ b/web/app/create-workspace/page.tsx @@ -7,6 +7,7 @@ import Link from "next/link"; import { useTheme } from "next-themes"; import { IWorkspace } from "@plane/types"; // components +import { Button, getButtonStyling } from "@plane/ui"; import { CreateWorkspaceForm } from "@/components/workspace"; // hooks import { useUser, useUserProfile } from "@/hooks/store"; @@ -18,6 +19,7 @@ import { getIsWorkspaceCreationDisabled } from "@/plane-web/helpers/instance.hel // images import BlackHorizontalLogo from "@/public/plane-logos/black-horizontal-with-blue-logo.png"; import WhiteHorizontalLogo from "@/public/plane-logos/white-horizontal-with-blue-logo.png"; +import WorkspaceCreationDisabled from "@/public/workspace/workspace-creation-disabled.png"; const CreateWorkspacePage = observer(() => { // router @@ -42,14 +44,6 @@ const CreateWorkspacePage = observer(() => { const logo = resolvedTheme === "light" ? BlackHorizontalLogo : WhiteHorizontalLogo; - if (isWorkspaceCreationDisabled) { - return ( -
- Workspace creation is disabled. Please contact your instance admin. -
- ); - } - return (
@@ -68,16 +62,38 @@ const CreateWorkspacePage = observer(() => {
-
-

Create your workspace

-
- + {isWorkspaceCreationDisabled ? ( +
+ Workspace creation disabled +
Only your instance admin can create workspaces
+

+ If you know your instance admin's email address,
click the button below to get in touch with + them. +

+
+ + + Request instance admin + +
-
+ ) : ( +
+

Create your workspace

+
+ +
+
+ )}
diff --git a/web/core/components/account/auth-forms/auth-header.tsx b/web/core/components/account/auth-forms/auth-header.tsx index 424fcbfe64b..4f0949aa28c 100644 --- a/web/core/components/account/auth-forms/auth-header.tsx +++ b/web/core/components/account/auth-forms/auth-header.tsx @@ -21,30 +21,30 @@ type TAuthHeader = { const Titles = { [EAuthModes.SIGN_IN]: { [EAuthSteps.EMAIL]: { - header: "Log in or Sign up", + header: "Log in or sign up", subHeader: "", }, [EAuthSteps.PASSWORD]: { - header: "Log in or Sign up", - subHeader: "Log in using your password.", + header: "Log in or sign up", + subHeader: "Use your email-password combination to log in.", }, [EAuthSteps.UNIQUE_CODE]: { header: "Log in or Sign up", - subHeader: "Log in using your unique code.", + subHeader: "Log in using a unique code sent to the email address above.", }, }, [EAuthModes.SIGN_UP]: { [EAuthSteps.EMAIL]: { - header: "Sign up or Log in", + header: "Sign up", subHeader: "", }, [EAuthSteps.PASSWORD]: { - header: "Sign up or Log in", - subHeader: "Sign up using your password", + header: "Sign up", + subHeader: "Sign up using an email-password combination.", }, [EAuthSteps.UNIQUE_CODE]: { - header: "Sign up or Log in", - subHeader: "Sign up using your unique code", + header: "Sign up", + subHeader: "Sign up using a unique code sent to the email address above.", }, }, }; diff --git a/web/core/components/account/auth-forms/email.tsx b/web/core/components/account/auth-forms/email.tsx index 1e96ed3f2f5..f0b88407a83 100644 --- a/web/core/components/account/auth-forms/email.tsx +++ b/web/core/components/account/auth-forms/email.tsx @@ -64,7 +64,7 @@ export const AuthEmailForm: FC = observer((props) => { type="email" value={email} onChange={(e) => setEmail(e.target.value)} - placeholder="name@example.com" + placeholder="name@company.com" className={`disable-autofill-style h-[46px] w-full placeholder:text-onboarding-text-400 autofill:bg-red-500 border-0 focus:bg-none active:bg-transparent`} autoComplete="on" autoFocus diff --git a/web/core/components/onboarding/create-or-join-workspaces.tsx b/web/core/components/onboarding/create-or-join-workspaces.tsx index 0cb42bdfa18..f295a1d5c36 100644 --- a/web/core/components/onboarding/create-or-join-workspaces.tsx +++ b/web/core/components/onboarding/create-or-join-workspaces.tsx @@ -4,6 +4,7 @@ import Image from "next/image"; // icons import { useTheme } from "next-themes"; // types +import { OctagonAlert } from "lucide-react"; import { IWorkspaceMemberInvitation, TOnboardingSteps } from "@plane/types"; // components import { Invitations, OnboardingHeader, SwitchAccountDropdown, CreateWorkspace } from "@/components/onboarding"; @@ -78,9 +79,15 @@ export const CreateOrJoinWorkspaces: React.FC = observer((props) => { handleCurrentViewChange={() => setCurrentView(ECreateOrJoinWorkspaceViews.WORKSPACE_JOIN)} /> ) : ( -
- Workspace creation is disabled. Please complete onboarding through an invite or contact your instance - admin. +
+
+ + + You don't seem to have any invites to a workspace and your instance admin has restricted + creation of new workspaces. Please ask a workspace owner or admin to invite you to a workspace first + and come back to this screen to join. + +
) ) : ( diff --git a/web/public/workspace/workspace-creation-disabled.png b/web/public/workspace/workspace-creation-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..09e05ef8388eaeca1d0b82214f96f3932f179e7c GIT binary patch literal 191452 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 literal 0 HcmV?d00001