Initial commit

This commit is contained in:
root
2026-01-19 17:44:46 +01:00
commit 823af8b11d
8721 changed files with 1130846 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
{
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\ActionHistoryRecord\\OwnershipChecker"
}

View File

@@ -0,0 +1,6 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\Attachment\\AccessChecker",
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\Attachment\\OwnershipChecker",
"portalAccessCheckerClassName": "Espo\\Classes\\AclPortal\\Attachment\\AccessChecker",
"portalOwnershipCheckerClassName": "Espo\\Classes\\AclPortal\\Attachment\\OwnershipChecker"
}

View File

@@ -0,0 +1,3 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\AuthToken\\AccessChecker"
}

View File

@@ -0,0 +1,12 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\Email\\AccessChecker",
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\Email\\OwnershipChecker",
"portalAccessCheckerClassName": "Espo\\Classes\\AclPortal\\Email\\AccessChecker",
"portalOwnershipCheckerClassName": "Espo\\Classes\\AclPortal\\Email\\OwnershipChecker",
"assignmentCheckerClassName": "Espo\\Classes\\Acl\\Email\\AssignmentChecker",
"readOwnerUserField": "users",
"linkCheckerClassNameMap": {
"parent": "Espo\\Classes\\Acl\\Email\\LinkCheckers\\ParentLinkChecker",
"teams": "Espo\\Classes\\Acl\\Email\\LinkCheckers\\TeamsLinkChecker"
}
}

View File

@@ -0,0 +1,3 @@
{
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\EmailFilter\\OwnershipChecker"
}

View File

@@ -0,0 +1,3 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\Import\\AccessChecker"
}

View File

@@ -0,0 +1,3 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\ImportEml\\AccessChecker"
}

View File

@@ -0,0 +1,4 @@
{
"accessCheckerClassName": "Espo\\Core\\Acl\\AccessChecker\\AccessCheckers\\Foreign",
"link": "import"
}

View File

@@ -0,0 +1,6 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\Note\\AccessChecker",
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\Note\\OwnershipChecker",
"portalAccessCheckerClassName": "Espo\\Classes\\AclPortal\\Note\\AccessChecker",
"portalOwnershipCheckerClassName": "Espo\\Classes\\AclPortal\\Note\\OwnershipChecker"
}

View File

@@ -0,0 +1,4 @@
{
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\Notification\\OwnershipChecker",
"portalOwnershipCheckerClassName": "Espo\\Classes\\AclPortal\\Notification\\OwnershipChecker"
}

View File

@@ -0,0 +1,3 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\Portal\\AccessChecker"
}

View File

@@ -0,0 +1,3 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\ScheduledJob\\AccessChecker"
}

View File

@@ -0,0 +1,3 @@
{
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\Team\\OwnershipChecker"
}

View File

@@ -0,0 +1,5 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\User\\AccessChecker",
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\User\\OwnershipChecker",
"portalOwnershipCheckerClassName": "Espo\\Classes\\AclPortal\\User\\OwnershipChecker"
}

View File

@@ -0,0 +1,4 @@
{
"accessCheckerClassName": "Espo\\Classes\\Acl\\Webhook\\AccessChecker",
"ownershipCheckerClassName": "Espo\\Classes\\Acl\\Webhook\\OwnershipChecker"
}

View File

@@ -0,0 +1,3 @@
{
"assignmentCheckerClassName": "Espo\\Classes\\Acl\\WorkingTimeRange\\AssignmentChecker"
}

View File

@@ -0,0 +1,203 @@
{
"mandatory": {
"scopeLevel": {
"Note": {
"read": "own",
"edit": "own",
"delete": "own",
"create": "yes"
},
"Portal": {
"read": "all",
"edit": "no",
"delete": "no",
"create": "no"
},
"Attachment": {
"read": "own",
"edit": "own",
"delete": "own",
"create": "yes"
},
"EmailAccount": {
"read": "own",
"edit": "own",
"delete": "own",
"create": "yes"
},
"EmailFilter": {
"read": "own",
"edit": "own",
"delete": "own",
"create": "yes"
},
"EmailFolder": {
"read": "own",
"edit": "own",
"delete": "own",
"create": "yes"
},
"GroupEmailFolder": {
"read": "team",
"edit": "no",
"delete": "no",
"create": "no"
},
"Preferences": {
"read": "own",
"edit": "own",
"delete": "no",
"create": "no"
},
"Notification": {
"read": "own",
"edit": "no",
"delete": "own",
"create": "no"
},
"ActionHistoryRecord": {
"read": "own"
},
"Role": false,
"PortalRole": false,
"ImportError": "Import",
"ImportEml": "Import",
"WorkingTimeRange": "WorkingTimeCalendar",
"Stream": true
},
"fieldLevel": {
},
"scopeFieldLevel": {
"EmailAccount": {
"assignedUser": {
"read": "yes",
"edit": "no"
}
},
"EmailFolder": {
"assignedUser": {
"read": "yes",
"edit": "no"
}
},
"Email": {
"inboundEmails": false,
"emailAccounts": false
},
"User": {
"dashboardTemplate": false,
"workingTimeCalendar": {
"read": "yes",
"edit": "no"
},
"password": false,
"passwordConfirm": false,
"auth2FA": false,
"authMethod": false,
"apiKey": false,
"secretKey": false,
"token": false
},
"ActionHistoryRecord": {
"authToken": false,
"authLogRecord": false
}
}
},
"strictDefault": {
"scopeLevel": {
"User": {
"read": "own",
"edit": "no"
},
"Team": {
"read": "team"
},
"Import": false,
"Webhook": false
},
"fieldLevel": {
},
"scopeFieldLevel": {
"User": {
"gender": false,
"avatarColor": {
"read": "yes",
"edit": "no"
}
}
}
},
"adminMandatory": {
"scopeLevel": {
"User": {
"create": "yes",
"read": "all",
"edit": "all",
"delete": "all"
},
"Team": {
"create": "yes",
"read": "all",
"edit": "all",
"delete": "all"
},
"Job": {
"create": "no",
"read": "all",
"edit": "no",
"delete": "all"
},
"Extension": {
"create": "no",
"read": "all",
"edit": "no",
"delete": "all"
},
"Stream": true,
"ImportEml": "Import"
}
},
"valuePermissionList": [
"assignmentPermission",
"messagePermission",
"mentionPermission",
"userCalendarPermission",
"auditPermission",
"exportPermission",
"massUpdatePermission",
"userPermission",
"portalPermission",
"groupEmailAccountPermission",
"followerManagementPermission",
"dataPrivacyPermission"
],
"valuePermissionHighestLevels": {
"assignmentPermission": "all",
"userPermission": "all",
"messagePermission": "all",
"portalPermission": "yes",
"groupEmailAccountPermission": "all",
"exportPermission": "yes",
"massUpdatePermission": "yes",
"followerManagementPermission": "all",
"dataPrivacyPermission": "yes",
"auditPermission": "yes",
"mentionPermission": "yes",
"userCalendarPermission": "all"
},
"permissionsStrictDefaults": {
"assignmentPermission": "no",
"userPermission": "no",
"messagePermission": "no",
"portalPermission": "no",
"groupEmailAccountPermission": "no",
"exportPermission": "no",
"massUpdatePermission": "no",
"followerManagementPermission": "no",
"dataPrivacyPermission": "no",
"auditPermission": "no",
"mentionPermission": "no",
"userCalendarPermission": "no"
}
}

View File

@@ -0,0 +1,146 @@
{
"mandatory": {
"scopeLevel": {
"User": {
"read": "own",
"edit": "no",
"delete": "no",
"stream": "no",
"create": "no"
},
"Team": false,
"Note": {
"read": "own",
"edit": "own",
"delete": "own",
"create": "yes"
},
"Notification": {
"read": "own",
"edit": "no",
"delete": "own",
"create": "no"
},
"Portal": false,
"Attachment": {
"read": "own",
"edit": "own",
"delete": "own",
"create": "yes"
},
"ExternalAccount": false,
"Role": false,
"PortalRole": false,
"EmailFilter": false,
"EmailFolder": false,
"EmailAccount": false,
"EmailTemplate": false,
"ActionHistoryRecord": {
"read": "own"
},
"Preferences": {
"read": "own",
"edit": "own",
"delete": "no",
"create": "no"
}
},
"fieldLevel": {
},
"scopeFieldLevel": {
"Preferences": {
"smtpServer": false,
"smtpPort": false,
"smtpSecurity": false,
"smtpUsername": false,
"smtpPassword": false,
"smtpAuth": false,
"receiveAssignmentEmailNotifications": false,
"receiveMentionEmailNotifications": false,
"defaultReminders": false,
"autoFollowEntityTypeList": false,
"emailReplyForceHtml": false,
"emailReplyToAllByDefault": false,
"signature": false,
"followCreatedEntities": false,
"followEntityOnStreamPost": false,
"doNotFillAssignedUserIfNotRequired": false,
"useCustomTabList": false,
"addCustomTabs": false,
"tabList": false,
"emailUseExternalClient": false,
"assignmentNotificationsIgnoreEntityTypeList": false,
"assignmentEmailNotificationsIgnoreEntityTypeList": false,
"dashletsOptions": false,
"dashboardLayout": false
},
"Call": {
"reminders": false
},
"Meeting": {
"reminders": false
},
"Note": {
"isInternal": false,
"isGlobal": false
},
"Email": {
"inboundEmails": false,
"emailAccounts": false
},
"User": {
"dashboardTemplate": false,
"workingTimeCalendar": false,
"password": false,
"authMethod": false,
"apiKey": false,
"secretKey": false,
"token": false,
"isAdmin": false,
"type": false,
"contact": false,
"accounts": false,
"account": false,
"portalRoles": false,
"portals": false,
"roles": false,
"defaultTeam": false,
"auth2FA": false,
"isActive": false
},
"ActionHistoryRecord": {
"authToken": false,
"authLogRecord": false
}
}
},
"strictDefault": {
"scopeLevel": {
},
"fieldLevel": {
"assignedUser": {
"read": "yes",
"edit": "no"
},
"assignedUsers": {
"read": "yes",
"edit": "no"
},
"collaborators": false,
"teams": false
},
"scopeFieldLevel": {
"User": {
"gender": false
}
}
},
"valuePermissionList": [
"exportPermission",
"massUpdatePermission"
],
"permissionsStrictDefaults": {
"exportPermission": "no",
"massUpdatePermission": "no"
}
}

View File

@@ -0,0 +1,8 @@
{
"convertCurrency": {
"implementationClassName": "Espo\\Core\\Action\\Actions\\ConvertCurrency"
},
"merge": {
"implementationClassName": "Espo\\Core\\Action\\Actions\\Merge"
}
}

View File

@@ -0,0 +1,14 @@
{
"1": {
"formatterClassName": "Espo\\Classes\\AddressFormatters\\Formatter1"
},
"2": {
"formatterClassName": "Espo\\Classes\\AddressFormatters\\Formatter2"
},
"3": {
"formatterClassName": "Espo\\Classes\\AddressFormatters\\Formatter3"
},
"4": {
"formatterClassName": "Espo\\Classes\\AddressFormatters\\Formatter4"
}
}

View File

@@ -0,0 +1,383 @@
{
"system": {
"label": "System",
"itemList": [
{
"url": "#Admin/settings",
"label": "Settings",
"iconClass": "fas fa-cog",
"description": "settings",
"recordView": "views/admin/settings"
},
{
"url": "#Admin/userInterface",
"label": "User Interface",
"iconClass": "fas fa-desktop",
"description": "userInterface",
"recordView": "views/admin/user-interface"
},
{
"url": "#Admin/authentication",
"label": "Authentication",
"iconClass": "fas fa-sign-in-alt",
"description": "authentication",
"recordView": "views/admin/authentication"
},
{
"url": "#ScheduledJob",
"label": "Scheduled Jobs",
"iconClass": "fas fa-clock",
"description": "scheduledJob"
},
{
"url": "#Admin/currency",
"label": "Currency",
"iconClass": "fas fa-euro-sign",
"description": "currency",
"recordView": "views/admin/currency"
},
{
"url": "#Admin/notifications",
"label": "Notifications",
"iconClass": "fas fa-bell",
"description": "notifications",
"recordView": "views/admin/notifications"
},
{
"url": "#Admin/integrations",
"label": "Integrations",
"iconClass": "fas fa-network-wired",
"description": "integrations"
},
{
"url": "#Admin/extensions",
"label": "Extensions",
"iconClass": "fas fa-upload",
"description": "extensions"
},
{
"url": "#Admin/systemRequirements",
"label": "System Requirements",
"iconClass": "fas fa-server",
"description": "systemRequirements"
},
{
"url": "#Admin/jobsSettings",
"label": "Job Settings",
"iconClass": "fas fa-list-ul",
"description": "jobsSettings",
"recordView": "views/admin/jobs-settings"
},
{
"url": "#Admin/upgrade",
"label": "Upgrade",
"iconClass": "fas fa-arrow-alt-circle-up",
"description": "upgrade",
"view": "views/admin/upgrade/index"
},
{
"action": "clearCache",
"label": "Clear Cache",
"iconClass": "fas fa-broom",
"description": "clearCache"
},
{
"action": "rebuild",
"label": "Rebuild",
"iconClass": "fas fa-database",
"description": "rebuild"
}
],
"order": 0
},
"users":{
"label": "Users",
"itemList": [
{
"url": "#Admin/users",
"label": "Users",
"iconClass": "fas fa-user",
"description": "users",
"tabQuickSearch": true
},
{
"url": "#Admin/teams",
"label": "Teams",
"iconClass": "fas fa-users",
"description": "teams",
"tabQuickSearch": true
},
{
"url": "#Admin/roles",
"label": "Roles",
"iconClass": "fas fa-key",
"description": "roles",
"tabQuickSearch": true
},
{
"url": "#Admin/authLog",
"label": "Auth Log",
"iconClass": "fas fa-sign-in-alt",
"description": "authLog"
},
{
"url": "#Admin/authTokens",
"label": "Auth Tokens",
"iconClass": "fas fa-shield-alt",
"description": "authTokens"
},
{
"url": "#Admin/actionHistory",
"label": "Action History",
"iconClass": "fas fa-history",
"description": "actionHistory"
},
{
"url": "#Admin/apiUsers",
"label": "API Users",
"iconClass": "fas fa-user-cog",
"description": "apiUsers"
}
],
"order": 5
},
"customization": {
"label": "Customization",
"itemList": [
{
"url": "#Admin/entityManager",
"label": "Entity Manager",
"iconClass": "fas fa-tools",
"description": "entityManager",
"tabQuickSearch": true
},
{
"url": "#Admin/layouts",
"label": "Layout Manager",
"iconClass": "fas fa-table",
"description": "layoutManager"
},
{
"url": "#Admin/labelManager",
"label": "Label Manager",
"iconClass": "fas fa-language",
"description": "labelManager"
},
{
"url": "#Admin/templateManager",
"label": "Template Manager",
"iconClass": "fas fa-envelope-open-text",
"description": "templateManager"
}
],
"order": 10
},
"email":{
"label": "Messaging",
"itemList": [
{
"url": "#Admin/outboundEmails",
"label": "Outbound Emails",
"iconClass": "fas fa-paper-plane",
"description": "outboundEmails",
"recordView": "views/admin/outbound-emails"
},
{
"url": "#Admin/inboundEmails",
"label": "Inbound Emails",
"iconClass": "fas fa-envelope",
"description": "inboundEmails",
"recordView": "views/admin/inbound-emails"
},
{
"url": "#Admin/groupEmailAccounts",
"label": "Group Email Accounts",
"iconClass": "fas fa-inbox",
"description": "groupEmailAccounts",
"tabQuickSearch": true
},
{
"url": "#Admin/personalEmailAccounts",
"label": "Personal Email Accounts",
"iconClass": "fas fa-inbox",
"description": "personalEmailAccounts",
"tabQuickSearch": true
},
{
"url": "#Admin/emailFilters",
"label": "Email Filters",
"iconClass": "fas fa-filter",
"description": "emailFilters"
},
{
"url": "#Admin/groupEmailFolders",
"label": "Group Email Folders",
"iconClass": "fas fa-folder",
"description": "groupEmailFolders"
},
{
"url": "#Admin/emailTemplates",
"label": "Email Templates",
"iconClass": "fas fa-envelope-square",
"description": "emailTemplates"
},
{
"url": "#Admin/sms",
"label": "SMS",
"iconClass": "fas fa-paper-plane",
"description": "sms",
"recordView": "views/admin/sms"
}
],
"order": 15
},
"portal": {
"label": "Portal",
"itemList": [
{
"url": "#Admin/portals",
"label": "Portals",
"iconClass": "fas fa-parking",
"description": "portals"
},
{
"url": "#Admin/portalUsers",
"label": "Portal Users",
"iconClass": "fas fa-user",
"description": "portalUsers",
"tabQuickSearch": true
},
{
"url": "#Admin/portalRoles",
"label": "Portal Roles",
"iconClass": "fas fa-key",
"description": "portalRoles"
}
],
"order": 20
},
"setup": {
"label": "Setup",
"itemList": [
{
"url": "#Admin/workingTimeCalendar",
"label": "Working Time Calendars",
"iconClass": "far fa-calendar-alt",
"description": "workingTimeCalendars",
"tabQuickSearch": true
},
{
"url": "#Admin/layoutSets",
"label": "Layout Sets",
"iconClass": "fas fa-table",
"description": "layoutSets"
},
{
"url": "#Admin/dashboardTemplates",
"label": "Dashboard Templates",
"iconClass": "fas fa-th-large",
"description": "dashboardTemplates"
},
{
"url": "#Admin/leadCapture",
"label": "Lead Capture",
"iconClass": "fas fa-id-card",
"description": "leadCapture"
},
{
"url": "#Admin/pdfTemplates",
"label": "PDF Templates",
"iconClass": "fas fa-file-pdf",
"description": "pdfTemplates"
},
{
"url": "#Admin/webhooks",
"label": "Webhooks",
"iconClass": "fas fa-share-alt icon-rotate-90",
"description": "webhooks"
},
{
"url": "#Admin/addressCountries",
"label": "Address Countries",
"iconClass": "far fa-flag",
"description": "addressCountries"
},
{
"url": "#Admin/authenticationProviders",
"label": "Authentication Providers",
"iconClass": "fas fa-sign-in-alt",
"description": "authenticationProviders"
}
],
"order": 24
},
"data": {
"label": "Data",
"itemList": [
{
"url": "#Admin/import",
"label": "Import",
"iconClass": "fas fa-file-import",
"description": "import"
},
{
"url": "#Admin/attachments",
"label": "Attachments",
"iconClass": "fas fa-paperclip",
"description": "attachments"
},
{
"url": "#Admin/jobs",
"label": "Jobs",
"iconClass": "fas fa-list-ul",
"description": "jobs"
},
{
"url": "#Admin/emailAddresses",
"label": "Email Addresses",
"iconClass": "fas fa-envelope",
"description": "emailAddresses"
},
{
"url": "#Admin/phoneNumbers",
"label": "Phone Numbers",
"iconClass": "fas fa-phone",
"description": "phoneNumbers"
},
{
"url": "#Admin/appSecrets",
"label": "App Secrets",
"iconClass": "fas fa-key",
"description": "appSecrets"
},
{
"url": "#Admin/oAuthProviders",
"label": "OAuth Providers",
"iconClass": "fas fa-sign-in-alt",
"description": "oAuthProviders"
},
{
"url": "#Admin/appLog",
"label": "App Log",
"iconClass": "fas fa-list",
"description": "appLog"
}
],
"order": 25
},
"misc": {
"label": "Misc",
"itemList": [
{
"url": "#Admin/formulaSandbox",
"label": "Formula Sandbox",
"iconClass": "fas fa-code",
"description": "formulaSandbox",
"view": "views/admin/formula-sandbox/index"
}
],
"order": 26
}
}

View File

@@ -0,0 +1,6 @@
{
"globalMiddlewareClassNameList": [],
"routeMiddlewareClassNameListMap": {},
"controllerMiddlewareClassNameListMap": {},
"controllerActionMiddlewareClassNameListMap": {}
}

View File

@@ -0,0 +1,11 @@
{
"templateEntityTypeList": {
"className": "Espo\\Classes\\AppParams\\TemplateEntityTypeList"
},
"extensions": {
"className": "Espo\\Classes\\AppParams\\Extensions"
},
"addressCountryData": {
"className": "Espo\\Classes\\AppParams\\AddressCountryData"
}
}

View File

@@ -0,0 +1,13 @@
{
"beforeLoginHookClassNameList": [
"Espo\\Core\\Authentication\\Hook\\Hooks\\FailedAttemptsLimit",
"Espo\\Core\\Authentication\\Hook\\Hooks\\FailedCodeAttemptsLimit"
],
"onLoginHookClassNameList": [
"Espo\\Core\\Authentication\\Hook\\Hooks\\IpAddressWhitelist"
],
"onFailHookClassNameList": [],
"onSuccessHookClassNameList": [],
"onSuccessByTokenHookClassNameList": [],
"onSecondStepRequiredHookClassNameList": []
}

View File

@@ -0,0 +1,26 @@
{
"Totp": {
"settings": {
"isAvailable": true
},
"userApplyView": "views/user-security/modals/totp",
"loginClassName": "Espo\\Core\\Authentication\\TwoFactor\\Totp\\TotpLogin",
"userSetupClassName": "Espo\\Core\\Authentication\\TwoFactor\\Totp\\TotpUserSetup"
},
"Email": {
"settings": {
"isAvailable": true
},
"userApplyView": "views/user-security/modals/two-factor-email",
"loginClassName": "Espo\\Core\\Authentication\\TwoFactor\\Email\\EmailLogin",
"userSetupClassName": "Espo\\Core\\Authentication\\TwoFactor\\Email\\EmailUserSetup"
},
"Sms": {
"settings": {
"isAvailable": true
},
"userApplyView": "views/user-security/modals/two-factor-sms",
"loginClassName": "Espo\\Core\\Authentication\\TwoFactor\\Sms\\SmsLogin",
"userSetupClassName": "Espo\\Core\\Authentication\\TwoFactor\\Sms\\SmsUserSetup"
}
}

View File

@@ -0,0 +1,34 @@
{
"reminders": {
"className": "Espo\\Classes\\Cleanup\\Reminders",
"order": 10
},
"webhookQueue": {
"className": "Espo\\Classes\\Cleanup\\WebhookQueue",
"order": 11
},
"twoFactorCodes": {
"className": "Espo\\Classes\\Cleanup\\TwoFactorCodes"
},
"massActions": {
"className": "Espo\\Classes\\Cleanup\\MassActions"
},
"exports": {
"className": "Espo\\Classes\\Cleanup\\Exports"
},
"passwordChangeRequests": {
"className": "Espo\\Classes\\Cleanup\\PasswordChangeRequests"
},
"subscribers": {
"className": "Espo\\Classes\\Cleanup\\Subscribers"
},
"audit": {
"className": "Espo\\Classes\\Cleanup\\Audit"
},
"stars": {
"className": "Espo\\Classes\\Cleanup\\Stars"
},
"appLog": {
"className": "Espo\\Classes\\Cleanup\\AppLog"
}
}

View File

@@ -0,0 +1,59 @@
{
"scriptList": [
"client/lib/espo.js",
"client/lib/espo-main.js"
],
"developerModeScriptList": [
"client/src/loader.js"
],
"linkList": [
{
"href": "client/fonts/inter/Inter-Regular.woff2",
"as": "font",
"type": "font/woff2",
"rel": "preload",
"noTimestamp": true,
"crossorigin": true
},
{
"href": "client/fonts/inter/Inter-Medium.woff2",
"as": "font",
"type": "font/woff2",
"rel": "preload",
"noTimestamp": true,
"crossorigin": true
},
{
"href": "client/fonts/inter/Inter-SemiBold.woff2",
"as": "font",
"type": "font/woff2",
"rel": "preload",
"noTimestamp": true,
"crossorigin": true
},
{
"href": "client/fonts/inter/Inter-Bold.woff2",
"as": "font",
"type": "font/woff2",
"rel": "preload",
"noTimestamp": true,
"crossorigin": true
},
{
"href": "client/fonts/fa-solid-900.woff2",
"as": "font",
"type": "font/woff2",
"rel": "preload",
"noTimestamp": true,
"crossorigin": true
},
{
"href": "client/fonts/fa-regular-400.woff2",
"as": "font",
"type": "font/woff2",
"rel": "preload",
"noTimestamp": true,
"crossorigin": true
}
]
}

View File

@@ -0,0 +1,3 @@
{
"classList": []
}

View File

@@ -0,0 +1,63 @@
{
"items": {
"globalSearch": {
"view": "views/global-search/global-search",
"class": "navbar-form global-search-container",
"order": 5,
"disabled": false
},
"quickCreate": {
"view": "views/site/navbar/quick-create",
"class": "dropdown hidden-xs quick-create-container",
"order": 10,
"disabled": false
},
"notificationBadge": {
"view": "views/notification/badge",
"class": "dropdown notifications-badge-container",
"order": 15,
"disabled": false
}
},
"menuItems": {
"admin": {
"order": 0,
"groupIndex": 1,
"link": "#Admin",
"labelTranslation": "Global.labels.Administration",
"accessDataList": [
{
"isAdminOnly": true
}
]
},
"preferences": {
"order": 1,
"groupIndex": 1,
"link": "#Preferences",
"labelTranslation": "Global.labels.Preferences"
},
"lastViewed": {
"order": 0,
"groupIndex": 5,
"link": "#LastViewed",
"labelTranslation": "Global.scopeNamesPlural.LastViewed",
"configCheck": "!actionHistoryDisabled",
"handler": "handlers/navbar-menu",
"actionFunction": "lastViewed"
},
"about": {
"order": 0,
"groupIndex": 10,
"link": "#About",
"labelTranslation": "Global.labels.About"
},
"logout": {
"order": 1,
"groupIndex": 10,
"labelTranslation": "Global.labels.Log Out",
"handler": "handlers/navbar-menu",
"actionFunction": "logout"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"panels": {
"activities": {
"name": "activities",
"label": "Activities",
"view": "crm:views/record/panels/activities",
"aclScope": "Activities"
},
"history": {
"name": "history",
"label": "History",
"view": "crm:views/record/panels/history",
"aclScope": "Activities"
},
"tasks": {
"name": "tasks",
"label": "Tasks",
"view": "crm:views/record/panels/tasks",
"aclScope": "Task"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"AddressMap/view/:entityType/:id/:field": {
"params": {
"controller": "AddressMap",
"action": "view"
}
},
"Admin/:page": {
"params": {
"controller": "Admin",
"action": "page"
},
"order": 1
},
"Admin/:page/:options": {
"params": {
"controller": "Admin",
"action": "page"
},
"order": 1
}
}

View File

@@ -0,0 +1,301 @@
{
"functionList": [
{
"name": "EQUAL",
"insertText": "EQUAL:(VALUE1, VALUE2)",
"returnType": "bool"
},
{
"name": "NOT_EQUAL",
"insertText": "NOT_EQUAL:(VALUE1, VALUE2)",
"returnType": "bool"
},
{
"name": "OR",
"insertText": "OR:(EXPR1, EXPR2)",
"returnType": "bool"
},
{
"name": "AND",
"insertText": "AND:(EXPR1, EXPR2)",
"returnType": "bool"
},
{
"name": "NOT",
"insertText": "NOT:(EXPR)",
"returnType": "bool"
},
{
"name": "LIKE",
"insertText": "LIKE:(VALUE, 'pattern%')",
"returnType": "bool"
},
{
"name": "NOT_LIKE",
"insertText": "NOT_LIKE:(VALUE, 'pattern%')",
"returnType": "bool"
},
{
"name": "GREATER_THAN",
"insertText": "GREATER_THAN:(VALUE1, VALUE2)",
"returnType": "bool"
},
{
"name": "LESS_THAN",
"insertText": "LESS_THAN:(VALUE1, VALUE2)",
"returnType": "bool"
},
{
"name": "GREATER_THAN_OR_EQUAL",
"insertText": "GREATER_THAN_OR_EQUAL:(VALUE1, VALUE2)",
"returnType": "bool"
},
{
"name": "LESS_THAN_OR_EQUAL",
"insertText": "LESS_THAN_OR_EQUAL:(VALUE1, VALUE2)",
"returnType": "bool"
},
{
"name": "IS_NULL",
"insertText": "IS_NULL:(VALUE)",
"returnType": "bool"
},
{
"name": "IS_NOT_NULL",
"insertText": "IS_NOT_NULL:(VALUE)",
"returnType": "bool"
},
{
"name": "IN",
"insertText": "IN:(VALUE, VALUE1, VALUE2, VALUE3)",
"returnType": "bool"
},
{
"name": "NOT_IN",
"insertText": "NOT_IN:(VALUE, VALUE1, VALUE2, VALUE3)",
"returnType": "bool"
},
{
"name": "IF",
"insertText": "IF:(CONDITION, THEN_VALUE, ELSE_VALUE)"
},
{
"name": "SWITCH",
"insertText": "SWITCH:(CONDITION1, VALUE1, CONDITION2, VALUE2, ELSE_VALUE)"
},
{
"name": "MAP",
"insertText": "MAP:(EXPR, WHEN_VALUE1, THEN_VALUE1, WHEN_VALUE2, THEN_VALUE2, ELSE_VALUE)"
},
{
"name": "MONTH_NUMBER",
"insertText": "MONTH_NUMBER:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "WEEK_NUMBER_0",
"insertText": "WEEK_NUMBER_0:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "WEEK_NUMBER_1",
"insertText": "WEEK_NUMBER_1:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "DAYOFWEEK",
"insertText": "DAYOFWEEK:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "DAYOFMONTH",
"insertText": "DAYOFMONTH:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "YEAR",
"insertText": "YEAR:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "HOUR",
"insertText": "HOUR:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "MINUTE",
"insertText": "MINUTE:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "MONTH",
"insertText": "MONTH:(DATE_VALUE)",
"returnType": "string"
},
{
"name": "QUARTER",
"insertText": "QUARTER:(DATE_VALUE)",
"returnType": "string"
},
{
"name": "WEEK",
"insertText": "WEEK:(DATE_VALUE)",
"returnType": "string"
},
{
"name": "NOW",
"insertText": "NOW:()",
"returnType": "string"
},
{
"name": "TZ",
"insertText": "TZ:(DATE_VALUE, OFFSET)",
"returnType": "string"
},
{
"name": "UNIX_TIMESTAMP",
"insertText": "UNIX_TIMESTAMP:(DATE_VALUE)",
"returnType": "int"
},
{
"name": "TIMESTAMPDIFF_YEAR",
"insertText": "TIMESTAMPDIFF_YEAR:(DATE_FROM, DATE_TO)",
"returnType": "int"
},
{
"name": "TIMESTAMPDIFF_MONTH",
"insertText": "TIMESTAMPDIFF_MONTH:(DATE_FROM, DATE_TO)",
"returnType": "int"
},
{
"name": "TIMESTAMPDIFF_WEEK",
"insertText": "TIMESTAMPDIFF_WEEK:(DATE_FROM, DATE_TO)",
"returnType": "int"
},
{
"name": "TIMESTAMPDIFF_DAY",
"insertText": "TIMESTAMPDIFF_DAY:(DATE_FROM, DATE_TO)",
"returnType": "int"
},
{
"name": "TIMESTAMPDIFF_HOUR",
"insertText": "TIMESTAMPDIFF_HOUR:(DATE_FROM, DATE_TO)",
"returnType": "int"
},
{
"name": "TIMESTAMPDIFF_MINUTE",
"insertText": "TIMESTAMPDIFF_MINUTE:(DATE_FROM, DATE_TO)",
"returnType": "int"
},
{
"name": "TIMESTAMPDIFF_SECOND",
"insertText": "TIMESTAMPDIFF_SECOND:(DATE_FROM, DATE_TO)",
"returnType": "int"
},
{
"name": "CONCAT",
"insertText": "CONCAT:(STRING1, STRING2)",
"returnType": "string"
},
{
"name": "LEFT",
"insertText": "LEFT:(STRING, NUMBER_OF_CHARACTERS)",
"returnType": "string"
},
{
"name": "LOWER",
"insertText": "LOWER:(STRING)",
"returnType": "string"
},
{
"name": "UPPER",
"insertText": "UPPER:(STRING)",
"returnType": "string"
},
{
"name": "TRIM",
"insertText": "TRIM:(STRING)",
"returnType": "string"
},
{
"name": "CHAR_LENGTH",
"insertText": "CHAR_LENGTH:(STRING)",
"returnType": "int"
},
{
"name": "BINARY",
"insertText": "BINARY:(STRING)",
"returnType": "string"
},
{
"name": "REPLACE",
"insertText": "REPLACE:(HAYSTACK, NEEDLE, REPLACE_WITH)",
"returnType": "string"
},
{
"name": "ADD",
"insertText": "ADD:(VALUE1, VALUE2)",
"returnType": "float"
},
{
"name": "SUB",
"insertText": "SUB:(VALUE1, VALUE2)",
"returnType": "float"
},
{
"name": "MUL",
"insertText": "MUL:(VALUE1, VALUE2)",
"returnType": "float"
},
{
"name": "DIV",
"insertText": "DIV:(VALUE1, VALUE2)",
"returnType": "float"
},
{
"name": "MOD",
"insertText": "MOD:(VALUE1, VALUE2)",
"returnType": "float"
},
{
"name": "FLOOR",
"insertText": "FLOOR:(VALUE)",
"returnType": "int"
},
{
"name": "CEIL",
"insertText": "CEIL:(VALUE)",
"returnType": "int"
},
{
"name": "ROUND",
"insertText": "ROUND:(VALUE, PRECISION)",
"returnType": "float"
},
{
"name": "COUNT",
"insertText": "COUNT:(EXPR)",
"returnType": "int"
},
{
"name": "SUM",
"insertText": "SUM:(EXPR)",
"returnType": "int|float"
},
{
"name": "AVG",
"insertText": "AVG:(EXPR)",
"returnType": "float"
},
{
"name": "MAX",
"insertText": "MAX:(EXPR)",
"returnType": "int|float"
},
{
"name": "MIN",
"insertText": "MIN:(EXPR)",
"returnType": "int|float"
}
]
}

View File

@@ -0,0 +1,173 @@
{
"entityTypeListParamList": [
"tabList",
"quickCreateList",
"globalSearchEntityList",
"assignmentEmailNotificationsEntityList",
"assignmentNotificationsEntityList",
"calendarEntityList",
"streamEmailNotificationsEntityList",
"activitiesEntityList",
"historyEntityList",
"streamEmailNotificationsTypeList",
"emailKeepParentTeamsEntityList"
],
"params": {
"isDeveloperMode": {
"readOnly": true
},
"clientSecurityHeadersDisabled": {
"readOnly": true
},
"clientCspDisabled": {
"readOnly": true
},
"clientCspScriptSourceList": {
"readOnly": true
},
"clientStrictTransportSecurityHeaderDisabled": {
"readOnly": true
},
"clientXFrameOptionsHeaderDisabled": {
"readOnly": true
},
"systemUserId": {
"level": "admin",
"readOnly": true
},
"smtpPassword": {
"level": "internal"
},
"awsS3Storage": {
"level": "system"
},
"defaultFileStorage": {
"level": "admin",
"readOnly": true
},
"smsProvider": {
"level": "admin"
},
"authAnotherUserDisabled": {
"level": "admin",
"readOnly": true
},
"userNameRegularExpression": {
"readOnly": true
},
"workingTimeCalendar": {
"level": "admin"
},
"ldapPassword": {
"level": "internal"
},
"oidcClientId": {
"level": "admin"
},
"oidcClientSecret": {
"level": "internal"
},
"oidcAuthorizationEndpoint": {
"level": "admin"
},
"oidcUserInfoEndpoint": {
"level": "admin"
},
"oidcTokenEndpoint": {
"level": "admin"
},
"oidcJwksEndpoint": {
"level": "admin"
},
"oidcJwksCachePeriod": {
"level": "admin"
},
"oidcJwtSignatureAlgorithmList": {
"level": "admin"
},
"oidcScopes": {
"level": "admin"
},
"oidcGroupClaim": {
"level": "admin"
},
"oidcCreateUser": {
"level": "admin"
},
"oidcUsernameClaim": {
"level": "admin"
},
"oidcTeamsIds": {
"level": "admin"
},
"oidcTeamsNames": {
"level": "admin"
},
"oidcTeamsColumns": {
"level": "admin"
},
"oidcSync": {
"level": "admin"
},
"oidcSyncTeams": {
"level": "admin"
},
"oidcFallback": {
"level": "admin"
},
"oidcAllowRegularUserFallback": {
"level": "admin"
},
"oidcAllowAdminUser": {
"level": "admin"
},
"oidcAuthorizationPrompt": {
"level": "admin"
},
"oidcAuthorizationMaxAge": {
"level": "admin"
},
"oidcLogoutUrl": {
"level": "admin"
},
"apiCorsAllowedMethodList": {
"level": "admin"
},
"apiCorsAllowedHeaderList": {
"level": "admin"
},
"apiCorsAllowedOriginList": {
"level": "admin"
},
"apiCorsMaxAge": {
"level": "admin"
},
"customExportManifest": {
"level": "admin"
},
"starsLimit": {
"level": "admin"
},
"authIpAddressCheck": {
"level": "superAdmin"
},
"authIpAddressWhitelist": {
"level": "superAdmin"
},
"authIpAddressCheckExcludedUsers": {
"level": "superAdmin"
},
"availableReactions": {
"level": "default"
},
"emailScheduledBatchCount": {
"level": "admin"
},
"streamEmailWithContentEntityTypeList": {
"level": "admin"
},
"baselineRole": {
"level": "admin"
}
}
}

View File

@@ -0,0 +1,75 @@
{
"import": {
"className": "Espo\\Classes\\ConsoleCommands\\Import",
"listed": true
},
"clearCache": {
"listed": true,
"noSystemUser": true
},
"rebuild": {
"listed": true,
"noSystemUser": true,
"allowedFlags": [
"hard",
"y"
]
},
"updateAppTimestamp": {
"listed": true,
"noSystemUser": true
},
"appInfo": {
"listed": true
},
"setPassword": {
"listed": true
},
"upgrade": {
"listed": true
},
"extension": {
"listed": true
},
"runJob": {
"listed": true,
"allowedOptions": [
"job",
"targetId",
"targetType"
]
},
"version": {
"listed": true,
"noSystemUser": true
},
"createAdminUser": {
"className": "Espo\\Classes\\ConsoleCommands\\CreateAdminUser",
"listed": true
},
"rebuildCategoryPaths": {
"className": "Espo\\Classes\\ConsoleCommands\\RebuildCategoryPaths",
"listed": true
},
"populateArrayValues": {
"className": "Espo\\Classes\\ConsoleCommands\\PopulateArrayValues",
"listed": true
},
"populateNumbers": {
"className": "Espo\\Classes\\ConsoleCommands\\PopulateNumbers",
"listed": false
},
"checkFilePermissions": {
"className": "Espo\\Classes\\ConsoleCommands\\CheckFilePermissions",
"listed": true,
"noSystemUser": true
},
"migrate": {
"listed": true,
"noSystemUser": true
},
"migrationVersionStep": {
"listed": false,
"noSystemUser": true
}
}

View File

@@ -0,0 +1,95 @@
{
"authTokenManager": {
"className": "Espo\\Core\\Authentication\\AuthToken\\EspoManager"
},
"ormMetadataData": {
"className": "Espo\\Core\\Utils\\Metadata\\OrmMetadataData"
},
"classFinder": {
"className": "Espo\\Core\\Utils\\ClassFinder"
},
"fileStorageManager": {
"className": "Espo\\Core\\FileStorage\\Manager"
},
"jobManager": {
"className": "Espo\\Core\\Job\\JobManager"
},
"webSocketSubmission": {
"className": "Espo\\Core\\WebSocket\\Submission"
},
"crypt": {
"className": "Espo\\Core\\Utils\\Crypt"
},
"passwordHash": {
"className": "Espo\\Core\\Utils\\PasswordHash"
},
"number": {
"loaderClassName": "Espo\\Core\\Loaders\\NumberUtil"
},
"selectManagerFactory": {
"className": "Espo\\Core\\Select\\SelectManagerFactory"
},
"serviceFactory": {
"className": "Espo\\Core\\ServiceFactory"
},
"recordServiceContainer": {
"className": "Espo\\Core\\Record\\ServiceContainer"
},
"templateFileManager": {
"className": "Espo\\Core\\Utils\\TemplateFileManager"
},
"webhookManager": {
"className": "Espo\\Core\\Webhook\\Manager"
},
"hookManager": {
"className": "Espo\\Core\\HookManager"
},
"clientManager": {
"className": "Espo\\Core\\Utils\\ClientManager"
},
"themeManager": {
"className": "Espo\\Core\\Utils\\ThemeManager"
},
"fieldUtil": {
"className": "Espo\\Core\\Utils\\FieldUtil"
},
"emailSender": {
"className": "Espo\\Core\\Mail\\EmailSender"
},
"mailSender": {
"className": "Espo\\Core\\Mail\\Sender"
},
"htmlizerFactory": {
"className": "Espo\\Core\\Htmlizer\\HtmlizerFactory"
},
"fieldValidationManager": {
"className": "Espo\\Core\\FieldValidation\\FieldValidationManager"
},
"assignmentCheckerManager": {
"className": "Espo\\Core\\Acl\\AssignmentChecker\\AssignmentCheckerManager"
},
"hasher": {
"className": "Espo\\Core\\Utils\\Hasher"
},
"emailFilterManager": {
"className": "Espo\\Core\\Utils\\EmailFilterManager"
},
"externalAccountClientManager": {
"className": "Espo\\Core\\ExternalAccount\\ClientManager"
},
"formulaManager": {
"className": "Espo\\Core\\Formula\\Manager"
},
"user": {
"settable": true
},
"streamService": {
"className": "Espo\\Tools\\Stream\\Service"
},
"systemConfig": {
"className": "Espo\\Core\\Utils\\Config\\SystemConfig"
},
"applicationConfig": {
"className": "Espo\\Core\\Utils\\Config\\ApplicationConfig"
}
}

View File

@@ -0,0 +1,269 @@
{
"symbolMap":{
"AED":"د.إ",
"AFN":"؋",
"ALL":"L",
"ANG":"ƒ",
"AOA":"Kz",
"ARS":"$",
"AUD":"$",
"AWG":"ƒ",
"AZN":"₼",
"BAM":"KM",
"BBD":"$",
"BDT":"৳",
"BGN":"лв",
"BHD":".د.ب",
"BIF":"FBu",
"BMD":"$",
"BND":"$",
"BOB":"Bs.",
"BRL":"R$",
"BSD":"$",
"BTN":"Nu.",
"BWP":"P",
"BYN": "Br",
"BYR":"p.",
"BZD":"BZ$",
"CAD":"$",
"CDF":"FC",
"CHF":"Fr.",
"CLP":"$",
"CNY":"¥",
"COP":"$",
"CRC":"₡",
"CUC":"$",
"CUP":"₱",
"CVE":"$",
"CZK":"Kč",
"DJF":"Fdj",
"DKK":"kr",
"DOP":"RD$",
"DZD":"دج",
"EEK":"kr",
"EGP":"£",
"ERN":"Nfk",
"ETB":"Br",
"EUR":"€",
"FJD":"$",
"FKP":"£",
"GBP":"£",
"GEL":"₾",
"GGP":"£",
"GHC":"₵",
"GHS":"GH₵",
"GIP":"£",
"GMD":"D",
"GNF":"FG",
"GTQ":"Q",
"GYD":"$",
"HKD":"$",
"HNL":"L",
"HRK":"kn",
"HTG":"G",
"HUF":"Ft",
"IDR":"Rp",
"ILS":"₪",
"IMP":"£",
"INR":"₹",
"IQD":"ع.د",
"IRR":"﷼",
"ISK":"kr",
"JEP":"£",
"JMD":"J$",
"JPY":"¥",
"KES":"KSh",
"KGS":"лв",
"KHR":"៛",
"KMF":"CF",
"KPW":"₩",
"KRW":"₩",
"KYD":"$",
"KZT":"₸",
"LAK":"₭",
"LBP":"£",
"LKR":"₨",
"LRD":"$",
"LSL":"M",
"LTL":"Lt",
"LVL":"Ls",
"MAD":"MAD",
"MDL":"lei",
"MGA":"Ar",
"MKD":"ден",
"MMK":"K",
"MNT":"₮",
"MOP":"MOP$",
"MUR":"₨",
"MVR":"Rf",
"MWK":"MK",
"MXN":"$",
"MYR":"RM",
"MZN":"MT",
"NAD":"$",
"NGN":"₦",
"NIO":"C$",
"NOK":"kr",
"NPR":"₨",
"NZD":"$",
"OMR":"﷼",
"PAB":"B/.",
"PEN":"S/.",
"PGK":"K",
"PHP":"₱",
"PKR":"₨",
"PLN":"zł",
"PYG":"Gs",
"QAR":"﷼",
"RMB":"¥",
"RON":"lei",
"RSD":"Дин.",
"RUB":"₽",
"RWF":"R₣",
"SAR":"﷼",
"SBD":"$",
"SCR":"₨",
"SDG":"ج.س.",
"SEK":"kr",
"SGD":"$",
"SHP":"£",
"SLL":"Le",
"SOS":"S",
"SRD":"$",
"SSP":"£",
"STD":"Db",
"SVC":"$",
"SYP":"£",
"SZL":"E",
"THB":"฿",
"TJS":"SM",
"TMT":"T",
"TND":"د.ت",
"TOP":"T$",
"TRL":"₤",
"TRY":"₺",
"TTD":"TT$",
"TVD":"$",
"TWD":"NT$",
"TZS":"TSh",
"UAH":"₴",
"UGX":"USh",
"USD":"$",
"UYU":"$U",
"UZS":"лв",
"VEF":"Bs",
"VND":"₫",
"VUV":"VT",
"WST":"WS$",
"XAF":"FCFA",
"XBT":"Ƀ",
"XCD":"$",
"XOF":"CFA",
"XPF":"₣",
"YER":"﷼",
"ZAR":"R",
"ZWD":"Z$",
"BTC":"฿"
},
"list": [
"AFN",
"AED",
"ALL",
"ANG",
"AOA",
"ARS",
"AUD",
"BAM",
"BDT",
"BGN",
"BHD",
"BND",
"BOB",
"BRL",
"BWP",
"BYN",
"CAD",
"CHF",
"CLP",
"CNY",
"COP",
"CRC",
"CVE",
"CZK",
"DKK",
"DOP",
"DZD",
"EGP",
"EUR",
"FJD",
"GBP",
"GNF",
"GTQ",
"HKD",
"HNL",
"HRK",
"HUF",
"IDR",
"ILS",
"INR",
"IRR",
"JMD",
"JOD",
"JPY",
"KES",
"KRW",
"KWD",
"KYD",
"KZT",
"LBP",
"LKR",
"MAD",
"MDL",
"MKD",
"MMK",
"MUR",
"MXN",
"MYR",
"MZN",
"NAD",
"NGN",
"NIO",
"NOK",
"NPR",
"NZD",
"OMR",
"PEN",
"PGK",
"PHP",
"PKR",
"PLN",
"PYG",
"QAR",
"RON",
"RSD",
"RUB",
"SAR",
"SCR",
"SEK",
"SGD",
"SLL",
"SVC",
"THB",
"TND",
"TRY",
"TTD",
"TWD",
"TZS",
"UAH",
"UGX",
"USD",
"UYU",
"UZS",
"VND",
"XAF",
"YER",
"ZAR",
"ZMW",
"ZWL"
]
}

View File

@@ -0,0 +1,3 @@
{
"entityConverterClassNameMap": {}
}

View File

@@ -0,0 +1,26 @@
{
"Mysql": {
"detailsProviderClassName": "Espo\\Core\\Utils\\Database\\DetailsProviders\\MysqlDetailsProvider",
"dbalConnectionFactoryClassName": "Espo\\Core\\Utils\\Database\\Dbal\\Factories\\MysqlConnectionFactory",
"indexHelperClassName": "Espo\\Core\\Utils\\Database\\Orm\\IndexHelpers\\MysqlIndexHelper",
"columnPreparatorClassName": "Espo\\Core\\Utils\\Database\\Schema\\ColumnPreparators\\MysqlColumnPreparator",
"preRebuildActionClassNameList": [
"Espo\\Core\\Utils\\Database\\Schema\\RebuildActions\\PrepareForFulltextIndex"
],
"postRebuildActionClassNameList": [],
"dbalTypeClassNameMap": {
"mediumtext": "Espo\\Core\\Utils\\Database\\Dbal\\Types\\MediumtextType",
"longtext": "Espo\\Core\\Utils\\Database\\Dbal\\Types\\LongtextType",
"uuid": "Espo\\Core\\Utils\\Database\\Dbal\\Types\\UuidType"
}
},
"Postgresql": {
"detailsProviderClassName": "Espo\\Core\\Utils\\Database\\DetailsProviders\\PostgresqlDetailsProvider",
"dbalConnectionFactoryClassName": "Espo\\Core\\Utils\\Database\\Dbal\\Factories\\PostgresqlConnectionFactory",
"indexHelperClassName": "Espo\\Core\\Utils\\Database\\Orm\\IndexHelpers\\PostgresqlIndexHelper",
"columnPreparatorClassName": "Espo\\Core\\Utils\\Database\\Schema\\ColumnPreparators\\PostgresqlColumnPreparator",
"dbalTypeClassNameMap": {
"uuid": "Espo\\Core\\Utils\\Database\\Dbal\\Types\\UuidType"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"dateFormatList": [
"DD.MM.YYYY",
"MM/DD/YYYY",
"DD/MM/YYYY",
"YYYY-MM-DD",
"DD. MM. YYYY"
],
"timeFormatList": [
"HH:mm",
"hh:mma",
"hh:mmA",
"hh:mm A",
"hh:mm a"
]
}

View File

@@ -0,0 +1,33 @@
{
"Standard": [
{
"name": "My Espo",
"layout": [
{
"id": "defaultActivities",
"name": "Activities",
"x": 2,
"y": 2,
"width": 2,
"height": 2
},
{
"id": "defaultStream",
"name": "Stream",
"x": 0,
"y": 0,
"width": 2,
"height": 4
},
{
"id": "defaultTasks",
"name": "Tasks",
"x": 2,
"y": 4,
"width": 2,
"height": 2
}
]
}
]
}

View File

@@ -0,0 +1,7 @@
{
"Standard": {
"defaultStream": {
"displayRecords": 10
}
}
}

View File

@@ -0,0 +1,16 @@
{
"placeholders": {
"today": {
"className": "Espo\\Tools\\EmailTemplate\\Placeholders\\Today",
"order": 0
},
"now": {
"className": "Espo\\Tools\\EmailTemplate\\Placeholders\\Now",
"order": 1
},
"currentYear": {
"className": "Espo\\Tools\\EmailTemplate\\Placeholders\\CurrentYear",
"order": 2
}
}
}

View File

@@ -0,0 +1,16 @@
{
"createHookClassNameList": [
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\PlusCreateHook",
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\EventCreateHook"
],
"deleteHookClassNameList": [
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\PlusDeleteHook",
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\EventDeleteHook",
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\DeleteHasChildrenLinks"
],
"updateHookClassNameList": [
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\AssignedUsersUpdateHook",
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\CollaboratorsUpdateHook",
"Espo\\Tools\\EntityManager\\Hook\\Hooks\\StreamUpdateHook"
]
}

View File

@@ -0,0 +1,221 @@
{
"Global": {
"stars": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"optimisticConcurrencyControl": {
"location": "entityDefs",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"preserveAuditLog": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
}
},
"@Company": {
"updateDuplicateCheck": {
"location": "recordDefs",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"duplicateCheckFieldList": {
"location": "scopes",
"fieldDefs": {
"type": "multiEnum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/duplicate-check-field-list"
}
},
"collaborators": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"assignedUsers": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"aclContactLink": {
"location": "aclDefs",
"param": "contactLink",
"fieldDefs": {
"type": "enum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/acl-contact-link"
}
},
"aclAccountLink": {
"location": "aclDefs",
"param": "accountLink",
"fieldDefs": {
"type": "enum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/acl-account-link"
}
}
},
"@Person": {
"updateDuplicateCheck": {
"location": "recordDefs",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"duplicateCheckFieldList": {
"location": "scopes",
"fieldDefs": {
"type": "multiEnum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/duplicate-check-field-list"
}
},
"collaborators": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"assignedUsers": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"aclContactLink": {
"location": "aclDefs",
"param": "contactLink",
"fieldDefs": {
"type": "enum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/acl-contact-link"
}
},
"aclAccountLink": {
"location": "aclDefs",
"param": "accountLink",
"fieldDefs": {
"type": "enum",
"tooltip": true
},
"view": "views/admin/entity-manager/fields/acl-account-link"
}
},
"@Base": {
"updateDuplicateCheck": {
"location": "recordDefs",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"duplicateCheckFieldList": {
"location": "scopes",
"fieldDefs": {
"type": "multiEnum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/duplicate-check-field-list"
}
},
"collaborators": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"assignedUsers": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"aclContactLink": {
"location": "aclDefs",
"param": "contactLink",
"fieldDefs": {
"type": "enum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/acl-contact-link"
}
},
"aclAccountLink": {
"location": "aclDefs",
"param": "accountLink",
"fieldDefs": {
"type": "enum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/acl-account-link"
}
}
},
"@BasePlus": {
"updateDuplicateCheck": {
"location": "recordDefs",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"duplicateCheckFieldList": {
"location": "scopes",
"fieldDefs": {
"type": "multiEnum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/duplicate-check-field-list"
}
},
"collaborators": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"assignedUsers": {
"location": "scopes",
"fieldDefs": {
"type": "bool",
"tooltip": true
}
},
"aclContactLink": {
"location": "aclDefs",
"param": "contactLink",
"fieldDefs": {
"type": "enum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/acl-contact-link"
}
},
"aclAccountLink": {
"location": "aclDefs",
"param": "accountLink",
"fieldDefs": {
"type": "enum",
"tooltip": true,
"view": "views/admin/entity-manager/fields/acl-account-link"
}
}
}
}

View File

@@ -0,0 +1,7 @@
[
"Base",
"BasePlus",
"Event",
"Person",
"Company"
]

View File

@@ -0,0 +1,22 @@
{
"Base": {
"entityClassName": "Espo\\Core\\Templates\\Entities\\Base",
"repositoryClassName": "Espo\\Core\\Templates\\Repositories\\Base"
},
"BasePlus": {
"entityClassName": "Espo\\Core\\Templates\\Entities\\BasePlus",
"repositoryClassName": "Espo\\Core\\Templates\\Repositories\\BasePlus"
},
"Event": {
"entityClassName": "Espo\\Core\\Templates\\Entities\\Event",
"repositoryClassName": "Espo\\Core\\Templates\\Repositories\\Event"
},
"Company": {
"entityClassName": "Espo\\Core\\Templates\\Entities\\Company",
"repositoryClassName": "Espo\\Core\\Templates\\Repositories\\Company"
},
"Person": {
"entityClassName": "Espo\\Core\\Templates\\Entities\\Person",
"repositoryClassName": "Espo\\Core\\Templates\\Repositories\\Person"
}
}

View File

@@ -0,0 +1,92 @@
{
"formatList": [
"xlsx",
"csv"
],
"formatDefs": {
"csv": {
"processorClassName": "Espo\\Tools\\Export\\Format\\Csv\\Processor",
"additionalFieldsLoaderClassName": "Espo\\Tools\\Export\\Format\\Csv\\AdditionalFieldsLoader",
"mimeType": "text/csv",
"fileExtension": "csv"
},
"xlsx": {
"processorClassName": "Espo\\Tools\\Export\\Format\\Xlsx\\Processor",
"processorParamsHandler": "Espo\\Tools\\Export\\Format\\Xlsx\\ParamsHandler",
"additionalFieldsLoaderClassName": "Espo\\Tools\\Export\\Format\\Xlsx\\AdditionalFieldsLoader",
"mimeType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"fileExtension": "xlsx",
"cellValuePreparatorClassNameMap": {
"link": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Link",
"linkOne": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Link",
"linkParent": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Link",
"file": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Link",
"bool": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Boolean",
"int": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Integer",
"float": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Floating",
"currency": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Currency",
"currencyConverted": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\CurrencyConverted",
"personName": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\PersonName",
"date": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Date",
"datetime": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\DateTime",
"datetimeOptional": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\DateTimeOptional",
"linkMultiple": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\LinkMultiple",
"attachmentMultiple": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\LinkMultiple",
"address": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Address",
"duration": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Duration",
"enum": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\Enumeration",
"multiEnum": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\MultiEnum",
"array": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\MultiEnum",
"checklist": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\MultiEnum",
"urlMultiple": "Espo\\Tools\\Export\\Format\\Xlsx\\CellValuePreparators\\MultiEnum"
},
"params": {
"fields": {
"lite": {
"type": "bool",
"default": false,
"tooltip": true
},
"recordLinks": {
"type": "bool",
"default": false
},
"title": {
"type": "bool",
"default": false,
"tooltip": true
}
},
"layout": [
[
{"name": "lite"},
{"name": "recordLinks"},
{"name": "title"}
]
],
"dynamicLogic": {
"recordLinks": {
"visible": {
"conditionGroup": [
{
"type": "isFalse",
"attribute": "xlsxLite"
}
]
}
},
"title": {
"visible": {
"conditionGroup": [
{
"type": "isFalse",
"attribute": "xlsxLite"
}
]
}
}
}
}
}
}
}

View File

@@ -0,0 +1,24 @@
{
"readLoaderClassNameList": [
"Espo\\Core\\FieldProcessing\\Link\\HasOneLoader",
"Espo\\Core\\FieldProcessing\\Link\\NotJoinedLoader",
"Espo\\Core\\FieldProcessing\\LinkMultiple\\Loader",
"Espo\\Core\\FieldProcessing\\LinkParent\\Loader",
"Espo\\Core\\FieldProcessing\\EmailAddress\\Loader",
"Espo\\Core\\FieldProcessing\\PhoneNumber\\Loader",
"Espo\\Core\\FieldProcessing\\Stream\\FollowersLoader",
"Espo\\Core\\FieldProcessing\\Stars\\StarLoader"
],
"listLoaderClassNameList": [
"Espo\\Core\\FieldProcessing\\LinkParent\\Loader",
"Espo\\Core\\FieldProcessing\\LinkMultiple\\ListLoader"
],
"saverClassNameList": [
"Espo\\Core\\FieldProcessing\\EmailAddress\\Saver",
"Espo\\Core\\FieldProcessing\\PhoneNumber\\Saver",
"Espo\\Core\\FieldProcessing\\Relation\\Saver",
"Espo\\Core\\FieldProcessing\\MultiEnum\\Saver",
"Espo\\Core\\FieldProcessing\\File\\Saver",
"Espo\\Core\\FieldProcessing\\Wysiwyg\\Saver"
]
}

View File

@@ -0,0 +1,105 @@
{
"extensionMimeTypeMap": {
"aac": ["audio/aac"],
"abw": ["application/x-abiword"],
"arc": ["application/x-freearc"],
"avif": ["image/avif"],
"avi": ["video/x-msvideo"],
"azw": ["application/vnd.amazon.ebook"],
"bin": ["application/octet-stream"],
"bmp": ["image/bmp"],
"bz": ["application/x-bzip"],
"bz2": ["application/x-bzip2"],
"cda": ["application/x-cdf"],
"csh": ["application/x-csh"],
"css": ["text/css"],
"csv": ["text/csv"],
"doc": ["application/msword"],
"docx": ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
"eot": ["application/vnd.ms-fontobject"],
"epub": ["application/epub+zip"],
"gz": ["application/gzip"],
"gif": ["image/gif"],
"htm": ["text/html"],
"html": ["text/html"],
"ico": ["image/vnd.microsoft.icon"],
"ics": ["text/calendar"],
"jar": ["application/java-archive"],
"jpeg": ["image/jpeg"],
"jpg": ["image/jpeg"],
"js": ["text/javascript"],
"json": ["application/json"],
"jsonld": ["application/ld+json"],
"mid": ["audio/midi", "audio/x-midi"],
"midi": ["audio/midi", "audio/x-midi"],
"mjs": ["text/javascript"],
"mp3": ["audio/mpeg"],
"mp4": ["video/mp4"],
"mpeg": ["video/mpeg"],
"mpkg": ["application/vnd.apple.installer+xml"],
"odp": ["application/vnd.oasis.opendocument.presentation"],
"ods": ["application/vnd.oasis.opendocument.spreadsheet"],
"odt": ["application/vnd.oasis.opendocument.text"],
"oga": ["audio/ogg"],
"ogv": ["video/ogg"],
"ogx": ["application/ogg"],
"opus": ["audio/opus"],
"otf": ["font/otf"],
"png": ["image/png"],
"pdf": ["application/pdf"],
"php": ["application/x-httpd-php"],
"ppt": ["application/vnd.ms-powerpoint"],
"pptx": ["application/vnd.openxmlformats-officedocument.presentationml.presentation"],
"rar": ["application/vnd.rar"],
"rtf": ["application/rtf"],
"sh": ["application/x-sh"],
"svg": ["image/svg+xml"],
"swf": ["application/x-shockwave-flash"],
"tar": ["application/x-tar"],
"tif": ["image/tiff"],
"tiff": ["image/tiff"],
"ts": ["video/mp2t"],
"ttf": ["font/ttf"],
"txt": ["text/plain"],
"vsd": ["application/vnd.visio"],
"wav": ["audio/wav"],
"weba": ["audio/webm"],
"webm": ["video/webm"],
"webp": ["image/webp"],
"woff": ["font/woff"],
"woff2": ["font/woff2"],
"xhtml": ["application/xhtml+xml"],
"xls": ["application/vnd.ms-excel"],
"xlsx": ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
"xml": ["application/xml"],
"xul": ["application/vnd.mozilla.xul+xml"],
"zip": ["application/zip"],
"3gp": ["video/3gpp", "audio/3gpp"],
"3g2": ["video/3gpp2", "audio/3gpp2"],
"7z": ["application/x-7z-compressed"],
"md": ["text/markdown"]
},
"inlineMimeTypeList": [
"application/pdf",
"text/plain",
"audio/wav",
"audio/mpeg",
"audio/ogg",
"audio/webm",
"video/mpeg",
"video/mp4",
"video/ogg",
"video/webm",
"image/jpeg",
"image/png",
"image/gif",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.ms-word",
"application/vnd.ms-excel",
"application/vnd.oasis.opendocument.text",
"application/vnd.oasis.opendocument.spreadsheet",
"application/msword",
"application/msexcel"
]
}

View File

@@ -0,0 +1,6 @@
{
"implementationClassNameMap": {
"EspoUploadDir": "Espo\\Core\\FileStorage\\Storages\\EspoUploadDir",
"AwsS3": "Espo\\Core\\FileStorage\\Storages\\AwsS3"
}
}

View File

@@ -0,0 +1,655 @@
{
"functionList": [
{
"name": "ifThenElse",
"insertText": "ifThenElse(CONDITION, CONSEQUENT, ALTERNATIVE)"
},
{
"name": "ifThen",
"insertText": "ifThen(CONDITION, CONSEQUENT)"
},
{
"name": "list",
"insertText": "list()",
"returnType": "array"
},
{
"name": "string\\concatenate",
"insertText": "string\\concatenate(STRING_1, STRING_2)",
"returnType": "string"
},
{
"name": "string\\substring",
"insertText": "string\\substring(STRING, START, LENGTH)",
"returnType": "string"
},
{
"name": "string\\contains",
"insertText": "string\\contains(STRING, NEEDLE)",
"returnType": "bool"
},
{
"name": "string\\pos",
"insertText": "string\\pos(STRING, NEEDLE)",
"returnType": "int"
},
{
"name": "string\\pad",
"insertText": "string\\pad(STRING, LENGTH, PAD_STRING)",
"returnType": "string"
},
{
"name": "string\\test",
"insertText": "string\\test(STRING, REGULAR_EXPRESSION)",
"returnType": "bool"
},
{
"name": "string\\length",
"insertText": "string\\length(STRING)",
"returnType": "int"
},
{
"name": "string\\trim",
"insertText": "string\\trim(STRING)",
"returnType": "string"
},
{
"name": "string\\lowerCase",
"insertText": "string\\lowerCase(STRING)",
"returnType": "string"
},
{
"name": "string\\upperCase",
"insertText": "string\\upperCase(STRING)",
"returnType": "string"
},
{
"name": "string\\match",
"insertText": "string\\match(STRING, REGULAR_EXPRESSION)",
"returnType": "string|null"
},
{
"name": "string\\matchAll",
"insertText": "string\\matchAll(STRING, REGULAR_EXPRESSION)",
"returnType": "string[]|null"
},
{
"name": "string\\matchExtract",
"insertText": "string\\matchExtract(STRING, REGULAR_EXPRESSION)",
"returnType": "string[]|null"
},
{
"name": "string\\replace",
"insertText": "string\\replace(STRING, SEARCH, REPLACE)",
"returnType": "string"
},
{
"name": "string\\split",
"insertText": "string\\split(STRING, SEPARATOR)",
"returnType": "string[]"
},
{
"name": "datetime\\today",
"insertText": "datetime\\today()",
"returnType": "string"
},
{
"name": "datetime\\now",
"insertText": "datetime\\now()",
"returnType": "string"
},
{
"name": "datetime\\format",
"insertText": "datetime\\format(VALUE)",
"returnType": "string"
},
{
"name": "datetime\\date",
"insertText": "datetime\\date(VALUE)",
"returnType": "int"
},
{
"name": "datetime\\month",
"insertText": "datetime\\month(VALUE)",
"returnType": "int"
},
{
"name": "datetime\\year",
"insertText": "datetime\\year(VALUE)",
"returnType": "int"
},
{
"name": "datetime\\hour",
"insertText": "datetime\\hour(VALUE)",
"returnType": "int"
},
{
"name": "datetime\\minute",
"insertText": "datetime\\minute(VALUE)",
"returnType": "int"
},
{
"name": "datetime\\dayOfWeek",
"insertText": "datetime\\dayOfWeek(VALUE)",
"returnType": "int"
},
{
"name": "datetime\\addMinutes",
"insertText": "datetime\\addMinutes(VALUE, MINUTES)",
"returnType": "string"
},
{
"name": "datetime\\addHours",
"insertText": "datetime\\addHours(VALUE, HOURS)",
"returnType": "string"
},
{
"name": "datetime\\addDays",
"insertText": "datetime\\addDays(VALUE, DAYS)",
"returnType": "string"
},
{
"name": "datetime\\addWeeks",
"insertText": "datetime\\addWeeks(VALUE, WEEKS)",
"returnType": "string"
},
{
"name": "datetime\\addMonths",
"insertText": "datetime\\addMonths(VALUE, MONTHS)",
"returnType": "string"
},
{
"name": "datetime\\addYears",
"insertText": "datetime\\addYears(VALUE, YEARS)",
"returnType": "string"
},
{
"name": "datetime\\diff",
"insertText": "datetime\\diff(VALUE_1, VALUE_2, INTERVAL_TYPE)",
"returnType": "int"
},
{
"name": "datetime\\closest",
"insertText": "datetime\\closest(VALUE, TYPE, TARGET, IS_PAST, TIMEZONE)",
"returnType": "string"
},
{
"name": "number\\format",
"insertText": "number\\format(VALUE)",
"returnType": "string"
},
{
"name": "number\\abs",
"insertText": "number\\abs(VALUE)"
},
{
"name": "number\\power",
"insertText": "number\\power(VALUE, EXP)",
"returnType": "int|float"
},
{
"name": "number\\round",
"insertText": "number\\round(VALUE, PRECISION)",
"returnType": "int|float"
},
{
"name": "number\\floor",
"insertText": "number\\floor(VALUE)",
"returnType": "int"
},
{
"name": "number\\ceil",
"insertText": "number\\ceil(VALUE)",
"returnType": "int"
},
{
"name": "number\\randomInt",
"insertText": "number\\randomInt(MIN, MAX)",
"returnType": "int"
},
{
"name": "number\\parseInt",
"insertText": "number\\parseInt(STRING)",
"returnType": "int"
},
{
"name": "number\\parseFloat",
"insertText": "number\\parseFloat(STRING)",
"returnType": "float"
},
{
"name": "entity\\isNew",
"insertText": "entity\\isNew()",
"returnType": "bool"
},
{
"name": "entity\\isAttributeChanged",
"insertText": "entity\\isAttributeChanged('ATTRIBUTE')",
"returnType": "bool"
},
{
"name": "entity\\isAttributeNotChanged",
"insertText": "entity\\isAttributeNotChanged('ATTRIBUTE')",
"returnType": "bool"
},
{
"name": "entity\\attribute",
"insertText": "entity\\attribute('ATTRIBUTE')",
"returnType": "mixed",
"unsafe": true
},
{
"name": "entity\\attributeFetched",
"insertText": "entity\\attributeFetched('ATTRIBUTE')",
"returnType": "mixed",
"unsafe": true
},
{
"name": "entity\\setAttribute",
"insertText": "entity\\setAttribute('ATTRIBUTE', VALUE)",
"unsafe": true
},
{
"name": "entity\\clearAttribute",
"insertText": "entity\\clearAttribute('ATTRIBUTE')",
"unsafe": true
},
{
"name": "entity\\addLinkMultipleId",
"insertText": "entity\\addLinkMultipleId(LINK, ID)",
"unsafe": true
},
{
"name": "entity\\hasLinkMultipleId",
"insertText": "entity\\hasLinkMultipleId(LINK, ID)",
"returnType": "bool",
"unsafe": true
},
{
"name": "entity\\removeLinkMultipleId",
"insertText": "entity\\removeLinkMultipleId(LINK, ID)",
"unsafe": true
},
{
"name": "entity\\getLinkColumn",
"insertText": "entity\\getLinkColumn(LINK, ID, COLUMN)",
"returnType": "mixed",
"unsafe": true
},
{
"name": "entity\\setLinkMultipleColumn",
"insertText": "entity\\setLinkMultipleColumn(LINK, ID, COLUMN, VALUE)",
"unsafe": true
},
{
"name": "entity\\isRelated",
"insertText": "entity\\isRelated(LINK, ID)",
"returnType": "bool",
"unsafe": true
},
{
"name": "entity\\sumRelated",
"insertText": "entity\\sumRelated(LINK, FIELD, FILTER)",
"returnType": "int|float",
"unsafe": true
},
{
"name": "entity\\countRelated",
"insertText": "entity\\countRelated(LINK, FILTER)",
"returnType": "int",
"unsafe": true
},
{
"name": "record\\exists",
"insertText": "record\\exists(ENTITY_TYPE, KEY, VALUE)",
"returnType": "bool",
"unsafe": true
},
{
"name": "record\\count",
"insertText": "record\\count(ENTITY_TYPE, KEY, VALUE)",
"returnType": "int",
"unsafe": true
},
{
"name": "record\\attribute",
"insertText": "record\\attribute(ENTITY_TYPE, ID, ATTRIBUTE)",
"returnType": "mixed",
"unsafe": true
},
{
"name": "record\\findOne",
"insertText": "record\\findOne(ENTITY_TYPE, ORDER_BY, ORDER, KEY1, VALUE1, KEY2, VALUE2)",
"returnType": "string",
"unsafe": true
},
{
"name": "record\\findMany",
"insertText": "record\\findMany(ENTITY_TYPE, LIMIT, ORDER_BY, ORDER, KEY1, VALUE1, KEY2, VALUE2)",
"returnType": "string",
"unsafe": true
},
{
"name": "record\\findRelatedOne",
"insertText": "record\\findRelatedOne(ENTITY_TYPE, ID, LINK, ORDER_BY, ORDER, KEY1, VALUE1, KEY2, VALUE2)",
"returnType": "string",
"unsafe": true
},
{
"name": "record\\findRelatedMany",
"insertText": "record\\findRelatedMany(ENTITY_TYPE, ID, LINK, LIMIT, ORDER_BY, ORDER, KEY1, VALUE1, KEY2, VALUE2)",
"returnType": "string[]",
"unsafe": true
},
{
"name": "record\\fetch",
"insertText": "record\\fetch(ENTITY_TYPE, ID)",
"returnType": "?object",
"unsafe": true
},
{
"name": "record\\relate",
"insertText": "record\\relate(ENTITY_TYPE, ID, LINK, FOREIGN_ID)",
"unsafe": true
},
{
"name": "record\\unrelate",
"insertText": "record\\unrelate(ENTITY_TYPE, ID, LINK, FOREIGN_ID)",
"unsafe": true
},
{
"name": "record\\create",
"insertText": "record\\create(ENTITY_TYPE, ATTRIBUTE1, VALUE1, ATTRIBUTE2, VALUE2)",
"returnType": "string",
"unsafe": true
},
{
"name": "record\\update",
"insertText": "record\\update(ENTITY_TYPE, ID, ATTRIBUTE1, VALUE1, ATTRIBUTE2, VALUE2)",
"unsafe": true
},
{
"name": "record\\delete",
"insertText": "record\\delete(ENTITY_TYPE, ID)",
"unsafe": true
},
{
"name": "record\\relationColumn",
"insertText": "record\\relationColumn(ENTITY_TYPE, ID, LINK, FOREIGN_ID, COLUMN)",
"returnType": "mixed",
"unsafe": true
},
{
"name": "record\\updateRelationColumn",
"insertText": "record\\updateRelationColumn(ENTITY_TYPE, ID, LINK, FOREIGN_ID, COLUMN, VALUE)",
"unsafe": true
},
{
"name": "env\\userAttribute",
"insertText": "env\\userAttribute('ATTRIBUTE')",
"returnType": "mixed",
"unsafe": true
},
{
"name": "util\\generateId",
"insertText": "util\\generateId()",
"returnType": "string"
},
{
"name": "util\\generateRecordId",
"insertText": "util\\generateRecordId()",
"returnType": "string"
},
{
"name": "util\\base64Encode",
"insertText": "util\\base64Encode(STRING)",
"returnType": "string"
},
{
"name": "util\\base64Decode",
"insertText": "util\\base64Decode(STRING)",
"returnType": "string"
},
{
"name": "object\\create",
"insertText": "object\\create()",
"returnType": "object"
},
{
"name": "object\\get",
"insertText": "object\\get(OBJECT, KEY)",
"returnType": "mixed"
},
{
"name": "object\\has",
"insertText": "object\\has(OBJECT, KEY)",
"returnType": "bool"
},
{
"name": "object\\set",
"insertText": "object\\set(OBJECT, KEY, VALUE)"
},
{
"name": "object\\clear",
"insertText": "object\\clear(OBJECT, KEY)",
"returnType": "object"
},
{
"name": "object\\cloneDeep",
"insertText": "object\\cloneDeep(OBJECT)",
"returnType": "object"
},
{
"name": "password\\generate",
"insertText": "password\\generate()",
"returnType": "string"
},
{
"name": "password\\hash",
"insertText": "password\\hash(PASSWORD)",
"returnType": "string"
},
{
"name": "array\\includes",
"insertText": "array\\includes(LIST, VALUE)",
"returnType": "bool"
},
{
"name": "array\\push",
"insertText": "array\\push(LIST, VALUE)"
},
{
"name": "array\\length",
"insertText": "array\\length(LIST)",
"returnType": "int"
},
{
"name": "array\\at",
"insertText": "array\\at(LIST, INDEX)",
"returnType": "mixed"
},
{
"name": "array\\join",
"insertText": "array\\join(LIST, SEPARATOR)",
"returnType": "string"
},
{
"name": "array\\indexOf",
"insertText": "array\\indexOf(LIST, ELEMENT)",
"returnType": "?int"
},
{
"name": "array\\removeAt",
"insertText": "array\\removeAt(LIST, INDEX)",
"returnType": "array"
},
{
"name": "array\\unique",
"insertText": "array\\unique(LIST)",
"returnType": "array"
},
{
"name": "language\\translate",
"insertText": "language\\translate(LABEL, CATEGORY, SCOPE)",
"returnType": "string"
},
{
"name": "language\\translateOption",
"insertText": "language\\translateOption(OPTION, FIELD, SCOPE)",
"returnType": "string"
},
{
"name": "log\\info",
"insertText": "log\\info(MESSAGE)",
"unsafe": true
},
{
"name": "log\\notice",
"insertText": "log\\notice(MESSAGE)",
"unsafe": true
},
{
"name": "log\\warning",
"insertText": "log\\warning(MESSAGE)",
"unsafe": true
},
{
"name": "log\\error",
"insertText": "log\\error(MESSAGE)",
"unsafe": true
},
{
"name": "json\\retrieve",
"insertText": "json\\retrieve(JSON, PATH)",
"returnType": "mixed"
},
{
"name": "json\\encode",
"insertText": "json\\encode(VALUE)",
"returnType": "string"
},
{
"name": "ext\\email\\send",
"insertText": "ext\\email\\send(EMAIL_ID)",
"returnType": "bool",
"unsafe": true
},
{
"name": "ext\\sms\\send",
"insertText": "ext\\sms\\send(SMS_ID)",
"returnType": "bool",
"unsafe": true
},
{
"name": "ext\\email\\applyTemplate",
"insertText": "ext\\email\\applyTemplate(EMAIL_ID, EMAIL_TEMPLATE_ID)",
"unsafe": true
},
{
"name": "ext\\markdown\\transform",
"insertText": "ext\\markdown\\transform(STRING)",
"returnType": "string"
},
{
"name": "ext\\pdf\\generate",
"insertText": "ext\\pdf\\generate(ENTITY_TYPE, ENTITY_ID, TEMPLATE_ID, FILENAME)",
"returnType": "string",
"unsafe": true
},
{
"name": "ext\\workingTime\\addWorkingDays",
"insertText": "ext\\workingTime\\addWorkingDays(DATE, DAYS)",
"returnType": "string|null"
},
{
"name": "ext\\workingTime\\findClosestWorkingTime",
"insertText": "ext\\workingTime\\findClosestWorkingTime(DATE)",
"returnType": "string|null"
},
{
"name": "ext\\workingTime\\getSummedWorkingHours",
"insertText": "ext\\workingTime\\getSummedWorkingHours(FROM, TO)",
"returnType": "float"
},
{
"name": "ext\\workingTime\\getWorkingDays",
"insertText": "ext\\workingTime\\getWorkingDays(FROM, TO)",
"returnType": "int"
},
{
"name": "ext\\workingTime\\hasWorkingTime",
"insertText": "ext\\workingTime\\hasWorkingTime(FROM, TO)",
"returnType": "bool"
},
{
"name": "ext\\workingTime\\isWorkingDay",
"insertText": "ext\\workingTime\\isWorkingDay(DATE)",
"returnType": "bool"
},
{
"name": "ext\\user\\sendAccessInfo",
"insertText": "ext\\user\\sendAccessInfo(USER_ID)",
"unsafe": true
},
{
"name": "ext\\email\\send",
"insertText": "ext\\email\\send(EMAIL_ID)",
"returnType": "bool",
"unsafe": true
},
{
"name": "ext\\currency\\convert",
"insertText": "ext\\currency\\convert(AMOUNT, FROM_CODE)",
"returnType": "string"
},
{
"name": "ext\\acl\\checkEntity",
"insertText": "ext\\acl\\checkEntity(USER_ID, ENTITY_TYPE, ID, ACTION)",
"returnType": "bool",
"unsafe": true
},
{
"name": "ext\\acl\\checkScope",
"insertText": "ext\\acl\\checkScope(USER_ID, SCOPE, ACTION)",
"returnType": "bool",
"unsafe": true
},
{
"name": "ext\\acl\\getLevel",
"insertText": "ext\\acl\\getLevel(USER_ID, SCOPE, ACTION)",
"returnType": "string",
"unsafe": true
},
{
"name": "ext\\acl\\getPermissionLevel",
"insertText": "ext\\acl\\getPermissionLevel(USER_ID, PERMISSION)",
"returnType": "string",
"unsafe": true
},
{
"name": "ext\\oauth\\getAccessToken",
"insertText": "ext\\oauth\\getAccessToken(ID)",
"returnType": "string",
"unsafe": true
},
{
"name": "ext\\appSecret\\get",
"insertText": "ext\\appSecret\\get(STRING)",
"returnType": "string"
}
],
"functionClassNameMap": {
"log\\info": "Espo\\Core\\Formula\\Functions\\LogGroup\\InfoType",
"log\\notice": "Espo\\Core\\Formula\\Functions\\LogGroup\\NoticeType",
"log\\warning": "Espo\\Core\\Formula\\Functions\\LogGroup\\WarningType",
"log\\error": "Espo\\Core\\Formula\\Functions\\LogGroup\\ErrorType",
"ext\\acl\\checkEntity": "Espo\\Core\\Formula\\Functions\\ExtGroup\\AclGroup\\CheckEntityType",
"ext\\acl\\checkScope": "Espo\\Core\\Formula\\Functions\\ExtGroup\\AclGroup\\CheckScopeType",
"ext\\acl\\getLevel": "Espo\\Core\\Formula\\Functions\\ExtGroup\\AclGroup\\GetLevelType",
"ext\\acl\\getPermissionLevel": "Espo\\Core\\Formula\\Functions\\ExtGroup\\AclGroup\\GetPermissionLevelType",
"ext\\appSecret\\get": "Espo\\Core\\Formula\\Functions\\ExtGroup\\SecretGroup\\GetType",
"util\\base64Encode": "Espo\\Core\\Formula\\Functions\\UtilGroup\\Base64EncodeType",
"util\\base64Decode": "Espo\\Core\\Formula\\Functions\\UtilGroup\\Base64DecodeType",
"ext\\oauth\\getAccessToken": "Espo\\Core\\Formula\\Functions\\ExtGroup\\OauthGroup\\GetAccessTokenType"
}
}

View File

@@ -0,0 +1,3 @@
{
"suppressClassNameList": []
}

View File

@@ -0,0 +1,38 @@
{
"allowedFileTypeList": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp",
"image/svg+xml",
"image/avif"
],
"resizableFileTypeList": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp"
],
"fixOrientationFileTypeList": [
"image/jpeg"
],
"previewFileTypeList": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp",
"image/svg+xml",
"image/avif"
],
"sizes": {
"xxx-small": [18, 18],
"xx-small": [32, 32],
"x-small": [64, 64],
"small": [128, 128],
"medium": [256, 256],
"large": [512, 512],
"x-large": [864, 864],
"xx-large": [1024, 1024],
"small-logo": [181, 44]
}
}

View File

@@ -0,0 +1,181 @@
{
"jquery": {
"exposeAs": "$"
},
"backbone": {
"exportsTo": "window",
"exportsAs": "Backbone"
},
"bullbone": {
"exposeAs": "Bull"
},
"handlebars": {
"exposeAs": "Handlebars"
},
"underscore": {
"exposeAs": "_"
},
"marked": {},
"dompurify": {
"exposeAs": "DOMPurify"
},
"js-base64": {
"exportsTo": "window",
"exportsAs": "Base64"
},
"moment": {
"exportsTo": "window",
"exportsAs": "moment"
},
"flotr2": {
"path": "client/lib/flotr2.js",
"devPath": "client/lib/original/flotr2.js",
"exportsTo": "window",
"exportsAs": "Flotr",
"sourceMap": true,
"aliases": ["lib!Flotr"]
},
"espo-funnel-chart": {
"path": "client/lib/espo-funnel-chart.js",
"exportsTo": "window",
"exportsAs": "EspoFunnel"
},
"summernote": {
"path": "client/lib/summernote.js",
"devPath": "client/lib/original/summernote.js",
"exportsTo": "$.fn",
"exportsAs": "summernote",
"sourceMap": true
},
"jquery-ui": {
"exportsTo": "$",
"exportsAs": "ui"
},
"jquery-ui-touch-punch": {
"exportsTo": "$",
"exportsAs": "ui"
},
"autocomplete": {
"exportsTo": "$.fn",
"exportsAs": "autocomplete"
},
"timepicker": {
"exportsTo": "$.fn",
"exportsAs": "timepicker"
},
"bootstrap-datepicker": {
"exportsTo": "$.fn",
"exportsAs": "datepicker"
},
"selectize": {
"path": "client/lib/selectize.js",
"devPath": "client/lib/original/selectize.js",
"exportsTo": "window",
"exportsAs": "Selectize"
},
"@shopify/draggable": {
"devPath": "client/lib/original/shopify-draggable.js"
},
"@textcomplete/core": {
"devPath": "client/lib/original/textcomplete-core.js"
},
"@textcomplete/textarea": {
"devPath": "client/lib/original/textcomplete-textarea.js"
},
"autonumeric": {},
"intl-tel-input": {
"exportsTo": "window",
"exportsAs": "intlTelInput"
},
"intl-tel-input-utils": {
"exportsTo": "window",
"exportsAs": "intlTelInputUtils"
},
"intl-tel-input-globals": {
"exportsTo": "window",
"exportsAs": "intlTelInputGlobals"
},
"cronstrue": {
"path": "client/lib/cronstrue-i18n.js",
"devPath": "client/lib/original/cronstrue-i18n.js",
"sourceMap": true
},
"cropper": {
"path": "client/lib/cropper.js",
"exportsTo": "$.fn",
"exportsAs": "cropper",
"sourceMap": true
},
"gridstack": {
"exportsTo": "window",
"exportsAs": "GridStack"
},
"bootstrap-colorpicker": {
"path": "client/lib/bootstrap-colorpicker.js",
"exportsTo": "$.fn",
"exportsAs": "colorpicker",
"aliases": ["lib!Colorpicker"]
},
"exif-js": {
"path": "client/lib/exif.js",
"devPath": "client/lib/original/exif.js",
"sourceMap": true
},
"jsbarcode": {
"path": "client/lib/JsBarcode.all.js",
"devPath": "client/lib/original/JsBarcode.all.js",
"exportsTo": "window",
"exportsAs": "JsBarcode",
"sourceMap": true
},
"qrcodejs": {
"path": "client/lib/qrcode.js",
"exportsTo": "window",
"exportsAs": "QRCode"
},
"turndown": {
"path": "client/lib/turndown.browser.umd.js",
"devPath": "client/lib/turndown.browser.umd.js",
"sourceMap": true
},
"ace": {
"path": "client/lib/ace.js",
"exportsTo": "window",
"exportsAs": "ace"
},
"ace-mode-css": {
"path": "client/lib/ace-mode-css.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/mode/css"
},
"ace-mode-html": {
"path": "client/lib/ace-mode-html.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/mode/html"
},
"ace-mode-handlebars": {
"path": "client/lib/ace-mode-handlebars.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/mode/handlebars"
},
"ace-mode-javascript": {
"path": "client/lib/ace-mode-javascript.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/mode/javascript"
},
"ace-mode-json": {
"path": "client/lib/ace-mode-json.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/mode/json"
},
"ace-ext-language_tools": {
"path": "client/lib/ace-ext-language_tools.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/ext/language_tools"
},
"ace-theme-tomorrow_night": {
"path": "client/lib/ace-theme-tomorrow_night.js",
"exportsTo": "ace.require.define.modules",
"exportsAs": "ace/theme/tomorrow_night"
}
}

View File

@@ -0,0 +1,39 @@
{
"list": [
"en_US",
"ar_AR",
"bg_BG",
"en_GB",
"es_MX",
"cs_CZ",
"da_DK",
"de_DE",
"es_ES",
"hr_HR",
"hu_HU",
"fa_IR",
"fr_FR",
"ja_JP",
"id_ID",
"it_IT",
"lt_LT",
"lv_LV",
"nb_NO",
"nl_NL",
"th_TH",
"tr_TR",
"sk_SK",
"sl_SI",
"sr_RS",
"sv_SE",
"ro_RO",
"ru_RU",
"pl_PL",
"pt_BR",
"pt_PT",
"uk_UA",
"vi_VN",
"zh_CN",
"zh_TW"
]
}

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,9 @@
{
"createHookClassNameList": [
"Espo\\Tools\\LinkManager\\Hook\\Hooks\\TargetListCreate"
],
"deleteHookClassNameList": [
"Espo\\Tools\\LinkManager\\Hook\\Hooks\\TargetListDelete",
"Espo\\Tools\\LinkManager\\Hook\\Hooks\\ForeignFieldDelete"
]
}

View File

@@ -0,0 +1,5 @@
{
"Google": {
"renderer": "handlers/map/google-maps-renderer"
}
}

View File

@@ -0,0 +1,20 @@
{
"convertCurrency": {
"implementationClassName": "Espo\\Core\\MassAction\\Actions\\MassConvertCurrency"
},
"follow": {
"implementationClassName": "Espo\\Core\\MassAction\\Actions\\MassFollow"
},
"unfollow": {
"implementationClassName": "Espo\\Core\\MassAction\\Actions\\MassUnfollow"
},
"recalculateFormula": {
"implementationClassName": "Espo\\Core\\MassAction\\Actions\\MassRecalculateFormula"
},
"update": {
"implementationClassName": "Espo\\Core\\MassAction\\Actions\\MassUpdate"
},
"delete": {
"implementationClassName": "Espo\\Core\\MassAction\\Actions\\MassDelete"
}
}

View File

@@ -0,0 +1,57 @@
{
"frontendHiddenPathList": [
["app", "metadata"],
["app", "containerServices"],
["app", "portalContainerServices"],
["app", "consoleCommands"],
["app", "formula", "functionClassNameMap"],
["app", "fileStorage", "implementationClassNameMap"],
["app", "client"],
["app", "language", "aclDependencies"],
["app", "templateHelpers"],
["app", "appParams"],
["app", "cleanup"],
["app", "authentication"],
["app", "pdfEngines", "__ANY__", "implementationClassNameMap"],
["app", "addressFormats", "__ANY__", "formatterClassName"],
["app", "authentication2FAMethods", "__ANY__", "loginClassName"],
["app", "authentication2FAMethods", "__ANY__", "userSetupClassName"],
["app", "select"],
["app", "massActions", "__ANY__", "implementationClassName"],
["app", "actions", "__ANY__", "implementationClassName"],
["app", "fieldProcessing"],
["app", "scheduledJobs"],
["app", "webSocket", "messagers"],
["app", "config"],
["app", "rebuild"],
["app", "smsProviders", "__ANY__", "senderClassName"],
["app", "orm"],
["app", "relationships"],
["app", "linkManager"],
["app", "hook"],
["app", "api"],
["app", "databasePlatforms"],
["app", "recordId"],
["app", "currencyConversion"],
["selectDefs"],
["pdfDefs"],
["notificationDefs", "__ANY__", "assignmentNotificatorClassName"],
["authenticationMethods", "__ANY__", "implementationClassName"],
["aclDefs", "__ANY__", "accessCheckerClassName"],
["aclDefs", "__ANY__", "portalAccessCheckerClassName"],
["aclDefs", "__ANY__", "ownershipCheckerClassName"],
["aclDefs", "__ANY__", "portalOwnershipCheckerClassName"],
["aclDefs", "__ANY__", "assignmentCheckerClassName"],
["aclDefs", "__ANY__", "linkCheckerClassNameMap"]
],
"frontendNonAdminHiddenPathList": [
["recordDefs"]
],
"additionalBuilderClassNameList": [
"Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\Fields",
"Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\FilterFields",
"Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\DeleteIdField",
"Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\StreamUpdatedAtField",
"Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\LogicDefsBc"
]
}

View File

@@ -0,0 +1,18 @@
{
"platforms": {
"Mysql": {
"queryComposerClassName": "Espo\\ORM\\QueryComposer\\MysqlQueryComposer",
"pdoFactoryClassName": "Espo\\ORM\\PDO\\MysqlPDOFactory",
"functionConverterClassNameMap": {
"ABS": "Espo\\Core\\ORM\\QueryComposer\\Part\\FunctionConverters\\Abs"
}
},
"Postgresql": {
"queryComposerClassName": "Espo\\ORM\\QueryComposer\\PostgresqlQueryComposer",
"pdoFactoryClassName": "Espo\\ORM\\PDO\\PostgresqlPDOFactory",
"functionConverterClassNameMap": {
"ABS": "Espo\\Core\\ORM\\QueryComposer\\Part\\FunctionConverters\\Abs"
}
}
}
}

View File

@@ -0,0 +1,17 @@
{
"Dompdf": {
"implementationClassNameMap": {
"entity": "Espo\\Tools\\Pdf\\Dompdf\\EntityPrinter"
},
"fontFaceList": [
"Courier",
"Helvetica",
"Times",
"Symbol",
"ZapfDingbats",
"DejaVu Sans",
"DejaVu Serif",
"DejaVu Sans Mono"
]
}
}

View File

@@ -0,0 +1,8 @@
{
"layoutProvider": {
"className": "Espo\\Tools\\Layout\\PortalLayoutProvider"
},
"themeManager": {
"className": "Espo\\Core\\Portal\\Utils\\ThemeManager"
}
}

View File

@@ -0,0 +1,36 @@
{
"list": [
{
"type": "Smile",
"iconClass": "far fa-face-smile"
},
{
"type": "Surprise",
"iconClass": "far fa-face-surprise"
},
{
"type": "Laugh",
"iconClass": "far fa-face-laugh"
},
{
"type": "Meh",
"iconClass": "far fa-face-meh"
},
{
"type": "Sad",
"iconClass": "far fa-face-frown"
},
{
"type": "Love",
"iconClass": "far fa-heart"
},
{
"type": "Like",
"iconClass": "far fa-thumbs-up"
},
{
"type": "Dislike",
"iconClass": "far fa-thumbs-down"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"actionClassNameList": [
"Espo\\Core\\Rebuild\\Actions\\AddSystemUser",
"Espo\\Core\\Rebuild\\Actions\\AddSystemData",
"Espo\\Core\\Rebuild\\Actions\\CurrencyRates",
"Espo\\Core\\Rebuild\\Actions\\ScheduledJobs",
"Espo\\Core\\Rebuild\\Actions\\ConfigMetadataCheck",
"Espo\\Core\\Rebuild\\Actions\\GenerateInstanceId",
"Espo\\Core\\Rebuild\\Actions\\SetIntegrationDefaults"
]
}

View File

@@ -0,0 +1,5 @@
{
"selectApplierClassNameList": [
"Espo\\Core\\Select\\Applier\\AdditionalAppliers\\IsStarred"
]
}

View File

@@ -0,0 +1,3 @@
{
"length": 17
}

View File

@@ -0,0 +1,39 @@
{
"noBadCharacters": {
"pattern": "[^<>=]+"
},
"noAsciiSpecialCharacters": {
"pattern": "[^`~!@#$%^&*()_+={}\\[\\]|\\\\:;\"'<,>.?]+"
},
"latinLetters": {
"pattern": "[A-Za-z]+"
},
"latinLettersDigits": {
"pattern": "[A-Za-z0-9]+"
},
"latinLettersDigitsWhitespace": {
"pattern": "[A-Za-z0-9 ]+"
},
"latinLettersWhitespace": {
"pattern": "[A-Za-z ]+"
},
"digits": {
"pattern": "[0-9]+"
},
"id": {
"pattern": "[A-Za-z0-9_=\\-\\.]+",
"isSystem": true
},
"phoneNumberLoose": {
"pattern": "[0-9A-Za-z_@:#\\+\\(\\)\\-\\. ]+",
"isSystem": true
},
"uriOptionalProtocol": {
"pattern": "([a-zA-Z0-9]+\\:\\/\\/)?[a-zA-Z0-9%\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',]+\\.([a-zA-Z0-9%\\&\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',~])*",
"isSystem": true
},
"uri": {
"pattern": "([a-zA-Z0-9]+\\:\\/\\/){1}[a-zA-Z0-9%\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',]+\\.([a-zA-Z0-9%\\&\\.\\/\\?\\:@\\-_=#$!+*\\(\\)',~])*",
"isSystem": true
}
}

View File

@@ -0,0 +1,20 @@
{
"attachments": {
"converterClassName": "Espo\\Core\\Utils\\Database\\Orm\\LinkConverters\\Attachments"
},
"emailEmailAddress": {
"converterClassName": "Espo\\Core\\Utils\\Database\\Orm\\LinkConverters\\EmailEmailAddress"
},
"entityTeam": {
"converterClassName": "Espo\\Core\\Utils\\Database\\Orm\\LinkConverters\\EntityTeam"
},
"entityUser": {
"converterClassName": "Espo\\Core\\Utils\\Database\\Orm\\LinkConverters\\EntityUser"
},
"entityCollaborator": {
"converterClassName": "Espo\\Core\\Utils\\Database\\Orm\\LinkConverters\\EntityCollaborator"
},
"smsPhoneNumber": {
"converterClassName": "Espo\\Core\\Utils\\Database\\Orm\\LinkConverters\\SmsPhoneNumber"
}
}

View File

@@ -0,0 +1,67 @@
{
"ProcessJobGroup": {
"name": "Process Job Group",
"isSystem": true,
"scheduling": "* * * * *",
"jobClassName": "Espo\\Core\\Job\\Job\\Jobs\\ProcessJobGroup",
"preparatorClassName": "Espo\\Core\\Job\\Preparator\\Preparators\\ProcessJobGroupPreparator"
},
"ProcessJobQueueQ0": {
"name": "Process Job Queue q0",
"isSystem": true,
"scheduling": "* * * * *",
"jobClassName": "Espo\\Core\\Job\\Job\\Jobs\\ProcessJobQueueQ0"
},
"ProcessJobQueueQ1": {
"name": "Process Job Queue q1",
"isSystem": true,
"scheduling": "*/1 * * * *",
"jobClassName": "Espo\\Core\\Job\\Job\\Jobs\\ProcessJobQueueQ1"
},
"ProcessJobQueueE0": {
"name": "Process Job Queue e0",
"isSystem": true,
"scheduling": "* * * * *",
"jobClassName": "Espo\\Core\\Job\\Job\\Jobs\\ProcessJobQueueE0"
},
"Dummy": {
"isSystem": true,
"scheduling": "1 */12 * * *",
"jobClassName": "Espo\\Classes\\Jobs\\Dummy"
},
"CheckNewVersion": {
"name": "Check for New Version",
"isSystem": true,
"scheduling": "15 5 * * *",
"jobClassName": "Espo\\Classes\\Jobs\\CheckNewVersion"
},
"CheckNewExtensionVersion": {
"name": "Check for New Versions of Installed Extensions",
"isSystem": true,
"scheduling": "25 5 * * *",
"jobClassName": "Espo\\Classes\\Jobs\\CheckNewExtensionVersion"
},
"Cleanup": {
"jobClassName": "Espo\\Classes\\Jobs\\Cleanup"
},
"AuthTokenControl": {
"jobClassName": "Espo\\Classes\\Jobs\\AuthTokenControl"
},
"SendEmailNotifications": {
"jobClassName": "Espo\\Classes\\Jobs\\SendEmailNotifications"
},
"ProcessWebhookQueue": {
"jobClassName": "Espo\\Classes\\Jobs\\ProcessWebhookQueue"
},
"CheckEmailAccounts": {
"preparatorClassName": "Espo\\Classes\\JobPreparators\\CheckEmailAccounts",
"jobClassName": "Espo\\Classes\\Jobs\\CheckEmailAccounts"
},
"CheckInboundEmails": {
"preparatorClassName": "Espo\\Classes\\JobPreparators\\CheckInboundEmails",
"jobClassName": "Espo\\Classes\\Jobs\\CheckInboundEmails"
},
"SendScheduledEmails": {
"jobClassName": "Espo\\Classes\\Jobs\\SendScheduledEmails"
}
}

View File

@@ -0,0 +1,6 @@
{
"whereItemConverterClassNameMap": {
"inCategory": "Espo\\Core\\Select\\Where\\ItemConverters\\InCategory",
"isUserFromTeams": "Espo\\Core\\Select\\Where\\ItemConverters\\IsUserFromTeams"
}
}

View File

@@ -0,0 +1,3 @@
{
}

View File

@@ -0,0 +1,7 @@
{
"googleMapsImage": "Espo\\Classes\\TemplateHelpers\\GoogleMaps",
"markdownText": "Espo\\Classes\\TemplateHelpers\\MarkdownText",
"tableTag": "Espo\\Classes\\TemplateHelpers\\TableTag",
"trTag": "Espo\\Classes\\TemplateHelpers\\TrTag",
"tdTag": "Espo\\Classes\\TemplateHelpers\\TdTag"
}

View File

@@ -0,0 +1,32 @@
{
"accessInfo": {
"scope": "User"
},
"accessInfoPortal": {
"scope": "User"
},
"assignment": {
"scopeListConfigParam": "assignmentEmailNotificationsEntityList"
},
"mention": {
"scope": "Note"
},
"noteEmailReceived": {
"scope": "Note"
},
"notePost": {
"scope": "Note"
},
"notePostNoParent": {
"scope": "Note"
},
"noteStatus": {
"scope": "Note"
},
"passwordChangeLink": {
"scope": "User"
},
"twoFactorCode": {
"scope": "User"
}
}

View File

@@ -0,0 +1,19 @@
{
"categories": {
"newNotification": {},
"recordUpdate": {
"paramList": ["scope", "id"],
"accessCheckCommand": "AclCheck --userId=:userId --scope=:scope --id=:id --action=read"
},
"streamUpdate": {
"paramList": ["scope", "id"],
"accessCheckCommand": "AclCheck --userId=:userId --scope=:scope --id=:id --action=stream"
}
},
"messagers": {
"ZeroMQ": {
"senderClassName": "Espo\\Core\\WebSocket\\ZeroMQSender",
"subscriberClassName": "Espo\\Core\\WebSocket\\ZeroMQSubscriber"
}
}
}

View File

@@ -0,0 +1,4 @@
{
"api": true,
"credentialsHeader": "X-Api-Key"
}

View File

@@ -0,0 +1,6 @@
{
"portalDefault": true,
"settings": {
"isAvailable": true
}
}

View File

@@ -0,0 +1,4 @@
{
"api": true,
"credentialsHeader": "X-Hmac-Authorization"
}

View File

@@ -0,0 +1,275 @@
{
"implementationClassName": "Espo\\Core\\Authentication\\Ldap\\LdapLogin",
"portalDefault": true,
"settings": {
"isAvailable": true,
"layout": {
"label": "LDAP",
"rows": [
[{"name": "ldapHost"}, {"name": "ldapPort"}],
[{"name": "ldapAuth"}, {"name": "ldapSecurity"}],
[{"name": "ldapUsername", "fullWidth": true}],
[
{"name": "ldapPassword"},
{
"name": "testConnection",
"customLabel": null,
"view": "views/admin/authentication/fields/test-connection"
}
],
[{"name": "ldapUserNameAttribute"}, {"name": "ldapUserObjectClass"}],
[{"name": "ldapAccountCanonicalForm"}, {"name": "ldapBindRequiresDn"}],
[{"name": "ldapBaseDn", "fullWidth": true}],
[{"name": "ldapUserLoginFilter", "fullWidth": true}],
[{"name": "ldapAccountDomainName"}, {"name": "ldapAccountDomainNameShort"}],
[{"name": "ldapTryUsernameSplit"}, {"name": "ldapOptReferrals"}],
[{"name": "ldapCreateEspoUser"}, false],
[{"name": "ldapUserFirstNameAttribute"}, {"name": "ldapUserLastNameAttribute"}],
[{"name": "ldapUserTitleAttribute"}, false],
[{"name": "ldapUserEmailAddressAttribute"}, {"name": "ldapUserPhoneNumberAttribute"}],
[{"name": "ldapUserTeams"}, {"name": "ldapUserDefaultTeam"}],
[{"name": "ldapPortalUserLdapAuth"}, false],
[{"name": "ldapPortalUserPortals"}, {"name": "ldapPortalUserRoles"}]
]
},
"fieldList": [
"ldapHost", "ldapPort", "ldapAuth", "ldapSecurity",
"ldapUsername", "ldapPassword", "ldapBindRequiresDn",
"ldapUserLoginFilter", "ldapBaseDn", "ldapAccountCanonicalForm",
"ldapAccountDomainName", "ldapAccountDomainNameShort", "ldapAccountDomainName",
"ldapAccountDomainNameShort", "ldapTryUsernameSplit", "ldapOptReferrals",
"ldapCreateEspoUser", "ldapPortalUserLdapAuth"
],
"dynamicLogic": {
"fields": {
"ldapHost": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "LDAP"
}
]
}
},
"ldapUserNameAttribute": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "LDAP"
}
]
}
},
"ldapUserObjectClass": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "LDAP"
}
]
}
},
"ldapUsername": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapAuth"
}
]
},
"required": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapAuth"
}, {
"type": "equals",
"attribute": "authenticationMethod",
"value": "LDAP"
}
]
}
},
"ldapPassword": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapAuth"
}
]
}
},
"testConnection": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapAuth"
}
]
}
},
"ldapAccountDomainName": {
"visible": {
"conditionGroup": [
{
"type": "in",
"attribute": "ldapAccountCanonicalForm",
"value": ["Backslash", "Principal"]
}
]
}
},
"ldapAccountDomainNameShort": {
"visible": {
"conditionGroup": [
{
"type": "in",
"attribute": "ldapAccountCanonicalForm",
"value": ["Backslash", "Principal"]
}
]
}
},
"ldapUserTitleAttribute": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
},
"required": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
}
},
"ldapUserFirstNameAttribute": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
},
"required": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
}
},
"ldapUserLastNameAttribute": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
},
"required": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
}
},
"ldapUserEmailAddressAttribute": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
},
"required": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
}
},
"ldapUserPhoneNumberAttribute": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
},
"required": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
}
},
"ldapUserTeams": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
}
},
"ldapUserDefaultTeam": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapCreateEspoUser"
}
]
}
},
"ldapPortalUserPortals": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapPortalUserLdapAuth"
}
]
}
},
"ldapPortalUserRoles": {
"visible": {
"conditionGroup": [
{
"type": "isTrue",
"attribute": "ldapPortalUserLdapAuth"
}
]
}
}
}
}
}
}

View File

@@ -0,0 +1,260 @@
{
"implementationClassName": "Espo\\Core\\Authentication\\Oidc\\Login",
"logoutClassName": "Espo\\Core\\Authentication\\Oidc\\Logout",
"login": {
"handler": "handlers/login/oidc",
"fallbackConfigParam": "oidcFallback"
},
"provider": {
"isAvailable": true
},
"settings": {
"isAvailable": true,
"layout": {
"label": "OIDC",
"rows": [
[
{
"name": "oidcClientId"
},
{
"name": "oidcClientSecret"
}
],
[
{
"name": "oidcAuthorizationRedirectUri",
"view": "views/settings/fields/oidc-redirect-uri",
"params": {
"readOnly": true,
"copyToClipboard": true
}
},
false
],
[
{
"name": "oidcAuthorizationEndpoint"
},
{
"name": "oidcTokenEndpoint"
}
],
[
{
"name": "oidcJwksEndpoint"
},
{
"name": "oidcJwtSignatureAlgorithmList"
}
],
[
{
"name": "oidcUserInfoEndpoint"
},
false
],
[
{
"name": "oidcScopes"
},
{
"name": "oidcUsernameClaim"
}
],
[
{
"name": "oidcCreateUser"
},
{
"name": "oidcSync"
}
],
[
{
"name": "oidcTeams"
},
{
"name": "oidcGroupClaim"
}
],
[
{
"name": "oidcSyncTeams"
},
false
],
[
{
"name": "oidcFallback"
},
{
"name": "oidcAllowRegularUserFallback"
}
],
[
{
"name": "oidcAllowAdminUser"
},
{
"name": "oidcLogoutUrl"
}
],
[
{
"name": "oidcAuthorizationPrompt"
},
false
]
]
},
"fieldList": [
"oidcClientId",
"oidcClientSecret",
"oidcAuthorizationEndpoint",
"oidcTokenEndpoint",
"oidcJwksEndpoint",
"oidcJwtSignatureAlgorithmList",
"oidcScopes",
"oidcGroupClaim",
"oidcCreateUser",
"oidcUsernameClaim",
"oidcTeams",
"oidcSync",
"oidcSyncTeams",
"oidcAuthorizationRedirectUri",
"oidcFallback",
"oidcAllowRegularUserFallback",
"oidcAllowAdminUser",
"oidcLogoutUrl"
],
"dynamicLogic": {
"fields": {
"oidcClientId": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
}
]
}
},
"oidcAuthorizationEndpoint": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
}
]
}
},
"oidcTokenEndpoint": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
}
]
}
},
"oidcUsernameClaim": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
}
]
}
},
"oidcJwtSignatureAlgorithmList": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
}
]
}
},
"oidcJwksEndpoint": {
"required": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
},
{
"type": "or",
"value": [
{
"type": "contains",
"attribute": "oidcJwtSignatureAlgorithmList",
"value": "RS256"
},
{
"type": "contains",
"attribute": "oidcJwtSignatureAlgorithmList",
"value": "RS384"
},
{
"type": "contains",
"attribute": "oidcJwtSignatureAlgorithmList",
"value": "RS512"
}
]
}
]
}
},
"oidcAllowRegularUserFallback": {
"invalid": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
},
{
"type": "isTrue",
"attribute": "oidcAllowRegularUserFallback"
},
{
"type": "isFalse",
"attribute": "oidcFallback"
}
]
}
},
"oidcAllowAdminUser": {
"invalid": {
"conditionGroup": [
{
"type": "equals",
"attribute": "authenticationMethod",
"value": "Oidc"
},
{
"type": "isFalse",
"attribute": "oidcAllowAdminUser"
},
{
"type": "isFalse",
"attribute": "oidcFallback"
}
]
}
}
}
}
}
}

View File

@@ -0,0 +1,10 @@
{
"controller": "controllers/record",
"createDisabled": true,
"recordViews": {
"list": "views/action-history-record/record/list"
},
"modalViews": {
"detail": "views/action-history-record/modals/detail"
}
}

View File

@@ -0,0 +1,17 @@
{
"controller": "controllers/record",
"duplicateDisabled": true,
"mergeDisabled": true,
"menu": {
"list": {
"dropdown": [
{
"name": "populateDefaults",
"labelTranslation": "AddressCountry.strings.populateDefaults",
"handler": "handlers/admin/address-country/populate-defaults",
"actionFunction": "populate"
}
]
}
}
}

View File

@@ -0,0 +1,3 @@
{
"controller": "controllers/address-map"
}

View File

@@ -0,0 +1,34 @@
{
"controller": "controllers/api-user",
"views": {
"detail": "views/user/detail",
"list": "views/api-user/list"
},
"recordViews": {
"list": "views/user/record/list",
"detail": "views/user/record/detail",
"edit":"views/user/record/edit",
"detailSmall":"views/user/record/detail-quick",
"editSmall":"views/user/record/edit-quick"
},
"defaultSidePanelFieldLists": {
"detail": [
"avatar",
"createdAt",
"lastAccess"
],
"detailSmall": [
"avatar",
"createdAt"
],
"edit": [
"avatar"
],
"editSmall": [
"avatar"
]
},
"filterList": [
],
"boolFilterList": []
}

View File

@@ -0,0 +1,14 @@
{
"controller": "controllers/record",
"createDisabled": true,
"editDisabled": true,
"mergeDisabled": true,
"recordViews": {
"list": "views/admin/app-log-record/record/list"
},
"filterList": [
{
"name": "errors"
}
]
}

View File

@@ -0,0 +1,6 @@
{
"controller": "controllers/record",
"mergeDisabled": true,
"exportDisabled": true,
"massUpdateDisabled": true
}

View File

@@ -0,0 +1,14 @@
{
"controller": "controllers/record",
"createDisabled": true,
"recordViews": {
"list": "views/attachment/record/list",
"detail": "views/attachment/record/detail"
},
"modalViews": {
"detail": "views/attachment/modals/detail"
},
"filterList": [
"orphan"
]
}

View File

@@ -0,0 +1,24 @@
{
"controller": "controllers/record",
"recordViews": {
"list": "views/admin/auth-log-record/record/list",
"detail": "views/admin/auth-log-record/record/detail",
"detailSmall": "views/admin/auth-log-record/record/detail-small"
},
"modalViews": {
"detail": "views/admin/auth-log-record/modals/detail"
},
"filterList": [
"accepted",
"denied"
],
"createDisabled": true,
"relationshipPanels": {
"actionHistoryRecords": {
"createDisabled": true,
"selectDisabled": true,
"unlinkDisabled": true,
"rowActionsView": "views/record/row-actions/relationship-view-only"
}
}
}

View File

@@ -0,0 +1,24 @@
{
"controller": "controllers/record",
"recordViews": {
"list": "views/admin/auth-token/record/list",
"detail": "views/admin/auth-token/record/detail",
"detailSmall": "views/admin/auth-token/record/detail-small"
},
"modalViews": {
"detail": "views/admin/auth-token/modals/detail"
},
"filterList": [
"active",
"inactive"
],
"createDisabled": true,
"relationshipPanels": {
"actionHistoryRecords": {
"createDisabled": true,
"selectDisabled": true,
"unlinkDisabled": true,
"rowActionsView": "views/record/row-actions/relationship-view-only"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"controller": "controllers/record",
"recordViews": {
"detail": "views/authentication-provider/record/detail",
"edit": "views/authentication-provider/record/edit"
},
"searchPanelDisabled": true,
"inlineEditDisabled": true,
"duplicateDisabled": true,
"massUpdateDisabled": true,
"massRemoveDisabled": true,
"mergeDisabled": true
}

View File

@@ -0,0 +1,4 @@
{
"controller": "controllers/dashboard",
"iconClass": "fas fa-th-large"
}

View File

@@ -0,0 +1,24 @@
{
"controller": "controllers/record",
"views": {
"detail": "views/dashboard-template/detail"
},
"recordViews": {
"list": "views/dashboard-template/record/list"
},
"menu": {
"detail": {
"buttons": [
{
"action": "deployToUsers",
"label": "Deploy to Users"
},
{
"action": "deployToTeam",
"label": "Deploy to Team"
}
]
}
},
"searchPanelDisabled": true
}

View File

@@ -0,0 +1,336 @@
{
"itemTypes": {
"and": {
"view": "views/admin/dynamic-logic/conditions-string/group-base",
"operator": "and"
},
"or": {
"view": "views/admin/dynamic-logic/conditions-string/group-base",
"operator": "or"
},
"not": {
"view": "views/admin/dynamic-logic/conditions-string/group-not",
"operator": "not"
},
"equals": {
"view": "views/admin/dynamic-logic/conditions-string/item-base",
"operatorString": "="
},
"notEquals": {
"view": "views/admin/dynamic-logic/conditions-string/item-base",
"operatorString": "&ne;"
},
"greaterThan": {
"view": "views/admin/dynamic-logic/conditions-string/item-base",
"operatorString": "&gt;"
},
"lessThan": {
"view": "views/admin/dynamic-logic/conditions-string/item-base",
"operatorString": "&lt;"
},
"greaterThanOrEquals": {
"view": "views/admin/dynamic-logic/conditions-string/item-base",
"operatorString": "&ge;"
},
"lessThanOrEquals": {
"view": "views/admin/dynamic-logic/conditions-string/item-base",
"operatorString": "&le;"
},
"isEmpty": {
"view": "views/admin/dynamic-logic/conditions-string/item-operator-only-base",
"operatorString": "= &empty;"
},
"isNotEmpty": {
"view": "views/admin/dynamic-logic/conditions-string/item-operator-only-base",
"operatorString": "&ne; &empty;"
},
"isTrue": {
"view": "views/admin/dynamic-logic/conditions-string/item-operator-only-base",
"operatorString": "= 1"
},
"isFalse": {
"view": "views/admin/dynamic-logic/conditions-string/item-operator-only-base",
"operatorString": "= 0"
},
"in": {
"view": "views/admin/dynamic-logic/conditions-string/item-multiple-values-base",
"operatorString": "&isin;"
},
"notIn": {
"view": "views/admin/dynamic-logic/conditions-string/item-multiple-values-base",
"operatorString": "&notin;"
},
"isToday": {
"view": "views/admin/dynamic-logic/conditions-string/item-is-today",
"operatorString": "="
},
"inFuture": {
"view": "views/admin/dynamic-logic/conditions-string/item-in-future",
"operatorString": "&isin;"
},
"inPast": {
"view": "views/admin/dynamic-logic/conditions-string/item-in-past",
"operatorString": "&isin;"
},
"contains": {
"view": "views/admin/dynamic-logic/conditions-string/item-value-link",
"operatorString": "&niv;"
},
"notContains": {
"view": "views/admin/dynamic-logic/conditions-string/item-value-link",
"operatorString": "&notni;"
},
"has": {
"view": "views/admin/dynamic-logic/conditions-string/item-value-enum",
"operatorString": "&niv;"
},
"notHas": {
"view": "views/admin/dynamic-logic/conditions-string/item-value-enum",
"operatorString": "&notni;"
},
"startsWith": {
"view": "views/admin/dynamic-logic/conditions-string/item-value-varchar"
},
"endsWith": {
"view": "views/admin/dynamic-logic/conditions-string/item-value-varchar"
},
"matches": {
"view": "views/admin/dynamic-logic/conditions-string/item-value-varchar"
}
},
"fieldTypes": {
"bool": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": ["isTrue", "isFalse"]
},
"varchar": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": [
"equals",
"notEquals",
"isEmpty",
"isNotEmpty",
"contains",
"notContains",
"startsWith",
"endsWith",
"matches"
],
"conditionTypes": {
"contains": {
"valueType": "field",
"itemView": "views/admin/dynamic-logic/conditions-string/item-base"
},
"notContains": {
"valueType": "field",
"itemView": "views/admin/dynamic-logic/conditions-string/item-base"
}
}
},
"url": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": ["equals", "notEquals", "isEmpty", "isNotEmpty"]
},
"email": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": ["isEmpty", "isNotEmpty"]
},
"phone": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": ["isEmpty", "isNotEmpty"]
},
"text": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": ["isEmpty", "isNotEmpty", "contains", "notContains", "matches"],
"conditionTypes": {
"contains": {
"valueType": "varchar",
"itemView": "views/admin/dynamic-logic/conditions-string/item-value-varchar"
},
"notContains": {
"valueType": "varchar",
"itemView": "views/admin/dynamic-logic/conditions-string/item-value-varchar"
}
}
},
"int": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": [
"isEmpty",
"isNotEmpty",
"equals",
"notEquals",
"greaterThan",
"lessThan",
"greaterThanOrEquals",
"lessThanOrEquals"
]
},
"float": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": [
"isEmpty",
"isNotEmpty",
"equals",
"notEquals",
"greaterThan",
"lessThan",
"greaterThanOrEquals",
"lessThanOrEquals"
]
},
"currency": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": [
"isEmpty",
"isNotEmpty",
"equals",
"notEquals",
"greaterThan",
"lessThan",
"greaterThanOrEquals",
"lessThanOrEquals"
]
},
"date": {
"view": "views/admin/dynamic-logic/conditions/field-types/date",
"typeList": ["isEmpty", "isNotEmpty", "isToday", "inFuture", "inPast", "equals", "notEquals"]
},
"datetime": {
"view": "views/admin/dynamic-logic/conditions/field-types/date",
"typeList": ["isEmpty", "isNotEmpty", "isToday", "inFuture", "inPast"]
},
"datetimeOptional": {
"view": "views/admin/dynamic-logic/conditions/field-types/date",
"typeList": ["isEmpty", "isNotEmpty", "isToday", "inFuture", "inPast"]
},
"enum": {
"view": "views/admin/dynamic-logic/conditions/field-types/enum",
"typeList": ["equals", "notEquals", "isEmpty", "isNotEmpty", "in", "notIn"]
},
"link": {
"view": "views/admin/dynamic-logic/conditions/field-types/link",
"typeList": ["isEmpty", "isNotEmpty", "equals", "notEquals"]
},
"linkOne": {
"view": "views/admin/dynamic-logic/conditions/field-types/link",
"typeList": ["isEmpty", "isNotEmpty", "equals", "notEquals"]
},
"file": {
"view": "views/admin/dynamic-logic/conditions/field-types/link",
"typeList": ["isEmpty", "isNotEmpty"]
},
"image": {
"view": "views/admin/dynamic-logic/conditions/field-types/link",
"typeList": ["isEmpty", "isNotEmpty"]
},
"linkParent": {
"view": "views/admin/dynamic-logic/conditions/field-types/link-parent",
"typeList": ["isEmpty", "isNotEmpty", "equals", "notEquals"]
},
"linkMultiple": {
"view": "views/admin/dynamic-logic/conditions/field-types/link-multiple",
"typeList": ["isEmpty", "isNotEmpty", "contains", "notContains"]
},
"foreign": {
"view": "views/admin/dynamic-logic/conditions/field-types/base",
"typeList": ["equals", "notEquals", "isEmpty", "isNotEmpty"]
},
"id": {
"view": "views/admin/dynamic-logic/conditions/field-types/enum",
"typeList": ["isEmpty", "isNotEmpty"]
},
"multiEnum": {
"view": "views/admin/dynamic-logic/conditions/field-types/multi-enum",
"typeList": ["isEmpty", "isNotEmpty", "has", "notHas"]
},
"array": {
"view": "views/admin/dynamic-logic/conditions/field-types/multi-enum",
"typeList": ["isEmpty", "isNotEmpty", "has", "notHas"]
},
"checklist": {
"view": "views/admin/dynamic-logic/conditions/field-types/multi-enum",
"typeList": ["isEmpty", "isNotEmpty", "has", "notHas"]
},
"urlMultiple": {
"view": "views/admin/dynamic-logic/conditions/field-types/multi-enum",
"typeList": ["isEmpty", "isNotEmpty"]
},
"currentUser": {
"view": "views/admin/dynamic-logic/conditions/field-types/current-user",
"typeList": ["equals", "notEquals"]
},
"currentUserTeams": {
"view": "views/admin/dynamic-logic/conditions/field-types/current-user-teams",
"typeList": ["contains", "notContains"]
}
},
"conditionTypes": {
"isTrue": {
"valueType": "empty"
},
"isFalse": {
"valueType": "empty"
},
"isEmpty": {
"valueType": "empty"
},
"isNotEmpty": {
"valueType": "empty"
},
"equals": {
"valueType": "field"
},
"notEquals": {
"valueType": "field"
},
"greaterThan": {
"valueType": "field"
},
"lessThan": {
"valueType": "field"
},
"greaterThanOrEquals": {
"valueType": "field"
},
"lessThanOrEquals": {
"valueType": "field"
},
"in": {
"valueType": "field"
},
"notIn": {
"valueType": "field"
},
"contains": {
"valueType": "custom"
},
"notContains": {
"valueType": "custom"
},
"inPast": {
"valueType": "empty"
},
"isFuture": {
"valueType": "empty"
},
"isToday": {
"valueType": "empty"
},
"has": {
"valueType": "field"
},
"notHas": {
"valueType": "field"
},
"startsWith": {
"valueType": "varchar"
},
"endsWith": {
"valueType": "varchar"
},
"matches": {
"valueType": "varchar-matches"
}
}
}

View File

@@ -0,0 +1,141 @@
{
"controller":"controllers/email",
"acl":"acl/email",
"views":{
"list":"views/email/list",
"detail":"views/email/detail"
},
"recordViews":{
"list":"views/email/record/list",
"detail":"views/email/record/detail",
"edit":"views/email/record/edit",
"editQuick":"views/email/record/edit-quick",
"detailQuick":"views/email/record/detail-quick",
"compose":"views/email/record/compose",
"listRelated":"views/email/record/list-related"
},
"modalViews":{
"detail":"views/email/modals/detail",
"compose":"views/modals/compose-email"
},
"quickCreateModalType":"compose",
"defaultSidePanelView": "views/email/record/panels/default-side",
"sidePanels": {
"detail": [
{
"name": "event",
"label": "Event",
"view": "views/email/record/panels/event",
"isForm": true,
"hidden": true
}
]
},
"menu":{
"list":{
"buttons":[
{
"label": "Compose",
"action": "composeEmail",
"style": "danger",
"acl": "create",
"className": "btn-s-wide",
"title": "Ctrl+Space"
}
],
"dropdown":[
{
"name": "archiveEmail",
"label":"Archive Email",
"link":"#Email/create",
"acl":"create"
},
{
"name": "importEml",
"label": "Import EML",
"handler": "handlers/email/list-actions",
"checkVisibilityFunction": "checkImportEml",
"actionFunction": "importEml"
},
false,
{
"label":"Email Templates",
"link":"#EmailTemplate",
"acl":"read",
"aclScope":"EmailTemplate"
},
{
"label":"Folders",
"link":"#EmailFolder",
"configCheck": "!emailFoldersDisabled",
"accessDataList": [
{
"inPortalDisabled": true
}
]
},
{
"label": "Group Folders",
"link": "#GroupEmailFolder",
"configCheck": "!emailFoldersDisabled",
"accessDataList": [
{
"inPortalDisabled": true
},
{
"isAdminOnly": true
}
]
},
{
"label":"Filters",
"link":"#EmailFilter",
"accessDataList": [
{
"inPortalDisabled": true
}
]
}
]
},
"detail":{
"dropdown":[
{
"label":"Reply",
"action":"reply",
"acl":"read"
},
{
"label":"Reply to All",
"action":"replyToAll",
"acl":"read"
},
{
"label":"Forward",
"action":"forward",
"acl":"read"
}
]
}
},
"relationshipPanels": {
"users": {
"selectHandler": "handlers/email/select-user"
}
},
"filterList":[
],
"defaultFilterData":{
},
"boolFilterList":[
],
"iconClass":"fas fa-envelope",
"layoutBottomPanelsDetailDisabled": true,
"layoutDetailDisabled": true,
"layoutDetailSmallDisabled": true,
"layoutSidePanelsDetailSmallDisabled": true,
"layoutSidePanelsEditSmallDisabled": true
}

View File

@@ -0,0 +1,30 @@
{
"controller": "controllers/record",
"recordViews": {
"list":"views/email-account/record/list",
"detail": "views/email-account/record/detail",
"edit": "views/email-account/record/edit"
},
"views": {
"list": "views/email-account/list"
},
"inlineEditDisabled": true,
"filterList": [
{
"name": "active"
}
],
"relationshipPanels": {
"filters": {
"select": false,
"rowActionsView": "views/record/row-actions/relationship-edit-and-remove",
"unlinkDisabled": true
},
"emails": {
"select": false,
"create": false,
"rowActionsView": "views/record/row-actions/remove-only",
"unlinkDisabled": true
}
}
}

View File

@@ -0,0 +1,10 @@
{
"controller": "controllers/record",
"createDisabled": true,
"editDisabled": true,
"exportDisabled": true,
"mergeDisabled": true,
"filterList": [
"orphan"
]
}

View File

@@ -0,0 +1,27 @@
{
"controller": "controllers/email-filter",
"dynamicHandler": "handlers/email-filter",
"modalViews": {
"edit": "views/email-filter/modals/edit"
},
"recordViews": {
"list": "views/email-filter/record/list"
},
"inlineEditDisabled": true,
"searchPanelDisabled": false,
"menu": {
"list": {
"buttons": [
{
"label": "Emails",
"link": "#Email",
"style": "default",
"aclScope": "Email"
}
]
}
},
"boolFilterList": [
"onlyMy"
]
}

View File

@@ -0,0 +1,23 @@
{
"controller": "controllers/record",
"views": {
"list": "views/email-folder/list"
},
"recordViews": {
"list": "views/email-folder/record/list",
"editQuick": "views/email-folder/record/edit-small"
},
"menu": {
"list": {
"buttons": [
{
"label": "Emails",
"link": "#Email",
"style": "default",
"aclScope": "Email"
}
]
}
},
"searchPanelDisabled": true
}

View File

@@ -0,0 +1,37 @@
{
"controller": "controllers/record",
"forceListViewSettings": true,
"views": {
"list": "views/email-template/list"
},
"recordViews": {
"edit": "views/email-template/record/edit",
"detail": "views/email-template/record/detail",
"editQuick": "views/email-template/record/edit-quick"
},
"modalViews": {
"select": "views/modals/select-records-with-categories"
},
"sidePanels": {
"detail": [
{
"name": "information",
"label":"Info",
"view":"views/email-template/record/panels/information"
}
],
"edit": [
{
"name": "information",
"label":"Info",
"view":"views/email-template/record/panels/information"
}
]
},
"boolFilterList": ["onlyMy"],
"filterList": [
"actual"
],
"placeholderList": ["optOutUrl", "optOutLink"],
"iconClass": "fas fa-envelope-square"
}

View File

@@ -0,0 +1,49 @@
{
"controller": "controllers/record-tree",
"collection": "collections/tree",
"menu": {
"listTree": {
"buttons": [
{
"label": "List View",
"link": "#EmailTemplateCategory\/list",
"acl": "read",
"style": "default"
},
{
"label": "Email Templates",
"link": "#EmailTemplate",
"acl": "read",
"aclScope": "EmailTemplate",
"style": "default"
}
]
},
"list": {
"buttons": [
{
"label": "Tree View",
"link": "#EmailTemplateCategory",
"acl": "read",
"style": "default"
},
{
"label": "Email Templates",
"link": "#EmailTemplate",
"acl": "read",
"aclScope": "EmailTemplate",
"style": "default"
}
]
}
},
"relationshipPanels": {
"emailTemplates": {
"create": false
},
"children": {
"selectDisabled": true,
"unlinkDisabled": true
}
}
}

Some files were not shown because too many files have changed in this diff Show More