PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.24
Advanced Ads – Ad Manager & AdSense v2.0.24
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 / commands / command-loader.js
advanced-ads / src / admin / commands Last commit date
command-loader.js 3 months ago commands.js 3 months ago
command-loader.js
142 lines
1 import { addQueryArgs } from '@wordpress/url';
2 import { useCommandLoader } from '@wordpress/commands';
3 import { useSelect } from '@wordpress/data';
4 import { Dashicon } from '@wordpress/components';
5 import { store as coreStore } from '@wordpress/core-data';
6 // eslint-disable-next-line import/no-extraneous-dependencies
7 import { useMemo, createElement } from '@wordpress/element';
8
9 const taxonomies = [ 'advanced_ads_groups' ];
10 const postTypes = [ 'advanced_ads', 'advanced_ads_plcmnt' ];
11 const labelsHash = {
12 advanced_ads: 'Ads',
13 advanced_ads_plcmnt: 'Placement',
14 advanced_ads_groups: 'Group',
15 };
16 const iconsHash = {
17 advanced_ads: 'format-video',
18 advanced_ads_plcmnt: 'welcome-widgets-menus',
19 advanced_ads_groups: 'category',
20 };
21
22 const getEditUrl = ( type, item ) => {
23 if ( 'advanced_ads_plcmnt' === type ) {
24 return addQueryArgs( `edit.php#modal-placement-edit-${ item.id }`, {
25 post_status: 'all',
26 s: item.title?.rendered,
27 post_type: type,
28 } );
29 }
30
31 return addQueryArgs( 'post.php', {
32 action: 'edit',
33 post: item.id,
34 } );
35 };
36
37 function useAdvancedAdsSearchCommandLoader( { search } ) {
38 const { records, isLoading } = useSelect(
39 ( select ) => {
40 const { getEntityRecords, hasFinishedResolution } =
41 select( coreStore );
42 const query = {
43 search,
44 per_page: 10,
45 };
46
47 const postResults = postTypes.flatMap( ( type ) => {
48 const r = getEntityRecords( 'postType', type, query );
49 return r
50 ? r.map( ( item ) => ( {
51 name: `edit-${ type }-${ item.id }`,
52 label: `${ labelsHash[ type ] }: ${ item.title?.rendered }`,
53 category: 'edit',
54 icon: createElement( Dashicon, {
55 icon: iconsHash[ type ],
56 } ),
57 editUrl: getEditUrl( type, item ),
58 } ) )
59 : [];
60 } );
61
62 const taxResults = taxonomies.flatMap( ( type ) => {
63 const r = getEntityRecords( 'taxonomy', type, query );
64 return r
65 ? r.map( ( item ) => ( {
66 name: `edit-${ type }-${ item.id }`,
67 label: `${ labelsHash[ type ] }: ${ item.name }`,
68 category: 'edit',
69 icon: createElement( Dashicon, {
70 icon: iconsHash[ type ],
71 } ),
72 editUrl: addQueryArgs(
73 `admin.php#modal-group-edit-${ item.id }`,
74 {
75 page: 'advanced-ads-groups',
76 s: item.name,
77 }
78 ),
79 } ) )
80 : [];
81 } );
82
83 const finishedPosts = postTypes.every( ( type ) =>
84 hasFinishedResolution( 'getEntityRecords', [
85 'postType',
86 type,
87 query,
88 ] )
89 );
90
91 const finishedTax = taxonomies.every( ( type ) =>
92 hasFinishedResolution( 'getEntityRecords', [
93 'taxonomy',
94 type,
95 query,
96 ] )
97 );
98
99 return {
100 records: [ ...postResults, ...taxResults ],
101 isLoading: ! finishedPosts || ! finishedTax,
102 };
103 },
104 [ search ]
105 );
106
107 // Create the commands.
108 const commands = useMemo( () => {
109 return ( records ?? [] ).slice( 0, 10 ).map( ( record ) => {
110 return {
111 ...record,
112 callback: ( { close } ) => {
113 document.location = record.editUrl;
114 close();
115 },
116 };
117 } );
118 }, [ records ] );
119
120 return {
121 commands,
122 isLoading,
123 };
124 }
125
126 function AdvancedAdsSearch() {
127 useCommandLoader( {
128 name: 'advanced-ads/commands/search',
129 hook: useAdvancedAdsSearchCommandLoader,
130 } );
131
132 return null;
133 }
134
135 export function commandLoader() {
136 const mountPoint = document.createElement( 'div' );
137 mountPoint.id = 'advanced-ads-commands-root';
138 document.body.appendChild( mountPoint );
139 const root = wp.element.createRoot( mountPoint );
140 root.render( createElement( AdvancedAdsSearch ) );
141 }
142