PluginProbe ʕ •ᴥ•ʔ
WP Popular Posts / trunk
WP Popular Posts vtrunk
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 1 month ago edit.js 1 month ago fields-filters.js 1 month ago fields-html-markup.js 1 month ago fields-main.js 1 month ago fields-post-settings.js 1 month ago fields-stats-tag.js 1 month 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 }