├── gmail ├── assets │ └── img │ │ ├── odoo.png │ │ ├── readme.png │ │ └── odoo_full.png ├── .clasp.json ├── .prettierrc ├── src │ ├── global.d.ts │ ├── services │ │ ├── app_properties.ts │ │ ├── log_email.ts │ │ ├── translation.ts │ │ └── odoo_auth.ts │ ├── utils │ │ ├── html.ts │ │ ├── format.ts │ │ └── http.ts │ ├── const.ts │ ├── views │ │ ├── index.ts │ │ ├── debug.ts │ │ ├── card_actions.ts │ │ ├── error.ts │ │ ├── partner_actions.ts │ │ ├── tasks.ts │ │ ├── helpers.ts │ │ ├── tickets.ts │ │ ├── login.ts │ │ ├── leads.ts │ │ ├── search_partner.ts │ │ ├── partner.ts │ │ └── create_task.ts │ ├── main.ts │ └── models │ │ ├── ticket.ts │ │ ├── task.ts │ │ ├── lead.ts │ │ ├── project.ts │ │ ├── error_message.ts │ │ ├── email.ts │ │ └── company.ts ├── .claspignore ├── package.json ├── tsconfig.json ├── iap_instruction.md ├── .gitignore ├── package-lock.json ├── rollup.config.js ├── appsscript.json └── README.md ├── outlook ├── assets │ ├── odoo.png │ ├── odoo-128.png │ ├── odoo-16.png │ ├── odoo-32.png │ ├── odoo-64.png │ ├── odoo-80.png │ ├── spinner.gif │ ├── avatar_grey.png │ ├── odoo-full.png │ ├── spinner-2.gif │ ├── company_image.png │ ├── spinner-black.gif │ └── social │ │ ├── facebook.ico │ │ ├── linkedin.ico │ │ ├── twitter.ico │ │ └── crunchbase.ico ├── src │ ├── taskpane │ │ ├── components │ │ │ ├── AppContext.js │ │ │ ├── Main │ │ │ │ └── Main.css │ │ │ ├── Login │ │ │ │ ├── dialog.html │ │ │ │ └── Login.css │ │ │ ├── Contact │ │ │ │ ├── ContactPage │ │ │ │ │ └── ContactPage.css │ │ │ │ ├── ContactList │ │ │ │ │ ├── ContactList.tsx │ │ │ │ │ └── ContactListItem │ │ │ │ │ │ ├── ContactListItem.css │ │ │ │ │ │ └── ContactListItem.tsx │ │ │ │ └── ContactSection │ │ │ │ │ └── ContactSection.tsx │ │ │ ├── InfoCell │ │ │ │ ├── InfoCell.css │ │ │ │ └── InfoCell.tsx │ │ │ ├── CollapseSection │ │ │ │ ├── CollapseSection.css │ │ │ │ └── CollapseSection.tsx │ │ │ ├── Search │ │ │ │ ├── Search.css │ │ │ │ └── Search.tsx │ │ │ ├── GrayOverlay.tsx │ │ │ ├── GrayOverlay.css │ │ │ ├── Log │ │ │ │ └── Logger.css │ │ │ ├── ListItem │ │ │ │ ├── ListItem.css │ │ │ │ └── ListItem.tsx │ │ │ ├── SectionTasks │ │ │ │ ├── SelectProjectDropdown.css │ │ │ │ ├── SectionTasks.tsx │ │ │ │ └── SelectProjectDropdown.tsx │ │ │ ├── Company │ │ │ │ ├── CompanyInfoItem.tsx │ │ │ │ ├── CompanySocialIcons.tsx │ │ │ │ └── CompanySection │ │ │ │ │ └── CompanySection.css │ │ │ ├── SectionTickets │ │ │ │ └── SectionTickets.tsx │ │ │ ├── SectionLeads │ │ │ │ └── SectionLeads.tsx │ │ │ ├── ProfileCard │ │ │ │ └── ProfileCard.tsx │ │ │ └── Section │ │ │ │ └── Section.tsx │ │ ├── api.js │ │ ├── taskpane.html │ │ ├── index.tsx │ │ └── taskpane.css │ ├── utils │ │ ├── Themes.ts │ │ ├── httpRequest.ts │ │ └── Translator.ts │ └── classes │ │ ├── Project.ts │ │ ├── HelpdeskTicket.ts │ │ ├── Task.ts │ │ ├── Address.ts │ │ ├── Lead.ts │ │ ├── EnrichmentInfo.ts │ │ ├── Partner.ts │ │ ├── CompanyCache.ts │ │ └── Company.ts ├── .eslintrc.json ├── tsconfig.json ├── replaceDomain.sh ├── .gitignore ├── README.md ├── webpack.config.js ├── package.json └── manifest.xml └── COPYRIGHT /gmail/assets/img/odoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/gmail/assets/img/odoo.png -------------------------------------------------------------------------------- /outlook/assets/odoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/odoo.png -------------------------------------------------------------------------------- /gmail/assets/img/readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/gmail/assets/img/readme.png -------------------------------------------------------------------------------- /outlook/assets/odoo-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/odoo-128.png -------------------------------------------------------------------------------- /outlook/assets/odoo-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/odoo-16.png -------------------------------------------------------------------------------- /outlook/assets/odoo-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/odoo-32.png -------------------------------------------------------------------------------- /outlook/assets/odoo-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/odoo-64.png -------------------------------------------------------------------------------- /outlook/assets/odoo-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/odoo-80.png -------------------------------------------------------------------------------- /outlook/assets/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/spinner.gif -------------------------------------------------------------------------------- /gmail/assets/img/odoo_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/gmail/assets/img/odoo_full.png -------------------------------------------------------------------------------- /outlook/assets/avatar_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/avatar_grey.png -------------------------------------------------------------------------------- /outlook/assets/odoo-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/odoo-full.png -------------------------------------------------------------------------------- /outlook/assets/spinner-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/spinner-2.gif -------------------------------------------------------------------------------- /outlook/assets/company_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/company_image.png -------------------------------------------------------------------------------- /outlook/assets/spinner-black.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/spinner-black.gif -------------------------------------------------------------------------------- /outlook/src/taskpane/components/AppContext.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | export default React.createContext(); 4 | -------------------------------------------------------------------------------- /outlook/assets/social/facebook.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/social/facebook.ico -------------------------------------------------------------------------------- /outlook/assets/social/linkedin.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/social/linkedin.ico -------------------------------------------------------------------------------- /outlook/assets/social/twitter.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/social/twitter.ico -------------------------------------------------------------------------------- /outlook/assets/social/crunchbase.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/odoo/mail-client-extensions/HEAD/outlook/assets/social/crunchbase.ico -------------------------------------------------------------------------------- /gmail/.clasp.json: -------------------------------------------------------------------------------- 1 | { 2 | "scriptId": "1wAzxJBkBYbIs_P2K76RpoBGovgjNNfSoRASf7660wgkxwYa89WZmh2gS", 3 | "projectId": "odoo-gmail-304313" 4 | } 5 | -------------------------------------------------------------------------------- /gmail/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "trailingComma": "all", 4 | "singleQuote": false, 5 | "printWidth": 120, 6 | "tabWidth": 4 7 | } 8 | -------------------------------------------------------------------------------- /outlook/src/taskpane/components/Main/Main.css: -------------------------------------------------------------------------------- 1 | .connect-button { 2 | margin: 10px auto; 3 | text-align: center; /* Edge */ 4 | width: fit-content; 5 | } 6 | 7 | 8 | -------------------------------------------------------------------------------- /gmail/src/global.d.ts: -------------------------------------------------------------------------------- 1 | declare let global: any; 2 | type Card = any; 3 | type ActionEvent = any; 4 | type CardSection = any; 5 | type Button = any; 6 | type GmailAttachment = any; 7 | -------------------------------------------------------------------------------- /outlook/src/taskpane/components/Login/dialog.html: -------------------------------------------------------------------------------- 1 | 2 |
You'll be redirected in a few seconds... 3 | 4 | 5 | -------------------------------------------------------------------------------- /outlook/src/utils/Themes.ts: -------------------------------------------------------------------------------- 1 | import { createTheme } from 'office-ui-fabric-react'; 2 | 3 | export const OdooTheme = createTheme({ 4 | palette: { 5 | themePrimary: '#96417e', 6 | themeLight: '#f86ace', 7 | }, 8 | }); 9 | -------------------------------------------------------------------------------- /gmail/.claspignore: -------------------------------------------------------------------------------- 1 | .git 2 | .git/* 3 | node_modules 4 | node_modules/** 5 | node_modules/**/.*/** 6 | node_modules/**/.* 7 | 8 | # ignore all files… 9 | **/** 10 | 11 | # include appscript and build result 12 | !appsscript.json 13 | !build/*.js 14 | -------------------------------------------------------------------------------- /outlook/src/taskpane/components/Contact/ContactPage/ContactPage.css: -------------------------------------------------------------------------------- 1 | .contact-page > div:not(:first-child) { 2 | margin-top: 16px; 3 | } 4 | 5 | .contact-spinner{ 6 | display: flex; 7 | align-items: center; 8 | justify-content: center; 9 | height: 100%; 10 | } 11 | -------------------------------------------------------------------------------- /gmail/src/services/app_properties.ts: -------------------------------------------------------------------------------- 1 | export function getOdooServerUrl() { 2 | return PropertiesService.getUserProperties().getProperty("ODOO_SERVER_URL"); 3 | } 4 | export function setOdooServerUrl(url: string) { 5 | PropertiesService.getUserProperties().setProperty("ODOO_SERVER_URL", url); 6 | } 7 | -------------------------------------------------------------------------------- /gmail/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "@rollup/plugin-node-resolve": "^15.0.2", 4 | "@rollup/plugin-typescript": "^11.1.1", 5 | "@types/google-apps-script": "^1.0.64", 6 | "prettier": "^2.2.1", 7 | "rollup": "^3.22.0", 8 | "tslib": "^2.5.3" 9 | }, 10 | "type": "module" 11 | } 12 | -------------------------------------------------------------------------------- /gmail/src/utils/html.ts: -------------------------------------------------------------------------------- 1 | export function escapeHtml(unsafe: string): string { 2 | unsafe = unsafe || ""; 3 | return unsafe 4 | .replace(/&/g, "&") 5 | .replace(//g, ">") 7 | .replace(/"/g, """) 8 | .replace(/'/g, "'"); 9 | } 10 | -------------------------------------------------------------------------------- /gmail/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "./build", 4 | "baseUrl": ".", 5 | "strictNullChecks": false, 6 | "noImplicitThis": true, 7 | "noEmitOnError": true, 8 | "target": "ES5", 9 | "lib": ["dom", "es6", "scripthost", "es2017"] 10 | }, 11 | "include": ["src/*", "src/**/*"] 12 | } 13 | -------------------------------------------------------------------------------- /outlook/src/taskpane/components/InfoCell/InfoCell.css: -------------------------------------------------------------------------------- 1 | .button-link{ 2 | text-decoration: none; 3 | } 4 | 5 | .info-cell { 6 | display: flex; 7 | align-items: center; 8 | } 9 | 10 | .info-cell-title { 11 | font-size: 12px; 12 | color:rgb(161, 159, 157); 13 | } 14 | 15 | .info-cell-data { 16 | font-size: 14px 17 | } -------------------------------------------------------------------------------- /outlook/src/taskpane/components/CollapseSection/CollapseSection.css: -------------------------------------------------------------------------------- 1 | .section-card { 2 | user-select: none; 3 | } 4 | 5 | .collapse-section-button { 6 | cursor: pointer; 7 | margin-right: 8px; 8 | padding: 8px; 9 | border-radius: 25%; 10 | } 11 | 12 | .collapse-section-button:hover { 13 | background: #eeeeee; 14 | } 15 | -------------------------------------------------------------------------------- /outlook/src/taskpane/components/Search/Search.css: -------------------------------------------------------------------------------- 1 | .search-container { 2 | display: flex; 3 | flex-direction: row; 4 | align-items: center; 5 | justify-content: stretch; 6 | margin: 8px 8px 16px 8px; 7 | } 8 | 9 | .search-icon { 10 | height: 100%; 11 | border-left: none; 12 | } 13 | 14 | .search-spinner { 15 | padding: 32px; 16 | } 17 | -------------------------------------------------------------------------------- /outlook/src/taskpane/components/GrayOverlay.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import './GrayOverlay.css'; 3 | 4 | const Progress = () => { 5 | return ( 6 | <> 7 | 8 |
9 | >
10 | );
11 | };
12 |
13 | export default Progress;
14 |
--------------------------------------------------------------------------------
/outlook/src/taskpane/components/GrayOverlay.css:
--------------------------------------------------------------------------------
1 | .gray-overlay {
2 | position: absolute;
3 | width: 100%;
4 | height: 100%;
5 | background-color: gray;
6 | top: 0px;
7 | left: 0px;
8 | opacity: .3;
9 | }
10 |
11 | .overlay-spinner {
12 | position: fixed;
13 | height: 120px;
14 | width: 120px;
15 | top: calc(50% - 60px);
16 | left: calc(50% - 60px);
17 | }
--------------------------------------------------------------------------------
/gmail/iap_instruction.md:
--------------------------------------------------------------------------------
1 | # Shared secret between IAP and the add-on
2 | Go to your Google project,
3 | > clasp open
4 |
5 | Then File -> Project properties -> Script Properties
6 |
7 | And add a row,
8 | > `ODOO_SHARED_SECRET` `
26 |