Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit133f944

Browse files
Merge pull request#1494 from lowcoder-org/branding_updates
Branding updates
2 parents9f53a3f +ed70cfe commit133f944

File tree

23 files changed

+378
-1485
lines changed

23 files changed

+378
-1485
lines changed

‎client/packages/lowcoder/src/api/commonSettingApi.ts

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -82,35 +82,6 @@ export interface ThemeDetail {
8282
dataLoadingIndicator?:string;
8383
}
8484

85-
exportinterfaceBrandingSettings{
86-
logo:string|null;
87-
squareLogo:string|null;
88-
mainBrandingColor:string;
89-
appHeaderColor:string;
90-
adminSidebarColor:string;
91-
adminSidebarFontColor:string;
92-
adminSidebarActiveBgColor:string;
93-
adminSidebarActiveFontColor:string;
94-
editorSidebarColor:string;
95-
editorSidebarFontColor:string;
96-
editorSidebarActiveBgColor:string;
97-
editorSidebarActiveFontColor:string;
98-
font:string;
99-
errorPageText:string;
100-
errorPageImage:string|null;
101-
signUpPageText:string;
102-
signUpPageImage:string|null;
103-
loggedOutPageText:string;
104-
loggedOutPageImage:string|null;
105-
standardDescription:string;
106-
standardTitle:string;
107-
showDocumentation:boolean;
108-
documentationLink:string|null;
109-
submitIssue:boolean;
110-
whatsNew:boolean;
111-
whatsNewLink:string|null;
112-
}
113-
11485
exportfunctiongetThemeDetailName(key:keyofThemeDetail){
11586
switch(key){
11687
case"primary":returntrans("themeDetail.primary");
Lines changed: 84 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,110 @@
11
importaxiosfrom'axios';
22

3+
exportinterfaceFetchBrandingSettingPayload{
4+
orgId?:string;
5+
}
6+
exportinterfaceBrandingSettings{
7+
logo?:string|null;
8+
squareLogo?:string|null;
9+
mainBrandingColor?:string;
10+
appHeaderColor?:string;
11+
adminSidebarColor?:string;
12+
adminSidebarFontColor?:string;
13+
adminSidebarActiveBgColor?:string;
14+
adminSidebarActiveFontColor?:string;
15+
editorSidebarColor?:string;
16+
editorSidebarFontColor?:string;
17+
editorSidebarActiveBgColor?:string;
18+
editorSidebarActiveFontColor?:string;
19+
font?:string;
20+
errorPageText?:string;
21+
errorPageImage?:string|null;
22+
signUpPageText?:string;
23+
signUpPageImage?:string|null;
24+
loggedOutPageText?:string;
25+
loggedOutPageImage?:string|null;
26+
standardDescription?:string;
27+
standardTitle?:string;
28+
showDocumentation?:boolean;
29+
documentationLink?:string|null;
30+
submitIssue?:boolean;
31+
whatsNew?:boolean;
32+
whatsNewLink?:string|null;
33+
}
34+
exportinterfaceBrandingConfig{
35+
config_name?:string,
36+
config_description?:string,
37+
config_icon?:string,
38+
config_set?:BrandingSettings,
39+
org_id?:string,
40+
user_id?:string,
41+
id?:string,
42+
}
43+
44+
exportinterfaceBrandingSettingResponseextendsBrandingConfig{};
45+
46+
exportinterfaceEnterpriseLicenseResponse{
47+
eeActive:boolean;
48+
remainingAPICalls:number;
49+
eeLicenses:Array<{
50+
uuid:string;
51+
issuedTo:string;
52+
apiCallsLimit:number;
53+
}>;
54+
}
55+
356
// Existing functions
457
exportconstgetEnterpriseLicense=async()=>{
5-
constresponse=awaitaxios.get('/api/plugins/enterprise/license');
6-
returnresponse.data;
58+
constresponse=awaitaxios.get('/api/plugins/enterprise/license');
59+
returnresponse.data;
760
};
861

962
exportconstgetAuditLogs=async(params={})=>{
10-
constquery=newURLSearchParams(params).toString();
11-
constresponse=awaitaxios.get(`/api/plugins/enterprise/audit-logs${query ?`?${query}` :''}`);
12-
returnresponse.data;
63+
constquery=newURLSearchParams(params).toString();
64+
constresponse=awaitaxios.get(`/api/plugins/enterprise/audit-logs${query ?`?${query}` :''}`);
65+
returnresponse.data;
1366
};
1467

1568
exportconstgetAuditLogStatistics=async(groupByParam :string)=>{
16-
constresponse=awaitaxios.get(`/api/plugins/enterprise/audit-logs/statistics?groupByParam=${groupByParam}`);
17-
returnresponse.data;
69+
constresponse=awaitaxios.get(`/api/plugins/enterprise/audit-logs/statistics?groupByParam=${groupByParam}`);
70+
returnresponse.data;
1871
};
1972

2073
exportconstgetAppUsageLogs=async(params={})=>{
21-
constquery=newURLSearchParams(params).toString();
22-
constresponse=awaitaxios.get(`/api/plugins/enterprise/app-usage-logs${query ?`?${query}` :''}`);
23-
returnresponse.data;
74+
constquery=newURLSearchParams(params).toString();
75+
constresponse=awaitaxios.get(`/api/plugins/enterprise/app-usage-logs${query ?`?${query}` :''}`);
76+
returnresponse.data;
2477
};
2578

2679
exportconstgetAppUsageStatistics=async(groupByParam :string)=>{
27-
constresponse=awaitaxios.get(`/api/plugins/enterprise/app-usage-logs/statistics?groupByParam=${groupByParam}`);
28-
returnresponse.data;
80+
constresponse=awaitaxios.get(`/api/plugins/enterprise/app-usage-logs/statistics?groupByParam=${groupByParam}`);
81+
returnresponse.data;
2982
};
3083

3184

32-
exportconstgetBranding=async()=>{
33-
constresponse=awaitaxios.get('/api/plugins/enterprise/branding');
34-
returnresponse.data;
85+
exportconstgetBranding=async(orgId:string='')=>{
86+
constresponse=awaitaxios.get('/api/plugins/enterprise/branding?orgId='+orgId);
87+
constdata=response.data;
88+
if(Boolean(data.error)){
89+
return{};
90+
}
91+
return{
92+
...data,
93+
config_set:JSON.parse(data.config_set),
94+
};
3595
};
3696

3797
exportconstcreateBranding=async(brandingData :any)=>{
38-
constresponse=awaitaxios.post('/api/plugins/enterprise/branding',brandingData);
39-
returnresponse.data;
98+
letresponse;
99+
if(brandingData.id){
100+
response=awaitaxios.put(`/api/plugins/enterprise/branding?brandId=${brandingData.id}`,brandingData);
101+
}else{
102+
response=awaitaxios.post('/api/plugins/enterprise/branding',brandingData);
103+
}
104+
returnresponse.data;
40105
};
41106

42107
exportconstupdateBranding=async(brandingData :any)=>{
43-
constresponse=awaitaxios.put('/api/plugins/enterprise/branding',brandingData);
44-
returnresponse.data;
108+
constresponse=awaitaxios.put('/api/plugins/enterprise/branding',brandingData);
109+
returnresponse.data;
45110
};

‎client/packages/lowcoder/src/app.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ import GlobalInstances from 'components/GlobalInstances';
6060
import{fetchHomeData,fetchServerSettingsAction}from"./redux/reduxActions/applicationActions";
6161
import{getNpmPackageMeta}from"./comps/utils/remote";
6262
import{packageMetaReadyAction,setLowcoderCompsLoading}from"./redux/reduxActions/npmPluginActions";
63-
import{fetchCommonSettings}from"./redux/reduxActions/commonSettingsActions";
63+
import{fetchBrandingSetting}from"./redux/reduxActions/enterpriseActions";
64+
import{EnterpriseProvider}from"./util/context/EnterpriseContext";
6465

6566
constLazyUserAuthComp=React.lazy(()=>import("pages/userAuth"));
6667
constLazyInviteLanding=React.lazy(()=>import("pages/common/inviteLanding"));
@@ -95,7 +96,7 @@ type AppIndexProps = {
9596
defaultHomePage:string|null|undefined;
9697
fetchHomeDataFinished:boolean;
9798
fetchConfig:(orgId?:string)=>void;
98-
fetchCommonSettings:(orgId:string)=>void;
99+
fetchBrandingSetting:(orgId?:string)=>void;
99100
fetchHomeData:(currentUserAnonymous?:boolean|undefined)=>void;
100101
fetchLowcoderCompVersions:()=>void;
101102
getCurrentUser:()=>void;
@@ -123,7 +124,7 @@ class AppIndex extends React.Component<AppIndexProps, any> {
123124
if(!this.props.currentUserAnonymous){
124125
this.props.fetchHomeData(this.props.currentUserAnonymous);
125126
this.props.fetchLowcoderCompVersions();
126-
this.props.fetchCommonSettings(this.props.currentOrgId!);
127+
this.props.fetchBrandingSetting(this.props.currentOrgId);
127128
}
128129
}
129130
}
@@ -430,7 +431,7 @@ const mapDispatchToProps = (dispatch: any) => ({
430431
fetchHomeData:(currentUserAnonymous:boolean|undefined)=>{
431432
dispatch(fetchHomeData({}));
432433
},
433-
fetchCommonSettings:(orgId:string)=>dispatch(fetchCommonSettings({ orgId})),
434+
fetchBrandingSetting:(orgId?:string)=>dispatch(fetchBrandingSetting({ orgId})),
434435
fetchLowcoderCompVersions:async()=>{
435436
try{
436437
dispatch(setLowcoderCompsLoading(true));
@@ -458,7 +459,9 @@ export function bootstrap() {
458459
constroot=createRoot(container!);
459460
root.render(
460461
<Providerstore={reduxStore}>
462+
<EnterpriseProvider>
461463
<AppIndexWithProps/>
464+
</EnterpriseProvider>
462465
</Provider>
463466
);
464467
}

‎client/packages/lowcoder/src/components/layout/Layout.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { CNMainContent, CNSidebar } from "constants/styleSelectors";
1010
import{SideBarSection,SideBarSectionProps}from"./SideBarSection";
1111
importstyledfrom"styled-components";
1212
import{useSelector}from"react-redux";
13-
import{getBrandingSettings}from"@lowcoder-ee/redux/selectors/commonSettingSelectors";
1413
import{MenuOutlined}from"@ant-design/icons";
1514
import{Drawer,Button}from"antd";
1615

@@ -58,7 +57,6 @@ const DrawerContentWrapper = styled.div`
5857
`;
5958

6059
exportfunctionLayout(props:LayoutProps){
61-
constbrandingSettings=useSelector(getBrandingSettings);
6260
const[drawerVisible,setDrawerVisible]=useState(false);
6361
const[isMobile,setIsMobile]=useState(false);
6462

‎client/packages/lowcoder/src/components/layout/SideBarSection.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { getUser } from "../../redux/selectors/usersSelectors";
1111
import{normalAppListSelector}from"../../redux/selectors/applicationSelector";
1212
import{useLocation}from"react-router-dom";
1313
importhistoryfrom"../../util/history";
14-
import{getBrandingSettings}from"@lowcoder-ee/redux/selectors/commonSettingSelectors";
14+
import{getBrandingSetting}from"@lowcoder-ee/redux/selectors/enterpriseSelectors";
1515

1616
constdefaultOnSelectedFn=(routePath:string,currentPath:string)=>routePath===currentPath;
1717

@@ -24,7 +24,8 @@ const Wrapper = styled.div`
2424
exportconstSideBarSection=(props:SideBarSectionProps)=>{
2525
constuser=useSelector<AppState,User>(getUser);
2626
constapplications=useSelector<AppState,ApplicationMeta[]>(normalAppListSelector);
27-
constbrandingSettings=useSelector(getBrandingSettings);
27+
constbrandingSettings=useSelector(getBrandingSetting);
28+
console.log('brandingSettings',brandingSettings);
2829
constcurrentPath=useLocation().pathname;
2930
constisShow=props.items
3031
.map((item)=>(item.visible ?item.visible({user:user,applications:applications}) :true))
@@ -47,8 +48,8 @@ export const SideBarSection = (props: SideBarSectionProps) => {
4748
?item.onSelected(item.routePath,currentPath)
4849
:defaultOnSelectedFn(item.routePath,currentPath)
4950
}
50-
selectedBgColor={brandingSettings?.adminSidebarActiveBgColor}
51-
selectedFontColor={brandingSettings?.adminSidebarActiveFontColor}
51+
selectedBgColor={brandingSettings?.config_set?.adminSidebarActiveBgColor}
52+
selectedFontColor={brandingSettings?.config_set?.adminSidebarActiveFontColor}
5253
onClick={()=>{
5354
// Trigger item's onClick if defined
5455
item.onClick

‎client/packages/lowcoder/src/constants/reduxActionConstants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,11 @@ export const ReduxActionTypes = {
173173
FETCH_ENTERPRISE_LICENSE :"FETCH_ENTERPRISE_LICENSE",
174174
SET_ENTERPRISE_LICENSE :"SET_ENTERPRISE_LICENSE",
175175

176+
/* Branding Setting */
177+
FETCH_BRANDING_SETTING :"FETCH_BRANDING_SETTING",
178+
SET_WORKSPACE_BRANDING_SETTING :"SET_WORKSPACE_BRANDING_SETTING",
179+
SET_GLOBAL_BRANDING_SETTING :"SET_GLOBAL_BRANDING_SETTING",
180+
176181
/* application snapshot */
177182
FETCH_APP_SNAPSHOTS:"FETCH_APP_SNAPSHOTS",
178183
FETCH_APP_SNAPSHOTS_SUCCESS:"FETCH_APP_SNAPSHOTS_SUCCESS",

‎client/packages/lowcoder/src/i18n/locales/en.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2855,6 +2855,12 @@ export const en = {
28552855

28562856
"branding":{
28572857
"title":"Branding Settings",
2858+
"general":"General",
2859+
"selectWorkspace":"Select Workspace",
2860+
"brandingName":"Branding Name",
2861+
"brandingNamePlaceholder":"Enter branding name",
2862+
"brandingDescription":"Branding Description",
2863+
"brandingDescriptionPlaceholder":"Enter branding description",
28582864
"logoSection":"Logos",
28592865
"logo":"Logo",
28602866
"logoHelp":"Upload your company's logo in SVG or PNG format.",

‎client/packages/lowcoder/src/pages/ApplicationV2/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ export default function ApplicationHome() {
149149
return(
150150
<DivStyled>
151151
<LoadingBarHideTrigger/>
152-
<EnterpriseProvider>
152+
{/*<EnterpriseProvider> */}
153153
<SimpleSubscriptionContextProvider>
154154
<Layout
155155
sections={[
@@ -285,7 +285,7 @@ export default function ApplicationHome() {
285285
]}
286286
/>
287287
</SimpleSubscriptionContextProvider>
288-
</EnterpriseProvider>
288+
{/*</EnterpriseProvider> */}
289289
</DivStyled>
290290
);
291291
}

‎client/packages/lowcoder/src/pages/common/header.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ import Avatar from 'antd/es/avatar';
6464
importUserApifrom"@lowcoder-ee/api/userApi";
6565
import{validateResponse}from"@lowcoder-ee/api/apiUtils";
6666
importProfileImagefrom"./profileImage";
67-
import{getBrandingSettings}from"@lowcoder-ee/redux/selectors/commonSettingSelectors";
6867
import{buildMaterialPreviewURL}from"@lowcoder-ee/util/materialUtils";
68+
import{getBrandingSetting}from"@lowcoder-ee/redux/selectors/enterpriseSelectors";
6969

7070
const{ Countdown}=Statistic;
7171
const{ Text}=Typography;
@@ -380,7 +380,7 @@ export default function Header(props: HeaderProps) {
380380
constdispatch=useDispatch();
381381
constshowAppSnapshot=useSelector(showAppSnapshotSelector);
382382
const{selectedSnapshot, isArchivedSnapshot}=useSelector(getSelectedAppSnapshot);
383-
constbrandingSettings=useSelector(getBrandingSettings);
383+
constbrandingSettings=useSelector(getBrandingSetting);
384384
const{ appType}=useContext(ExternalEditorContext);
385385
const[editName,setEditName]=useState(false);
386386
const[editing,setEditing]=useState(false);
@@ -436,8 +436,8 @@ export default function Header(props: HeaderProps) {
436436
<>
437437
<StyledLinkonClick={()=>history.push(ALL_APPLICATIONS_URL)}>
438438
{/* {REACT_APP_LOWCODER_SHOW_BRAND === 'true' ? REACT_APP_LOWCODER_CUSTOM_LOGO_SQUARE !== "" ? <img src={REACT_APP_LOWCODER_CUSTOM_LOGO_SQUARE } height={24} width={24} alt="logo" /> :<LogoIcon /> : <LogoHome />} */}
439-
{brandingSettings?.squareLogo
440-
?<BrandLogosrc={buildMaterialPreviewURL(brandingSettings?.squareLogo)}/>
439+
{brandingSettings?.config_set?.squareLogo
440+
?<BrandLogosrc={buildMaterialPreviewURL(brandingSettings?.config_set?.squareLogo)}/>
441441
:<LogoHome/>
442442
}
443443
</StyledLink>
@@ -685,7 +685,7 @@ export default function Header(props: HeaderProps) {
685685
headerMiddle={headerMiddle}
686686
headerEnd={headerEnd}
687687
style={{
688-
backgroundColor:brandingSettings?.appHeaderColor
688+
backgroundColor:brandingSettings?.config_set?.appHeaderColor
689689
}}
690690
/>
691691
);
@@ -694,13 +694,13 @@ export default function Header(props: HeaderProps) {
694694
// header in manager page
695695
exportfunctionAppHeader(){
696696
constuser=useSelector(getUser);
697-
constbrandingSettings=useSelector(getBrandingSettings);
697+
constbrandingSettings=useSelector(getBrandingSetting);
698698

699699
constheaderStart=(
700700
<StyledLinkonClick={()=>history.push(ALL_APPLICATIONS_URL)}>
701701
{/* {REACT_APP_LOWCODER_SHOW_BRAND === 'true' ? REACT_APP_LOWCODER_CUSTOM_LOGO !== "" ? <img src={REACT_APP_LOWCODER_CUSTOM_LOGO} height={28} alt="logo" /> :<LogoWithName branding={!user.orgDev} /> : <LogoHome />} */}
702-
{brandingSettings?.squareLogo
703-
?<BrandLogosrc={buildMaterialPreviewURL(brandingSettings?.squareLogo)}/>
702+
{brandingSettings?.config_set?.squareLogo
703+
?<BrandLogosrc={buildMaterialPreviewURL(brandingSettings?.config_set?.squareLogo)}/>
704704
:<LogoHome/>
705705
}
706706
</StyledLink>
@@ -711,7 +711,7 @@ export function AppHeader() {
711711
headerStart={headerStart}
712712
headerEnd={headerEnd}
713713
style={{
714-
backgroundColor:brandingSettings?.appHeaderColor
714+
backgroundColor:brandingSettings?.config_set?.appHeaderColor
715715
}}
716716
/>
717717
);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp