PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.25
Advanced Ads – Ad Manager & AdSense v2.0.25
2.0.25 2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / src / admin / screen-licenses / components / EmptyState.jsx
advanced-ads / src / admin / screen-licenses / components Last commit date
AddonRowActions.jsx 6 days ago AddonsList.jsx 6 days ago AllAccessAddonsSummary.jsx 6 days ago AutoUpdateModal.jsx 6 days ago DownloadActivateButton.jsx 6 days ago EmptyState.jsx 6 days ago FeatureList.jsx 6 days ago LicenseField.jsx 6 days ago LicenseItem.jsx 6 days ago LicenseNotices.jsx 6 days ago LicenseStatus.jsx 6 days ago Loader.jsx 6 days ago PricingModal.jsx 6 days ago PricingTable.jsx 6 days ago PricingTableItem.jsx 6 days ago SitesModal.jsx 6 days ago
EmptyState.jsx
77 lines
1 /**
2 * External Dependencies
3 */
4 import { __ } from '@wordpress/i18n';
5 import { useModalState } from '@admin/hooks/useModalState';
6 import { PLANS } from './PricingTable';
7 import { startShopCheckoutForPlan } from '../utils';
8 import { PricingModal } from './PricingModal';
9
10 export function EmptyState() {
11 const {
12 isOpen: isPricingOpen,
13 open: openModal,
14 close: handlePricingClose,
15 } = useModalState();
16
17 const handlePricingOpen = () => {
18 const utmUrl = `${ advancedAds.endpoints.shopUrl }/?utm_source=advancedads&utm_medium=in-plugin&utm_campaign=a2-in_plugin-licenses_addons-buy-no_licenses`;
19
20 // 1. Fire the UTM "ping" in the background
21 // 'no-cors' prevents errors if the shop is on a different domain
22 // 'keepalive' ensures the request finishes even if the modal opens/state changes
23 fetch( utmUrl, { mode: 'no-cors', keepalive: true } );
24
25 // 2. Open the modal
26 openModal();
27 };
28
29 const handleSelectPlan = ( planId ) => {
30 startShopCheckoutForPlan( planId, PLANS );
31 };
32
33 return (
34 <div className="flex items-center justify-center w-full h-[calc(70vh)]">
35 <div className="text-center">
36 <h1 className="text-3xl font-semibold m-0">
37 { __( 'No active licenses there yet', 'advanced-ads' ) }
38 </h1>
39 <p className="m-0 mt-3 mb-8 text-gray-500 text-base">
40 { __(
41 'Purchase a license to unlock premium features.',
42 'advanced-ads'
43 ) }
44 <br />
45 { __(
46 'Free plugins don’t require a license and won’t appear here.',
47 'advanced-ads'
48 ) }
49 </p>
50 <div className="flex items-center justify-center gap-x-4">
51 <a
52 href={ `${ advancedAds.endpoints.shopUrl }/sso-login?site=${ advancedAds.endpoints.siteUrl }&utm_source=advancedads&utm_medium=in-plugin&utm_campaign=a2-in_plugin-licenses_addons-connect-no_licenses` }
53 className="button advads-button-neutral is-big"
54 >
55 { __( 'Connect license', 'advanced-ads' ) }
56 </a>
57
58 <button
59 type="button"
60 className="button advads-button-secondary is-big"
61 onClick={ handlePricingOpen }
62 >
63 { __( 'Buy license', 'advanced-ads' ) }
64 </button>
65 </div>
66 </div>
67 { isPricingOpen && (
68 <PricingModal
69 onClose={ handlePricingClose }
70 currentActionLabel={ __( 'Buy plan', 'advanced-ads' ) }
71 onSelectPlan={ handleSelectPlan }
72 />
73 ) }
74 </div>
75 );
76 }
77