...
This commit is contained in:
70
static/js/plugins/faq-plugin.js
Normal file
70
static/js/plugins/faq-plugin.js
Normal file
@@ -0,0 +1,70 @@
|
||||
/**
|
||||
* FAQ Plugin
|
||||
* Creates FAQ entries that are collected and displayed at bottom of preview
|
||||
*
|
||||
* Usage:
|
||||
* !!faq title: 'My Question'
|
||||
* response: '''
|
||||
* This is the answer with **markdown** support.
|
||||
*
|
||||
* - Point 1
|
||||
* - Point 2
|
||||
* '''
|
||||
*/
|
||||
class FAQPlugin extends MacroPlugin {
|
||||
constructor(processor) {
|
||||
super();
|
||||
this.processor = processor;
|
||||
}
|
||||
|
||||
canHandle(actor, method) {
|
||||
return actor === 'core' && method === 'faq';
|
||||
}
|
||||
|
||||
async process(macro, webdavClient) {
|
||||
const title = macro.params.title;
|
||||
const response = macro.params.response;
|
||||
|
||||
console.log('[FAQPlugin] Processing FAQ:', title);
|
||||
|
||||
if (!title) {
|
||||
console.error('[FAQPlugin] Missing title parameter');
|
||||
return {
|
||||
success: false,
|
||||
error: 'FAQ macro requires "title" parameter'
|
||||
};
|
||||
}
|
||||
|
||||
if (!response) {
|
||||
console.error('[FAQPlugin] Missing response parameter');
|
||||
return {
|
||||
success: false,
|
||||
error: 'FAQ macro requires "response" parameter'
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
// Store FAQ item for later display
|
||||
this.processor.faqItems.push({
|
||||
title: title.trim(),
|
||||
response: response.trim()
|
||||
});
|
||||
|
||||
console.log('[FAQPlugin] FAQ item added, total:', this.processor.faqItems.length);
|
||||
|
||||
// Return empty string since FAQ is shown at bottom
|
||||
return {
|
||||
success: true,
|
||||
content: ''
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('[FAQPlugin] Error:', error);
|
||||
return {
|
||||
success: false,
|
||||
error: `FAQ processing error: ${error.message}`
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.FAQPlugin = FAQPlugin;
|
||||
Reference in New Issue
Block a user