Changeset 12775
- Timestamp:
- 08/01/2023 10:17:14 PM (19 months ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content/plugins/photo-directory/assets
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/photo-directory/assets/css/admin.css
r12694 r12775 60 60 margin-top: 1rem; 61 61 } 62 63 .photo-missing-taxonomy { 64 border-color: orange; 65 background-color: antiquewhite; 66 } -
sites/trunk/wordpress.org/public_html/wp-content/plugins/photo-directory/assets/js/admin.js
r12774 r12775 23 23 document.getElementById('photo_orientationdiv').hidden = true; 24 24 } 25 26 // Highlight custom taxonomies lacking terms. 27 highlightCustomTaxonomiesWithoutTerms(); 25 28 }, false); 29 30 /** 31 * Highlights when a custom taxonomy lacks at least one term assignment. 32 */ 33 function highlightCustomTaxonomiesWithoutTerms() { 34 // Highlight/unhighlight custom taxonomies lacking any term assignments. 35 const customTaxMetaboxes = [ 36 ['photo_categorydiv', 'tax_input[photo_category][]', 'checkbox'], 37 ['photo_colordiv', 'tax_input[photo_color][]', 'checkbox'], 38 ['photo_orientationdiv', 'tax_input[photo_orientation][]', 'checkbox'], 39 ['tagsdiv-photo_tag', 'newtag[photo_tag]', 'text', '.tagchecklist'], 40 ]; 41 42 customTaxMetaboxes.forEach(element => { 43 // Decide on highlight initially. 44 setMetaboxHighlight(element); 45 46 // Listen for changes in value to re-determine highlight. 47 document.querySelectorAll('input[name="' + element[1] + '"]').forEach(item => { 48 item.addEventListener('input', customTaxChangeCB); 49 }); 50 51 // The tag list is handled differently. Re-determine as tags are added/removed. 52 if (element[3]) { 53 const observer = new MutationObserver(function(mutations_list) { 54 mutations_list.forEach(function(mutation) { 55 if (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0) { 56 setMetaboxHighlight(element); 57 } 58 }); 59 }); 60 61 observer.observe(document.querySelector(element[3]), { subtree: false, childList: true }); 62 } 63 }); 64 65 // Callback to call setMetaboxHighlight() for proper event targets. 66 function customTaxChangeCB(e) { 67 const name = e.target.name; 68 let customTaxMetabox = customTaxMetaboxes.find(n => { return n[1] === name; }); 69 if (!customTaxMetabox) { 70 return; 71 } 72 setMetaboxHighlight(customTaxMetabox) 73 } 74 75 // Highlights or unhighlights a metabox based on presence of terms. 76 function setMetaboxHighlight(customTaxMetabox) { 77 [metaboxID, inputName, inputType, tagListClass] = customTaxMetabox; 78 const missingTaxClass = 'photo-missing-taxonomy'; 79 const div = document.getElementById(metaboxID); 80 81 let selector = 'input[name="' + inputName + '"]'; 82 if ('checkbox' === inputType) { 83 selector += ':checked'; 84 } 85 let value = document.querySelector(selector)?.value; 86 // If tagListClass is present, see if it has any values if one not already found. 87 if (!value && tagListClass) { 88 value = document.querySelector(tagListClass).hasChildNodes(); 89 } 90 91 value ? div?.classList.remove(missingTaxClass) : div?.classList.add(missingTaxClass); 92 } 93 }
Note: See TracChangeset
for help on using the changeset viewer.