
mxQuickView architecture
Component overview
- Init snippet:
mxQuickView.initializeLoads CSS/JS, publisheswindow.mxqvConfig, prepares modal modesnative/bootstrap/fancybox. - Frontend JS:
assets/components/mxquickview/js/mxqv.min.jsEvent delegation, AJAX to connector, modal/selector render, loop navigation, ms3Variants helpers. - Connector:
assets/components/mxquickview/connector.phpSingle HTTP entry for actionrender. - Processor:
core/components/mxquickview/src/Processors/Render.phpWhitelist and resource access checks, renderchunk|snippet|template. - Base product chunk:
core/components/mxquickview/elements/chunks/mxqv_product.tplCard markup for quick view with cart form and variants block.
Data flow (high level)
- User clicks or hovers on element with
data-mxqv-*. mxqv.jsbuilds POST toconnector.php(mode,data_action,element,id,context,output,modal_library).- Connector validates HTTP method and
action=render, then callsRender::run(...). - Processor:
- checks
id,element,data_action; - loads resource and view permission;
- validates element against whitelist;
- renders HTML via
getChunkorrunSnippet.
- checks
- Connector returns JSON
{success, html|message}. - JS inserts HTML into the chosen modal (
native/bootstrap/fancybox) or the selector container.
Render placeholders
Passed into render:
- resource fields (
$resource->toArray()); - resource
content; assets_url;- with MiniShop3:
msProductDatafields; - with ms3Variants:
has_variants,variants_html,variants_json.
Security
- Connector accepts only
POST. - Resource existence (
id,deleted=0) andview/loadpermission are checked. - Whitelist is required for
chunkandsnippet. - Whitelist is required for
template; emptymxquickview_allowed_templatedisables template render.
Data storage
The component does not create its own DB tables for quick view: it uses MODX resources and (optionally) MiniShop3/ms3Variants models.
Files and roles
| File | Role |
|---|---|
assets/components/mxquickview/connector.php | AJAX entry point |
core/components/mxquickview/src/Processors/Render.php | Render business logic |
core/components/mxquickview/elements/snippets/mxqv_initialize.php | Frontend and modal markup loading |
assets/components/mxquickview/js/mxqv.min.js | Client behavior (minified) |
assets/components/mxquickview/css/mxqv.min.css | Modal and card styles (minified) |
