Skip to content

Commit 1ffe832

Browse files
committed
updated admin tours, reviewed gulp task
1 parent 4e62630 commit 1ffe832

File tree

19 files changed

+1516
-1343
lines changed

19 files changed

+1516
-1343
lines changed

Gulpfile.mjs

Lines changed: 118 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,150 @@
1-
import gulp from 'gulp';
1+
import gulp, { series, watch, parallel } from 'gulp';
22
import uglify from 'gulp-uglify';
33
import size from 'gulp-size';
44
import sass from 'sass';
55
import gulpSass from 'gulp-sass';
6-
import minify from 'gulp-minify';
76
import include from 'gulp-include';
7+
import rename from 'gulp-rename';
8+
import sourcemaps from 'gulp-sourcemaps';
89
import { deleteSync } from 'del';
910

11+
// Import di Rollup e plugin
12+
import rollup from '@rollup/stream';
13+
import { nodeResolve } from '@rollup/plugin-node-resolve';
14+
import commonjs from '@rollup/plugin-commonjs';
15+
import source from 'vinyl-source-stream';
16+
import buffer from 'vinyl-buffer';
17+
1018
const sassCompiler = gulpSass(sass);
1119

20+
// Evita i messaggi di deprecazione
1221
process.env.NODE_NO_WARNINGS = '1';
1322
const originalConsoleError = console.error;
1423
console.error = function (message) {
1524
if (typeof message === 'string' && message.includes('deprecation')) {
16-
return; // Ignora i messaggi di deprecazione
25+
return;
26+
}
27+
originalConsoleError.apply(console, arguments);
28+
};
29+
30+
// --- CONFIGURAZIONE PERCORSI
31+
const paths = {
32+
js: {
33+
src: './js/src',
34+
dest: './pub/js',
35+
adminEntry: './js/src/admin.js',
36+
siteEntry: './js/src/site.js',
37+
allJs: './js/src/**/*.js',
38+
// 🚨 NUOVO: Definiamo i file da escludere nel task 'scripts:misc'
39+
excludeEntries: [
40+
'!./js/src/admin.js',
41+
'!./js/src/site.js',
42+
]
43+
},
44+
scss: {
45+
src: './scss/*.scss',
46+
allScss: './scss/**/*.scss',
47+
dest: './pub/css',
1748
}
18-
originalConsoleError.apply(console, arguments); // Altrimenti, mostra il messaggio
1949
};
2050

2151
gulp.task('clean:dest', function (done) {
22-
deleteSync(['./js/dest']);
23-
done(); // Segnala che il task è completato
52+
// Pulizia più aggressiva per includere tutti i file di output
53+
deleteSync([
54+
paths.js.dest + '/*.min.js',
55+
paths.js.dest + '/*.js',
56+
paths.js.dest + '/*.min.js.map',
57+
paths.js.dest + '/*.js.map'
58+
]);
59+
done();
2460
});
2561

2662
gulp.task('styles', function () {
27-
return gulp.src('./scss/*.scss')
63+
return gulp.src(paths.scss.src)
2864
.pipe(sassCompiler({
29-
css: 'pub/css',
65+
css: paths.scss.dest,
3066
sass: 'scss',
3167
}).on('error', sassCompiler.logError))
32-
.pipe(gulp.dest('pub/css'));
68+
.pipe(gulp.dest(paths.scss.dest));
3369
});
3470

35-
gulp.task('scripts', function () {
36-
return gulp
37-
.src('./js/src/*.js')
38-
.pipe(include())
39-
.pipe(gulp.dest('./js/dest'));
71+
// ----------------------------------------------------
72+
// TASK 1: scripts:site (gulp-include per site.js)
73+
// ----------------------------------------------------
74+
gulp.task('scripts:site', function () {
75+
return gulp.src(paths.js.siteEntry)
76+
.pipe(include())
77+
.pipe(sourcemaps.init())
78+
.pipe(rename({ basename: 'site' }))
79+
.pipe(gulp.dest(paths.js.dest))
80+
.pipe(uglify())
81+
.pipe(rename({ extname: '.min.js' }))
82+
.pipe(sourcemaps.write('.'))
83+
.pipe(gulp.dest(paths.js.dest));
4084
});
4185

42-
gulp.task('min-scripts', function () {
43-
return gulp
44-
.src('./js/dest/*.js')
86+
// ----------------------------------------------------
87+
// TASK 2: scripts:admin (ROLLUP con UMD per admin.js)
88+
// ----------------------------------------------------
89+
gulp.task('scripts:admin', function () {
90+
return rollup({
91+
input: paths.js.adminEntry,
92+
93+
// Dichiara jquery come modulo esterno
94+
external: ['jquery'],
95+
96+
output: {
97+
// Usa UMD per la compatibilità con jQuery
98+
format: 'umd',
99+
name: 'AppAdminRollupBundle',
100+
101+
// Mappa il modulo 'jquery' alla variabile globale 'jQuery'
102+
globals: {
103+
'jquery': 'jQuery'
104+
}
105+
},
106+
plugins: [
107+
nodeResolve(),
108+
commonjs(),
109+
]
110+
})
111+
.pipe(source('admin.js'))
112+
.pipe(buffer())
113+
114+
.pipe(sourcemaps.init({ loadMaps: true }))
115+
.pipe(gulp.dest(paths.js.dest))
116+
45117
.pipe(uglify())
46-
.pipe(size())
47-
.pipe(gulp.dest('./pub/js'));
118+
.pipe(rename({ extname: '.min.js' }))
119+
120+
.pipe(sourcemaps.write('.'))
121+
.pipe(gulp.dest(paths.js.dest));
48122
});
49123

124+
// ----------------------------------------------------
125+
// TASK 3: scripts:misc (File orfani, es. debugbar-EnvironmentWidget.js)
126+
// ----------------------------------------------------
127+
gulp.task('scripts:misc', function () {
128+
return gulp.src([paths.js.src + '/*.js', ...paths.js.excludeEntries])
129+
.pipe(include())
130+
.pipe(sourcemaps.init())
131+
.pipe(gulp.dest(paths.js.dest))
132+
.pipe(uglify())
133+
.pipe(rename({ extname: '.min.js' }))
134+
.pipe(sourcemaps.write('.'))
135+
.pipe(gulp.dest(paths.js.dest));
136+
});
137+
138+
139+
// Task per l'esecuzione di tutti gli script in parallelo
140+
gulp.task('scripts', parallel('scripts:site', 'scripts:admin', 'scripts:misc'));
141+
50142
gulp.task('watch', function () {
51-
return gulp.watch(['./js/src/*.js', './scss/*.scss'], gulp.series('scripts', 'min-scripts', 'styles'));
143+
watch(paths.js.allJs, series('scripts'));
144+
watch(paths.scss.allScss, series('styles'));
52145
});
53-
54-
gulp.task('default', gulp.parallel(gulp.series('clean:dest', gulp.series('scripts', 'min-scripts')), 'styles'));
146+
147+
// Task di default: pulisci, compila e avvia watch
148+
gulp.task('default', series('clean:dest', 'styles', 'scripts', 'watch'));
149+
// Task per la build di produzione (senza watch)
150+
gulp.task('build', series('clean:dest', 'styles', 'scripts'));

app/base/abstracts/Controllers/AdminPage.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ protected function prepareTemplate(): Template
177177
'mediaPasteUrl' => $this->getUrl('crud.app.base.controllers.admin.json.mediapaste'),
178178
'currentLocale' => $this->getCurrentLocale(),
179179
'defaultTinymceOptions' => FORMS_DEFAULT_TINYMCE_OPTIONS,
180-
'driverTourSteps' => $this->getUiTourSteps(),
180+
'uiTourSteps' => $this->getUiTourSteps(),
181181
]
182182
) . ");"
183183
);

app/base/commands/App/Deploy.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ protected function execute(InputInterface $input, OutputInterface $output) : int
8787

8888
$this->exportTranslations();
8989

90-
$this->executeCommand("npm install && gulp 2> /dev/null");
90+
$this->executeCommand("npm install && gulp build 2> /dev/null");
9191

9292
if ($nestable_js = $this->getUtils()->httpRequest('https://raw.githubusercontent.com/degami/Nestable/master/jquery.nestable.js')) {
9393
@mkdir(App::getDir(App::WEBROOT) . DS . 'js' . DS . 'jquery-nestable', 0755, true);

app/base/controllers/Admin/Dashboard.php

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,30 @@ public function getTemplateData(): array
145145
public function getUiTourSteps(): array
146146
{
147147
return [
148-
/*
149148
[
150-
'element' => '#sidebar',
151-
'popover' => [
152-
'title' => __('Menu Sidebar'),
153-
'description' => __('Use the sidebar to navigate through different sections of the admin panel. Click on the icons to expand and access various features and settings.'),
149+
'title' => __('Menu Sidebar'),
150+
'text' => __('Use the sidebar to navigate through different sections of the admin panel. Click on the icons to expand and access various features and settings.'), // popover['description'] diventa text
151+
'attachTo' => [
152+
'element' => '#sidebar',
153+
'on' => 'right',
154154
],
155155
],
156156
[
157-
'element' => 'main',
158-
'popover' => [
159-
'title' => __('Quick Access Links'),
160-
'description' => __('Use these links to quickly navigate to different sections of the admin panel for managing content, users, settings, and more.'),
157+
'title' => __('Logout'),
158+
'text' => __('This is the logout button.'),
159+
'attachTo' => [
160+
'element' => '#logout-btn',
161+
'on' => 'bottom',
162+
],
163+
],
164+
[
165+
'title' => __('Dark theme switcher'),
166+
'text' => __('This switches between dark and light theme.'),
167+
'attachTo' => [
168+
'element' => '.darkmode-switch .switch',
169+
'on' => 'left',
161170
],
162171
],
163-
*/
164172
];
165173
}
166174
}

app/site/controllers/Admin/Cms/Pages.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,4 +348,15 @@ function ($page) {
348348
$data
349349
);
350350
}
351+
352+
public function getUiTourSteps(): array
353+
{
354+
if (($this->getRequest()->query->get('action') ?? 'list') == 'edit') {
355+
return [
356+
//@todo
357+
];
358+
}
359+
360+
return parent::getUiTourSteps();
361+
}
351362
}

js/src/admin.js

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,31 @@
1-
//=include ./admin/admin.dependencies.js
2-
//=include ./admin/admin.tinymce.js
3-
//=include ./admin/admin.defaults.js
4-
5-
//=include ./admin/admin.methods.base.js
6-
//=include ./admin/admin.methods.panel.js
7-
//=include ./admin/admin.methods.listing.js
8-
//=include ./admin/admin.methods.ai.js
9-
//=include ./admin/admin.methods.ui.js
10-
//=include ./admin/admin.methods.alert.js
11-
12-
//=include ./admin/admin.init.js
1+
const $ = require('jquery'); // Usa require() anche se è esterno. Rollup lo mappa.
2+
3+
const select2Module = require('select2');
4+
5+
// Se il modulo Select2 è una funzione factory, la chiamiamo con $ (jQuery)
6+
if (typeof select2Module === 'function') {
7+
select2Module($);
8+
} else {
9+
// Altrimenti, assumiamo che sia un modulo side-effecting che si è auto-eseguito
10+
}
11+
12+
require('jquery.cookie');
13+
require('highlightjs');
14+
require('moment');
15+
require('driver.js');
16+
require('shepherd.js');
17+
18+
require('./i18n.js');
19+
20+
require('./admin/admin.dependencies.js');
21+
require('./admin/admin.tinymce.js');
22+
require('./admin/admin.defaults.js');
23+
24+
require('./admin/admin.methods.base.js');
25+
require('./admin/admin.methods.panel.js');
26+
require('./admin/admin.methods.listing.js');
27+
require('./admin/admin.methods.ai.js');
28+
require('./admin/admin.methods.ui.js');
29+
require('./admin/admin.methods.alert.js');
30+
31+
require('./admin/admin.init.js');

js/src/admin/admin.defaults.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
(function($) {
2-
// Rendiamo i default globali, sono un oggetto statico e non interattivo.
3-
window.appAdminDefaults = {
4-
'rootUrl': null,
5-
'checkLoggedUrl': null,
6-
'logoutUrl': null,
7-
'uIsettingsUrl': null,
8-
'currentRoute': null,
9-
'notificationsUrl': null,
10-
'notificationCrudUrl': null,
11-
'aiAvailable': null,
12-
'availableAImodels': [],
13-
'massDeleteUrl': null,
14-
'massEditUrl': null,
15-
'mediaPasteUrl': null,
16-
};
17-
})(jQuery);
1+
const $ = require('jquery');
2+
// Rendiamo i default globali, sono un oggetto statico e non interattivo.
3+
window.appAdminDefaults = {
4+
'rootUrl': null,
5+
'checkLoggedUrl': null,
6+
'logoutUrl': null,
7+
'uIsettingsUrl': null,
8+
'currentRoute': null,
9+
'notificationsUrl': null,
10+
'notificationCrudUrl': null,
11+
'aiAvailable': null,
12+
'availableAImodels': [],
13+
'massDeleteUrl': null,
14+
'massEditUrl': null,
15+
'mediaPasteUrl': null,
16+
};

js/src/admin/admin.dependencies.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,2 @@
1-
//=include ../../../node_modules/select2/dist/js/select2.full.js
2-
//=include ../../../node_modules/jquery.cookie/jquery.cookie.js
3-
//=include ../../../node_modules/highlightjs/highlight.pack.js
4-
//=include ../../../node_modules/moment/min/moment-with-locales.min.js
51
//=include ./tinymce-plugin-block.js
62
//=include ./tinymce-plugin-aitranslate.js
7-
//=include ../../../node_modules/driver.js/dist/driver.min.js
8-
//=include ../i18n.js

0 commit comments

Comments
 (0)