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-placements / form-submission.js
advanced-ads / src / admin / screen-placements Last commit date
form-submission.js 3 months ago frontend-picker.js 1 week ago item-select.js 2 months ago listing.css 3 months ago listing.js 3 months ago quick-edit.js 3 months ago table.css 3 months ago
form-submission.js
202 lines
1 import jQuery from 'jquery';
2 import apiFetch from '@wordpress/api-fetch';
3
4 /**
5 * Disable inputs on a form
6 *
7 * @param {Node} form the form.
8 * @param {boolean} disabled disable inputs if `true`.
9 */
10 function disable(form, disabled) {
11 if ('undefined' === typeof disabled) {
12 disabled = true;
13 }
14
15 jQuery(form)
16 .find('select,input,textarea')
17 .add(
18 `.submit-placement-form[data-id="${form.id.replace(
19 'advanced-ads-placement-form-',
20 ''
21 )}"]`
22 )
23 .prop('disabled', disabled);
24 }
25
26 /**
27 * Submit edit placement form
28 *
29 * @param {Node} form the form to be submitted.
30 */
31 function submitEditPlacement(form) {
32 const $form = jQuery(form),
33 formData = $form.serialize();
34 disable(form);
35 apiFetch({
36 path: '/advanced-ads/v1/placement',
37 method: 'PUT',
38 data: {
39 fields: formData,
40 },
41 }).then(function (response) {
42 disable(form, false);
43
44 if (response.error) {
45 // Show an error message if there is a "error" field in the response
46 disable(form, false);
47 form.closest('dialog').close();
48 window.advancedAds.notifications.addError(response.error);
49 return;
50 }
51
52 const dialog = form.closest('dialog');
53 dialog.advadsTermination.resetInitialValues();
54 const rowTitle = jQuery(
55 `#post-${response.placement_data.id} .column-name .row-title`
56 );
57 rowTitle.text(response.title);
58 jQuery(
59 `#post-${response.placement_data.id} .column-ad_group .advads-placement-item-select`
60 ).val(response.item);
61
62 if (
63 response.payload.post_status &&
64 'draft' === response.payload.post_status
65 ) {
66 const rowParent = rowTitle.parent();
67 if (!rowParent.text().includes(advancedAds.i18n.placements.draft)) {
68 rowTitle
69 .parent()
70 .append(
71 jQuery(
72 `<strong>— <span class="post-state">${advancedAds.i18n.placements.draft}</span></strong>`
73 )
74 );
75 }
76 } else {
77 rowTitle.siblings().remove();
78 }
79
80 /**
81 * Allow add-on to update the table without refreshing the page if needed.
82 */
83 wp.hooks.doAction('advanced-ads-placement-updated', response);
84
85 if (response.reload) {
86 // Reload the page if needed.
87 // eslint-disable-next-line no-undef
88 localStorage.setItem(
89 'advadsUpdateMessage',
90 JSON.stringify({
91 type: 'success',
92 message: advancedAds.i18n.placements.updated,
93 })
94 );
95 window.location.reload();
96 return;
97 }
98
99 window.advancedAds.notifications.addSuccess(
100 advancedAds.i18n.placements.updated
101 );
102
103 dialog.close();
104 });
105 }
106
107 /**
108 * Submit create placement form
109 *
110 * @param {Node} form the form.
111 */
112 function submitNewPlacement(form) {
113 const dialog = form.closest('dialog');
114
115 if ('function' === typeof window[dialog.closeValidation.function]) {
116 const validForm = window[dialog.closeValidation.function](
117 dialog.closeValidation.modal_id
118 );
119 if (!validForm) {
120 return;
121 }
122 }
123
124 const formData = jQuery(form).serialize();
125 disable(form);
126 apiFetch({
127 path: '/advanced-ads/v1/placement',
128 method: 'POST',
129 data: {
130 fields: formData,
131 },
132 }).then(function (response) {
133 disable(form, false);
134 if (response.redirectUrl) {
135 window.location.href = response.redirectUrl;
136 } else if (response.reload) {
137 // Reload the page if needed.
138 // eslint-disable-next-line no-undef
139 localStorage.setItem(
140 'advadsUpdateMessage',
141 JSON.stringify({
142 type: 'success',
143 message: advancedAds.i18n.placements.created,
144 })
145 );
146 window.location.reload();
147 }
148 });
149 }
150
151 // Submit edit placement form
152 jQuery(document).on('click', '.submit-placement-edit', function () {
153 submitEditPlacement(
154 jQuery(`#advanced-ads-placement-form-${this.dataset.id}`)[0]
155 );
156 });
157
158 // Submit new placement form
159 jQuery(document).on('click', '#submit-new-placement', function () {
160 submitNewPlacement(jQuery('#advads-placements-new-form')[0]);
161 });
162
163 export default function () {
164 // Stop normal new placement form submission.
165 wp.hooks.addFilter(
166 'advanced-ads-submit-modal-form',
167 'advancedAds',
168 function (send, form) {
169 if ('advads-placements-new-form' === form.id) {
170 submitNewPlacement(form);
171 return false;
172 }
173 return send;
174 }
175 );
176
177 // Stop normal edit placement form submission.
178 wp.hooks.addFilter(
179 'advanced-ads-submit-modal-form',
180 'advancedAds',
181 function (send, form) {
182 if (0 === form.id.indexOf('advanced-ads-placement-form-')) {
183 submitEditPlacement(form);
184 return false;
185 }
186 return send;
187 }
188 );
189
190 // Place our custom "Save and close" button to edit forms.
191 jQuery('[id^="advanced-ads-placement-form-"]').each(function () {
192 const id = this.id.replace('advanced-ads-placement-form-', '');
193 jQuery(`#modal-placement-edit-${id}`).find('.advads-modal-footer').html(
194 `<button class="button button-primary submit-placement-edit" data-id="${id}">${advancedAds.i18n.placements.closeSave}</button>` // eslint-disable-line no-undef
195 );
196 });
197
198 jQuery('#modal-placement-new').find('.advads-modal-footer').html(
199 `<button class="button button-primary" id="submit-new-placement">${advancedAds.i18n.placements.saveNew}</button>` // eslint-disable-line no-undef
200 );
201 }
202