PluginProbe ʕ •ᴥ•ʔ
WP Popular Posts / 7.4.1
WP Popular Posts v7.4.1
7.4.1 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.2.0 4.2.1 4.2.2 5.0.0 5.0.1 5.0.2 5.1.0 5.2.0 5.2.1 5.2.2 5.2.3 5.2.4 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.1.2 6.1.3 6.1.4 6.2.0 6.2.1 6.3.0 6.3.1 6.3.2 6.3.3 6.3.4 6.4.0 6.4.1 6.4.2 7.0.0 7.0.1 7.1.0 7.2.0 7.3.0 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 7.3.8 7.4.0 trunk 2.3.7 3.0.0 3.0.1 3.0.2 3.0.3 3.1.0 3.1.1 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.2 4.0.3 4.0.5 4.0.6
wordpress-popular-posts / src / Block / Widget / edit / edit.js
wordpress-popular-posts / src / Block / Widget / edit Last commit date
controls.js 2 months ago edit.js 2 months ago fields-filters.js 2 months ago fields-html-markup.js 1 week ago fields-main.js 2 months ago fields-post-settings.js 2 months ago fields-stats-tag.js 2 months ago
edit.js
118 lines
1 import { Controls } from './controls';
2 import { MainFields } from './fields-main';
3 import { FilterFields } from './fields-filters';
4 import { PostSettingsFields } from './fields-post-settings';
5 import { StatsTagFields } from './fields-stats-tag';
6 import { HTMLMarkupFields } from './fields-html-markup';
7
8 const { apiFetch, serverSideRender: ServerSideRender } = wp;
9 const { useBlockProps } = wp.blockEditor;
10 const { Disabled, Spinner } = wp.components;
11 const { Fragment, useEffect, useState } = wp.element;
12 const endpoint = 'wordpress-popular-posts/v1';
13
14 export function WPPWidgetBlockEdit({ attributes, setAttributes, isSelected, className, name }) {
15 const { _editMode: editMode } = attributes;
16
17 const [error, setError] = useState(null);
18 const [themes, setThemes] = useState(null);
19 const [imgSizes, setImgSizes] = useState(null);
20 const [taxonomies, setTaxonomies] = useState(null);
21
22 const getThemes = () => {
23 apiFetch({ path: endpoint + '/themes' })
24 .then(
25 ( res ) => setThemes(res),
26 ( err ) => {
27 setError(err);
28 setThemes(null);
29 }
30 );
31 };
32
33 const getImageSizes = () => {
34 apiFetch({ path: endpoint + '/thumbnails' })
35 .then(
36 ( res ) => setImgSizes(res),
37 ( err ) => {
38 setError(err);
39 setImgSizes(null);
40 }
41 );
42 };
43
44 const getTaxonomies = () => {
45 apiFetch({ path: endpoint + '/taxonomies' })
46 .then(
47 ( res ) => {
48 if ( res ) {
49 let tax = attributes.tax ? attributes.tax.split(';') : [],
50 term_id = attributes.term_id ? attributes.term_id.split(';') : [];
51
52 if ( tax.length && tax.length === term_id.length ) {
53 let selected_taxonomies = {};
54
55 for ( let t = 0; t < tax.length; t++ ) {
56 selected_taxonomies[tax[t]] = term_id[t];
57 }
58
59 for ( const tName in res ) {
60 res[tName]._terms = (typeof selected_taxonomies[tName] !== 'undefined') ? selected_taxonomies[tName] : '';
61 }
62 }
63 }
64
65 setTaxonomies(res);
66 },
67 ( err ) => {
68 setError(err);
69 setTaxonomies(null);
70 }
71 );
72 };
73
74 // Fetch on mount
75 useEffect(() => {
76 getThemes();
77 getImageSizes();
78 getTaxonomies();
79 // eslint-disable-next-line react-hooks/exhaustive-deps
80 }, []);
81
82 const blockProps = useBlockProps({
83 className: [
84 ( className || '' ),
85 ( editMode ? 'in-edit-mode' : 'in-preview-mode' ),
86 ( isSelected ? 'is-selected' : '' ),
87 ].filter(Boolean).join(' '),
88 });
89
90 if ( ! taxonomies || ! themes || ! imgSizes ) {
91 return <Spinner />;
92 }
93
94 return ([
95 <Controls attributes={attributes} setAttributes={setAttributes} key="wpp-widget-controls" />,
96 <div {... blockProps} key="wpp-widget-edit">
97 { editMode &&
98 <Fragment>
99 <MainFields attributes={attributes} setAttributes={setAttributes} />
100 <FilterFields attributes={attributes} setAttributes={setAttributes} taxonomies={taxonomies} setTaxonomies={setTaxonomies} />
101 <PostSettingsFields attributes={attributes} setAttributes={setAttributes} imgSizes={imgSizes} />
102 <StatsTagFields attributes={attributes} setAttributes={setAttributes} taxonomies={taxonomies} />
103 <HTMLMarkupFields attributes={attributes} setAttributes={setAttributes} themes={themes} />
104 </Fragment>
105 }
106 { ! editMode &&
107 <Disabled>
108 <ServerSideRender
109 block={name}
110 className={className}
111 attributes={attributes}
112 urlQueryArgs={{isSelected: isSelected}}
113 />
114 </Disabled>
115 }
116 </div>
117 ]);
118 }