Skip to content

Commit 4ad40c2

Browse files
committed
Tweaked free plugin for beacon and rating system
1 parent ba59a1e commit 4ad40c2

16 files changed

+2146
-33
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ Effortlessly create a powerful, multi-product knowledge base. Boost your support
4040
🧩 Widgets Included — WZKB Articles, WZKB Sections, and WZKB Breadcrumbs widgets.
4141
⚡ Built-in Caching — Speed up your Knowledge Base without extra plugins.
4242

43+
### Pro features
44+
45+
⭐ Article Rating System — Collect binary or 5-star feedback with optional follow-up questions, admin alerts, Bayesian sorting, and GDPR-friendly tracking modes.
46+
4347
### Key Concepts
4448

4549
* __Articles:__ Custom post type `wz_knowledgebase` — your FAQs, how-to guides, and documentation.

build-assets.js

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
const { execSync } = require( 'child_process' );
22
const { readdirSync, statSync, readFileSync, writeFileSync, existsSync, unlinkSync } = require( 'fs' );
3-
const { join, dirname } = require( 'path' );
3+
const { join, dirname, resolve, extname } = require( 'path' );
44
const { mkdirSync } = require( 'fs' );
55

6+
// Parse command line arguments.
7+
const args = process.argv.slice( 2 );
8+
const specificFiles = args.filter( arg => ! arg.startsWith( '--' ) );
9+
const processSpecificFiles = specificFiles.length > 0;
10+
611
/**
712
* Configuration for asset processing.
813
*/
@@ -255,8 +260,22 @@ function combineFiles( outputFile, inputFiles, isJs = false ) {
255260
}
256261
}
257262

263+
// Display usage information if specific files are being processed.
264+
if ( processSpecificFiles ) {
265+
console.log( '==================================' );
266+
console.log( 'Processing specific files:' );
267+
specificFiles.forEach( file => console.log( ` - ${file}` ) );
268+
console.log( '==================================' );
269+
} else {
270+
console.log( '==================================' );
271+
console.log( 'Processing all assets in project' );
272+
console.log( 'Tip: Pass specific files to process only those:' );
273+
console.log( ' node build-assets.js path/to/file.js path/to/file.css' );
274+
console.log( '==================================' );
275+
}
276+
258277
// Step 1: Combine CSS files.
259-
console.log( '=== Combining CSS Files ===' );
278+
console.log( '\n=== Combining CSS Files ===' );
260279
Object.entries( config.combineCss ).forEach( ( [output, inputs] ) => {
261280
combineFiles( output, inputs, false );
262281
} );
@@ -279,38 +298,54 @@ const combinedOutputFiles = [
279298
];
280299

281300
// Step 4: Find all CSS and JS files.
282-
// Note: This includes .min files to allow re-minification of existing minified files.
283-
const allCssFiles = findFiles( '.', '.css' );
284-
const allJsFiles = findFiles( '.', '.js' );
301+
let allCssFiles = [];
302+
let allJsFiles = [];
303+
304+
if ( processSpecificFiles ) {
305+
console.log( '\n=== Processing Specific Files ===' );
306+
specificFiles.forEach( file => {
307+
const resolvedPath = resolve( file );
308+
const ext = extname( file );
309+
if ( existsSync( resolvedPath ) ) {
310+
if ( ext === '.css' ) {
311+
allCssFiles.push( file );
312+
console.log( ` ✓ Found CSS: ${file}` );
313+
} else if ( ext === '.js' ) {
314+
allJsFiles.push( file );
315+
console.log( ` ✓ Found JS: ${file}` );
316+
} else {
317+
console.log( ` ✗ Skipped (not CSS/JS): ${file}` );
318+
}
319+
} else {
320+
console.log( ` ✗ File not found: ${file}` );
321+
}
322+
} );
323+
} else {
324+
allCssFiles = findFiles( '.', '.css' );
325+
allJsFiles = findFiles( '.', '.js' );
326+
}
285327

286328
// Filter out source files used in combinations.
287-
// Also filter out .min and combined output files based on config.
288329
const cssFilesToMinify = allCssFiles.filter( ( file ) => {
289-
// Skip source files that are part of combinations.
290330
if ( combinedSourceFiles.includes( file ) ) {
291331
return false;
292332
}
293-
// Skip already-minified files (we don't want to minify .min.css again).
294333
if ( file.endsWith( '.min.css' ) ) {
295334
return false;
296335
}
297-
// Skip combined output files if not creating minified versions.
298336
if ( ! config.createMinifiedCombinedFiles && combinedOutputFiles.includes( file ) ) {
299337
return false;
300338
}
301339
return true;
302340
} );
303341

304342
const jsFilesToMinify = allJsFiles.filter( ( file ) => {
305-
// Skip source files that are part of combinations.
306343
if ( combinedSourceFiles.includes( file ) ) {
307344
return false;
308345
}
309-
// Skip already-minified files (we don't want to minify .min.js again).
310346
if ( file.endsWith( '.min.js' ) ) {
311347
return false;
312348
}
313-
// Skip combined output files if not creating minified versions.
314349
if ( ! config.createMinifiedCombinedFiles && combinedOutputFiles.includes( file ) ) {
315350
return false;
316351
}
@@ -336,10 +371,14 @@ jsFilesToMinify.forEach( ( file ) => {
336371
minifyJs( file, minFile );
337372
} );
338373

339-
// Step 7: Generate RTL versions for all CSS files (including minified and combined).
374+
// Step 7: Generate RTL versions for CSS files.
340375
console.log( '\n=== Generating RTL CSS ===' );
341376
const cssFilesForRtl = allCssFiles.filter( ( file ) => ! file.includes( '-rtl.' ) && ! file.endsWith( '-rtl.css' ) );
342377

378+
if ( processSpecificFiles && cssFilesForRtl.length === 0 ) {
379+
console.log( ' No CSS files to process for RTL.' );
380+
}
381+
343382
const rtlFilesGenerated = [];
344383
cssFilesForRtl.forEach( ( file ) => {
345384
// Handle .min.css files correctly: name.min.css → name-rtl.min.css

0 commit comments

Comments
 (0)