🚀 CRM Files Migration & Real-time Features
✨ Features: - Migrated ALL files to new S3 structure (Projects, Contacts, Accounts, HelpDesk, Invoice, etc.) - Added Nextcloud folder buttons to ALL modules - Fixed Nextcloud editor integration - WebSocket server for real-time updates - Redis Pub/Sub integration - File path manager for organized storage - Redis caching for performance (Functions.php) 📁 New Structure: Documents/Project/ProjectName_ID/file_docID.ext Documents/Contacts/FirstName_LastName_ID/file_docID.ext Documents/Accounts/AccountName_ID/file_docID.ext 🔧 Technical: - FilePathManager for standardized paths - S3StorageService integration - WebSocket server (Node.js + Docker) - Redis cache for getBasicModuleInfo() - Predis library for Redis connectivity 📝 Scripts: - Migration scripts for all modules - Test pages for WebSocket/SSE/Polling - Documentation (MIGRATION_*.md, REDIS_*.md) 🎯 Result: 15,000+ files migrated successfully!
This commit is contained in:
BIN
erv_ticket/fonts/Roboto/Roboto-Black.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Black.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Black.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Black.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Black.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Black.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-BlackItalic.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-BlackItalic.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-BlackItalic.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-BlackItalic.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-BlackItalic.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Bold.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Bold.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Bold.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Bold.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Bold.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Bold.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-BoldItalic.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-BoldItalic.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-BoldItalic.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-BoldItalic.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-BoldItalic.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Italic.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Italic.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Italic.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Italic.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Italic.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Italic.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Light.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Light.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Light.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Light.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Light.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Light.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-LightItalic.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-LightItalic.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-LightItalic.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-LightItalic.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-LightItalic.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-LightItalic.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Medium.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Medium.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Medium.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Medium.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Medium.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Medium.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-MediumItalic.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-MediumItalic.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-MediumItalic.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-MediumItalic.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-MediumItalic.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Regular.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Regular.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Regular.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Regular.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Regular.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Regular.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Thin.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Thin.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Thin.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Thin.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-Thin.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-Thin.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-ThinItalic.eot
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-ThinItalic.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-ThinItalic.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-ThinItalic.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/Roboto-ThinItalic.woff
Normal file
BIN
erv_ticket/fonts/Roboto/Roboto-ThinItalic.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/RobotoBold.eot
Normal file
BIN
erv_ticket/fonts/Roboto/RobotoBold.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/RobotoBold.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/RobotoBold.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/RobotoBold.woff
Normal file
BIN
erv_ticket/fonts/Roboto/RobotoBold.woff
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/RobotoRegular.eot
Normal file
BIN
erv_ticket/fonts/Roboto/RobotoRegular.eot
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/RobotoRegular.ttf
Normal file
BIN
erv_ticket/fonts/Roboto/RobotoRegular.ttf
Normal file
Binary file not shown.
BIN
erv_ticket/fonts/Roboto/RobotoRegular.woff
Normal file
BIN
erv_ticket/fonts/Roboto/RobotoRegular.woff
Normal file
Binary file not shown.
133
erv_ticket/fonts/Roboto/stylesheet.css
Normal file
133
erv_ticket/fonts/Roboto/stylesheet.css
Normal file
@@ -0,0 +1,133 @@
|
||||
/* This stylesheet generated by Transfonter (https://transfonter.org) on February 25, 2018 4:00 PM */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-MediumItalic.eot');
|
||||
src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
|
||||
url('Roboto-MediumItalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-MediumItalic.woff') format('woff'),
|
||||
url('Roboto-MediumItalic.ttf') format('truetype');
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-Italic.eot');
|
||||
src: local('Roboto Italic'), local('Roboto-Italic'),
|
||||
url('Roboto-Italic.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-Italic.woff') format('woff'),
|
||||
url('Roboto-Italic.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-Bold.eot');
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'),
|
||||
url('Roboto-Bold.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-Bold.woff') format('woff'),
|
||||
url('Roboto-Bold.ttf') format('truetype');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-Regular.eot');
|
||||
src: local('Roboto'), local('Roboto-Regular'),
|
||||
url('Roboto-Regular.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-Regular.woff') format('woff'),
|
||||
url('Roboto-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-Medium.eot');
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'),
|
||||
url('Roboto-Medium.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-Medium.woff') format('woff'),
|
||||
url('Roboto-Medium.ttf') format('truetype');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-BoldItalic.eot');
|
||||
src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'),
|
||||
url('Roboto-BoldItalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-BoldItalic.woff') format('woff'),
|
||||
url('Roboto-BoldItalic.ttf') format('truetype');
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-ThinItalic.eot');
|
||||
src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'),
|
||||
url('Roboto-ThinItalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-ThinItalic.woff') format('woff'),
|
||||
url('Roboto-ThinItalic.ttf') format('truetype');
|
||||
font-weight: 100;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-Black.eot');
|
||||
src: local('Roboto Black'), local('Roboto-Black'),
|
||||
url('Roboto-Black.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-Black.woff') format('woff'),
|
||||
url('Roboto-Black.ttf') format('truetype');
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-Light.eot');
|
||||
src: local('Roboto Light'), local('Roboto-Light'),
|
||||
url('Roboto-Light.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-Light.woff') format('woff'),
|
||||
url('Roboto-Light.ttf') format('truetype');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-LightItalic.eot');
|
||||
src: local('Roboto Light Italic'), local('Roboto-LightItalic'),
|
||||
url('Roboto-LightItalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-LightItalic.woff') format('woff'),
|
||||
url('Roboto-LightItalic.ttf') format('truetype');
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-BlackItalic.eot');
|
||||
src: local('Roboto Black Italic'), local('Roboto-BlackItalic'),
|
||||
url('Roboto-BlackItalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-BlackItalic.woff') format('woff'),
|
||||
url('Roboto-BlackItalic.ttf') format('truetype');
|
||||
font-weight: 900;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('Roboto-Thin.eot');
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'),
|
||||
url('Roboto-Thin.eot?#iefix') format('embedded-opentype'),
|
||||
url('Roboto-Thin.woff') format('woff'),
|
||||
url('Roboto-Thin.ttf') format('truetype');
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
}
|
||||
Reference in New Issue
Block a user