File "recommendations.js"
Full path: /home/disqkgca/aqanet.org/wp-content/plugins/extendify/src/Recommendations/recommendations.js
File size: 1.74 KiB (1780 bytes)
MIME-type: text/x-java
Charset: utf-8
import domReady from '@wordpress/dom-ready';
import { PluginSearchBanner } from '@recommendations/components/PluginSearchBanner';
import '@recommendations/recommendations.css';
import { render } from '@shared/lib/dom';
domReady(() => {
// Check the current page to know what elements we need to insert.
const currentUrl = new URL(window.location.href);
const isPluginInstall = currentUrl.pathname.endsWith('plugin-install.php');
const isNewPost =
currentUrl.pathname.endsWith('post-new.php') &&
currentUrl.searchParams.get('post_type') !== 'page';
const isNewPage =
currentUrl.pathname.endsWith('post-new.php') &&
currentUrl.searchParams.get('post_type') === 'page';
// Returns early if we are not in a page that shows recommendations.
if (!isPluginInstall && !isNewPost && !isNewPage) {
return;
}
if (isPluginInstall) {
// The element `plugin-filter` wraps the search results,
const pluginResults = document.getElementById('plugin-filter');
if (pluginResults) {
const pluginSearchContainerId = 'ext-recommendations-plugin-search';
// If our component is already inserted, return early.
if (document.getElementById(pluginSearchContainerId)) {
return;
}
const pluginSearchContainer = Object.assign(
document.createElement('div'),
{
id: pluginSearchContainerId,
className: 'extendify-recommendations',
},
);
// Inserts our component just before the plugin search results.
pluginResults.parentNode.insertBefore(
pluginSearchContainer,
pluginResults,
);
return render(<PluginSearchBanner />, pluginSearchContainer);
}
}
if (isNewPost) {
// TODO: Implement injection of components in new post.
}
if (isNewPage) {
// TODO: Implement injection of components in new page.
}
});