Files
Fedor 9245768987 🚀 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!
2025-10-24 19:59:28 +03:00

111 lines
2.7 KiB
JavaScript

var gulp = require('gulp');
var sass = require('gulp-sass');
var gulp_concat = require('gulp-concat');
var jsmin = require('gulp-jsmin');
var cssmin = require('gulp-cssmin');
var gulp_file_include = require('gulp-file-include');
var browser_sync = require('browser-sync').create();
// SYNC HTML
gulp.task('include-html', function(){
gulp.src([
'./html/*.html'
])
.pipe(gulp_file_include())
// .pipe(htmlbeautify(options))
.pipe(gulp.dest('./public'))
.pipe(browser_sync.stream());
});
gulp.task( 'sass' , function() {
// copy old file no min
gulp.src([
'./sass/*.scss',
])
.pipe(sass())
.pipe(gulp_concat('t-datepicker.min.css'))
.pipe(cssmin())
.pipe(gulp.dest('./public/theme/css'))
gulp.src([
'./sass/**/*.scss'
])
.pipe(sass())
.pipe(gulp.dest('./public/theme/css'))
.pipe(browser_sync.stream());
})
gulp.task( 'min-css' , function() {
// Min new name file and keep old file
gulp.src([
'./sass/**/*.scss',
'!./sass/*.scss',
'!./sass/themes/t-datepicker-main.scss'
])
.pipe(sass())
.pipe(cssmin())
.pipe(gulp.dest('./public/theme/css'))
.pipe(browser_sync.stream());
})
// SYNC js
gulp.task('js', function(){
gulp.src([
'./theme/js/*.js'
])
.pipe(gulp.dest('./public/theme/js'))
gulp.src([
'./theme/js/*.js'
])
.pipe(gulp_concat('t-datepicker.min.js'))
.pipe(jsmin())
.pipe(gulp.dest('./public/theme/js'))
.pipe(browser_sync.stream());
});
// COPY js
gulp.task('js-copy', function(){
gulp.src([
'./node_modules/perfect-scrollbar/dist/perfect-scrollbar.min.js'
])
.pipe(gulp.dest('./public/theme/libs/'))
});
// COPY Css
gulp.task('css-copy', function(){
gulp.src([
'./node_modules/perfect-scrollbar/css/perfect-scrollbar.css',
'./node_modules/converthtml/sass/convert-theme-default.scss'
])
.pipe(gulp_concat('_libs.scss'))
.pipe(gulp.dest('./sass/layout'))
});
// COPY Images
gulp.task('images-copy', function(){
gulp.src([
'./theme/images/*.png',
'./theme/images/*.jpg',
'./theme/images/*.svg',
'./theme/images/*.gif',
])
.pipe(gulp.dest('./public/theme/images'))
});
gulp.task("Sync", ['include-html', 'sass', 'js', 'min-css'], function(){
browser_sync.init({
server: {
baseDir: "./public"
}
});
gulp.watch(['./html/**/*.html'], ['include-html']);
gulp.watch(['./sass/**/*.scss'], ['sass']);
gulp.watch(['./sass/**/*.scss'], ['min-css']);
gulp.watch(['./theme/js/*.js'], ['js']);
})
gulp.task('default', ['Sync', 'js-copy', 'css-copy', 'images-copy']);