Initial commit after renaming from fix-plugin-does-not-exist-notices to wp-fix-plugin-does-not-exist-notices
This commit is contained in:
50
assets/README.md
Normal file
50
assets/README.md
Normal file
@ -0,0 +1,50 @@
|
||||
# Plugin Assets for WordPress.org
|
||||
|
||||
This directory contains assets for the WordPress.org plugin repository.
|
||||
|
||||
## Directory Structure
|
||||
|
||||
- `banner/` - Banner images for the plugin page header
|
||||
- `banner-772x250.jpg` - Standard banner (772x250px)
|
||||
- `banner-1544x500.jpg` - Retina banner (1544x500px)
|
||||
|
||||
- `icon/` - Plugin icon images
|
||||
- `icon-128x128.jpg` - Standard icon (128x128px)
|
||||
- `icon-256x256.jpg` - Retina icon (256x256px)
|
||||
|
||||
- `screenshots/` - Screenshots shown on the plugin page
|
||||
- `screenshot-1.jpg` - Error message with explanation notification
|
||||
|
||||
## WordPress.org Requirements
|
||||
|
||||
### Required Image Dimensions
|
||||
|
||||
- **Banner**: 772x250px with 2x retina version at 1544x500px
|
||||
- **Icon**: 128x128px with 2x retina version at 256x256px
|
||||
- **Screenshots**: No specific size requirements, but they should be clear and readable
|
||||
|
||||
### Image Formats
|
||||
|
||||
- All images should be in JPG or PNG format
|
||||
- Images should be optimized for web (compressed without losing quality)
|
||||
|
||||
### Additional Notes
|
||||
|
||||
- Screenshots should be numbered sequentially starting with 1
|
||||
- They should match the descriptions in the `readme.txt` file
|
||||
- Right-to-Left (RTL) language versions of banners and icons can be provided by appending `-rtl` to the filename
|
||||
- There is no official support for dark mode versions of assets in the WordPress.org repository
|
||||
|
||||
## Example Filenames
|
||||
|
||||
```
|
||||
assets/
|
||||
├── banner/
|
||||
│ ├── banner-772x250.jpg
|
||||
│ └── banner-1544x500.jpg
|
||||
├── icon/
|
||||
│ ├── icon-128x128.jpg
|
||||
│ └── icon-256x256.jpg
|
||||
└── screenshots/
|
||||
├── screenshot-1.jpg
|
||||
```
|
126
assets/WORDPRESS_ORG_ASSETS.md
Normal file
126
assets/WORDPRESS_ORG_ASSETS.md
Normal file
@ -0,0 +1,126 @@
|
||||
# WordPress.org Plugin Submission Assets Guide
|
||||
|
||||
This document explains how to prepare and upload assets for WordPress.org plugin submission. This is the main reference document for all asset-related information.
|
||||
|
||||
## WordPress.org SVN Repository Structure
|
||||
|
||||
When submitting a plugin to WordPress.org, you'll work with an SVN repository that has this structure:
|
||||
|
||||
```
|
||||
/assets/ # Contains assets for the WordPress.org plugin page
|
||||
icon-256x256.png
|
||||
icon-128x128.png
|
||||
banner-772x250.png
|
||||
banner-1544x500.png
|
||||
screenshot-1.png
|
||||
/tags/ # Contains tagged releases
|
||||
/1.6.27/
|
||||
[plugin files]
|
||||
/1.6.26/
|
||||
[plugin files]
|
||||
/trunk/ # Contains the current version of the plugin
|
||||
[plugin files]
|
||||
```
|
||||
|
||||
## Right-to-Left (RTL) Support
|
||||
|
||||
For languages that read from right to left (like Hebrew and Arabic), you can provide RTL-specific versions of your assets by appending `-rtl` to the filename. For example:
|
||||
- `banner-772x250-rtl.png`
|
||||
- `icon-256x256-rtl.png`
|
||||
|
||||
Note: `-rtl` is specifically for Right-to-Left language support, not for dark theme versions.
|
||||
|
||||
## Asset Requirements
|
||||
|
||||
### Icon
|
||||
|
||||
- **Format**: PNG
|
||||
- **Sizes**:
|
||||
- Required: 256x256 pixels (`icon-256x256.png`)
|
||||
- Optional: 128x128 pixels (`icon-128x128.png`)
|
||||
- **Location**: Upload to the `/assets/` directory in the WordPress.org SVN repository
|
||||
- **Status**: ✅ READY - Files are in `assets/icon/`
|
||||
|
||||
### Banner
|
||||
|
||||
- **Format**: PNG
|
||||
- **Sizes**:
|
||||
- Required: 772x250 pixels (`banner-772x250.png`)
|
||||
- Optional: 1544x500 pixels (`banner-1544x500.png`) for high-DPI displays
|
||||
- **Location**: Upload to the `/assets/` directory in the WordPress.org SVN repository
|
||||
- **Status**: ✅ READY - Files are in `assets/banner/`
|
||||
|
||||
### Screenshots
|
||||
|
||||
- **Format**: PNG
|
||||
- **Naming**: `screenshot-1.png`
|
||||
- **Location**: Upload to the `/assets/` directory in the WordPress.org SVN repository
|
||||
- **Status**: ✅ READY
|
||||
- `screenshot-1.png` is available in `assets/screenshots/`
|
||||
|
||||
## Submission Process
|
||||
|
||||
1. **Prepare Plugin Files**:
|
||||
- Ensure all plugin files are ready in your local repository
|
||||
- Make sure version numbers are consistent across all files
|
||||
|
||||
2. **Prepare Assets**:
|
||||
- Ensure all assets follow the naming conventions above
|
||||
- Verify that screenshots match the descriptions in readme.txt
|
||||
|
||||
3. **Upload to WordPress.org**:
|
||||
- When you receive SVN access, use these commands:
|
||||
```bash
|
||||
# Check out the repository
|
||||
svn checkout https://plugins.svn.wordpress.org/fix-plugin-does-not-exist-notices/
|
||||
|
||||
# Copy plugin files to trunk
|
||||
cp -r [your-local-plugin-files]/* fix-plugin-does-not-exist-notices/trunk/
|
||||
|
||||
# Copy assets to assets directory
|
||||
cp assets/icon/icon-256x256.png fix-plugin-does-not-exist-notices/assets/
|
||||
cp assets/icon/icon-128x128.png fix-plugin-does-not-exist-notices/assets/
|
||||
cp assets/banner/banner-772x250.png fix-plugin-does-not-exist-notices/assets/
|
||||
cp assets/banner/banner-1544x500.png fix-plugin-does-not-exist-notices/assets/
|
||||
cp assets/screenshots/screenshot-1.png fix-plugin-does-not-exist-notices/assets/
|
||||
|
||||
# Add new files
|
||||
cd fix-plugin-does-not-exist-notices
|
||||
svn add --force trunk/*
|
||||
svn add --force assets/*
|
||||
|
||||
# Commit changes
|
||||
svn commit -m "Initial plugin submission"
|
||||
```
|
||||
|
||||
## Image Conversion Tools
|
||||
|
||||
For converting SVG to PNG or creating different sizes of images, you can use:
|
||||
|
||||
- **Graphic Design Software**:
|
||||
- Adobe Photoshop
|
||||
- Adobe Illustrator
|
||||
- Affinity Designer
|
||||
- Affinity Photo
|
||||
- GIMP (free, open-source)
|
||||
- Inkscape (free, open-source)
|
||||
- Pixelmator
|
||||
|
||||
- **Online Converters**:
|
||||
- [SVG to PNG Converter](https://svgtopng.com/)
|
||||
- [Convertio](https://convertio.co/svg-png/)
|
||||
- [CloudConvert](https://cloudconvert.com/svg-to-png)
|
||||
|
||||
- **Command Line** (using ImageMagick):
|
||||
```bash
|
||||
# For 256x256 icon
|
||||
convert -background none -size 256x256 assets/icon/icon.svg assets/icon/icon-256x256.png
|
||||
|
||||
# For 128x128 icon
|
||||
convert -background none -size 128x128 assets/icon/icon.svg assets/icon/icon-128x128.png
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
- [WordPress Plugin Developer Handbook - Plugin Assets](https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/)
|
||||
- [WordPress Plugin Directory README.txt Standard](https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/)
|
81
assets/WORDPRESS_ORG_SUBMISSION.md
Normal file
81
assets/WORDPRESS_ORG_SUBMISSION.md
Normal file
@ -0,0 +1,81 @@
|
||||
# WordPress.org Plugin Submission Assets Guide
|
||||
|
||||
This document outlines the requirements for assets when submitting a plugin to the WordPress.org plugin repository.
|
||||
|
||||
## Asset Requirements
|
||||
|
||||
### Icon
|
||||
|
||||
- **Format**: PNG
|
||||
- **Size**: 256x256 pixels
|
||||
- **Filename**: `icon-256x256.png`
|
||||
- **Location**: SVN `/assets` directory (not included in the plugin zip)
|
||||
- **Optional**: You can also include `icon-128x128.png` for backward compatibility
|
||||
|
||||
### Banner
|
||||
|
||||
- **Format**: PNG
|
||||
- **Sizes**:
|
||||
- Regular: 772x250 pixels (`banner-772x250.png`)
|
||||
- High-DPI: 1544x500 pixels (`banner-1544x500.png`)
|
||||
- **Location**: SVN `/assets` directory (not included in the plugin zip)
|
||||
|
||||
### Screenshots
|
||||
|
||||
- **Format**: PNG
|
||||
- **Naming**: Sequential numbers (`screenshot-1.png`, `screenshot-2.png`, etc.)
|
||||
- **Location**: SVN `/assets` directory (not included in the plugin zip)
|
||||
- **Important**: The number and order must match the descriptions in the `readme.txt` file
|
||||
|
||||
## Current Status
|
||||
|
||||
### Icon
|
||||
- ✅ SVG source available in `assets/icon/icon.svg`
|
||||
- ✅ PNG files created in `assets/icon/icon-256x256.png` and `assets/icon/icon-128x128.png`
|
||||
|
||||
### Banner
|
||||
- ✅ Both sizes available in `assets/banner/`
|
||||
- ✅ Properly named files: `banner-772x250.png` and `banner-1544x500.png`
|
||||
|
||||
### Screenshots
|
||||
- ✅ One screenshot available in `assets/screenshots/screenshot-1.png`
|
||||
- ✅ Screenshot description in readme.txt updated to reference only one screenshot
|
||||
|
||||
## SVN Directory Structure
|
||||
|
||||
When submitting to WordPress.org, your SVN repository will have this structure:
|
||||
|
||||
```
|
||||
/assets/
|
||||
icon-256x256.png
|
||||
icon-128x128.png
|
||||
banner-772x250.png
|
||||
banner-1544x500.png
|
||||
screenshot-1.png
|
||||
/tags/
|
||||
/1.6.27/
|
||||
[plugin files]
|
||||
/1.6.26/
|
||||
[plugin files]
|
||||
/trunk/
|
||||
[current plugin files]
|
||||
```
|
||||
|
||||
## Action Items
|
||||
|
||||
1. Ensure all files follow the proper naming convention
|
||||
2. Upload all assets to the WordPress.org SVN repository in the `/assets` directory using these commands:
|
||||
|
||||
```bash
|
||||
# Copy assets to WordPress.org SVN assets directory
|
||||
cp assets/icon/icon-256x256.png /path/to/wordpress-svn/assets/
|
||||
cp assets/icon/icon-128x128.png /path/to/wordpress-svn/assets/
|
||||
cp assets/banner/banner-772x250.png /path/to/wordpress-svn/assets/
|
||||
cp assets/banner/banner-1544x500.png /path/to/wordpress-svn/assets/
|
||||
cp assets/screenshots/screenshot-1.png /path/to/wordpress-svn/assets/
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
- [WordPress Plugin Developer Handbook - Plugin Assets](https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/)
|
||||
- [WordPress Plugin Directory README.txt Standard](https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/)
|
15
assets/banner/README.md
Normal file
15
assets/banner/README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# WordPress.org Banner Files
|
||||
|
||||
This directory contains banner files for the WordPress.org plugin repository.
|
||||
|
||||
## Files in this Directory
|
||||
|
||||
- `banner-772x250.png` - 772x250 pixel PNG banner (required for WordPress.org)
|
||||
- `banner-1544x500.png` - 1544x500 pixel PNG banner for high-DPI displays (optional for WordPress.org)
|
||||
- `banner-1544x500.pxd` - Source file for editing in Pixelmator
|
||||
|
||||
## WordPress.org Submission
|
||||
|
||||
For detailed information about WordPress.org banner requirements and submission process, please see the main asset documentation:
|
||||
|
||||
[WordPress.org Plugin Submission Assets Guide](../WORDPRESS_ORG_ASSETS.md)
|
BIN
assets/banner/banner-1544x500.png
Normal file
BIN
assets/banner/banner-1544x500.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
assets/banner/banner-772x250.png
Normal file
BIN
assets/banner/banner-772x250.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
38
assets/css/admin-styles.css
Normal file
38
assets/css/admin-styles.css
Normal file
@ -0,0 +1,38 @@
|
||||
.prc-notice {
|
||||
border-left: 4px solid #ffba00;
|
||||
background-color: #fff8e5;
|
||||
padding: 10px 12px;
|
||||
margin: 5px 0 15px;
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
max-width: none;
|
||||
}
|
||||
.prc-notice h3 {
|
||||
margin-top: 0;
|
||||
color: #826200;
|
||||
}
|
||||
.prc-notice::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
left: 20px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 10px solid transparent;
|
||||
border-right: 10px solid transparent;
|
||||
border-bottom: 10px solid #fff8e5;
|
||||
}
|
||||
|
||||
/* Style for highlighting the missing plugin row */
|
||||
tr.inactive.prc-highlight-missing,
|
||||
tr.active.prc-highlight-missing {
|
||||
background-color: #fff8e5 !important; /* Use !important to override default styles */
|
||||
}
|
||||
|
||||
/* Make File Missing text bold and red */
|
||||
span.error {
|
||||
font-weight: bold !important;
|
||||
color: #dc3232 !important;
|
||||
}
|
16
assets/icon/README.md
Normal file
16
assets/icon/README.md
Normal file
@ -0,0 +1,16 @@
|
||||
# WordPress.org Icon Files
|
||||
|
||||
This directory contains icon files for the WordPress.org plugin repository.
|
||||
|
||||
## Files in this Directory
|
||||
|
||||
- `icon.svg` - Source SVG icon
|
||||
- `icon-256x256.png` - 256x256 pixel PNG icon (required for WordPress.org)
|
||||
- `icon-128x128.png` - 128x128 pixel PNG icon (optional for WordPress.org)
|
||||
- `icon-1024x1024.pxd` - Source file for editing in Pixelmator
|
||||
|
||||
## WordPress.org Submission
|
||||
|
||||
For detailed information about WordPress.org icon requirements and submission process, please see the main asset documentation:
|
||||
|
||||
[WordPress.org Plugin Submission Assets Guide](../WORDPRESS_ORG_ASSETS.md)
|
BIN
assets/icon/icon-128x128.png
Normal file
BIN
assets/icon/icon-128x128.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/icon/icon-256x256.png
Normal file
BIN
assets/icon/icon-256x256.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
11
assets/icon/icon.svg
Normal file
11
assets/icon/icon.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 30 KiB |
131
assets/js/admin-scripts.js
Normal file
131
assets/js/admin-scripts.js
Normal file
@ -0,0 +1,131 @@
|
||||
(function() {
|
||||
// Track if we've already added our notice
|
||||
var noticeAdded = false;
|
||||
|
||||
// Function to inject our notice
|
||||
function injectNotice() {
|
||||
// If we've already added a notice, don't add another one
|
||||
if (noticeAdded) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Find all notification containers first
|
||||
var noticeContainers = document.querySelectorAll('.notice, .error, .updated, div.error');
|
||||
var targetNotice = null;
|
||||
|
||||
// Find all error notifications about missing plugins
|
||||
noticeContainers.forEach(function(notice) {
|
||||
if ((notice.textContent.includes('Plugin file does not exist') ||
|
||||
notice.textContent.includes('has been deactivated due to an error')) &&
|
||||
(notice.classList.contains('error') || notice.classList.contains('notice-error'))) {
|
||||
// We'll use the last matching notice as our target
|
||||
targetNotice = notice;
|
||||
console.log('Found WordPress error notice:', notice.textContent);
|
||||
}
|
||||
});
|
||||
|
||||
// If we didn't find a specific error notice, look for the general WordPress error at the top
|
||||
if (!targetNotice) {
|
||||
// Try to find the WordPress error message at the top of the page
|
||||
var wpError = document.querySelector('.error:not(.below-h2), div.error:not(.below-h2), .notice-error:not(.below-h2)');
|
||||
if (wpError) {
|
||||
targetNotice = wpError;
|
||||
console.log('Found general WordPress error notice');
|
||||
}
|
||||
}
|
||||
|
||||
// If we found a target notice, add our custom notice after it
|
||||
if (targetNotice) {
|
||||
// Check if we already added our notice
|
||||
if (targetNotice.nextElementSibling && targetNotice.nextElementSibling.classList.contains('prc-notice')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Create our custom notice
|
||||
var ourNotice = document.createElement('div');
|
||||
ourNotice.className = 'prc-notice';
|
||||
|
||||
// Add content using localized strings passed via wp_localize_script
|
||||
var pluginMissingText = typeof fpdenData !== 'undefined' && fpdenData.i18n && fpdenData.i18n.pluginMissing ?
|
||||
fpdenData.i18n.pluginMissing : 'File Missing';
|
||||
var removeNoticeText = typeof fpdenData !== 'undefined' && fpdenData.i18n && fpdenData.i18n.removeNotice ?
|
||||
fpdenData.i18n.removeNotice : 'Remove Notice';
|
||||
var clickToScrollText = typeof fpdenData !== 'undefined' && fpdenData.i18n && fpdenData.i18n.clickToScroll ?
|
||||
fpdenData.i18n.clickToScroll : 'Click here to scroll to and highlight missing plugins';
|
||||
|
||||
ourNotice.innerHTML = '<h3 style="margin-top:0;color:#826200;">Fix Plugin Does Not Exist Notices 👆</h3>' +
|
||||
'<p>To remove these notices, scroll down to each plugin\'s row showing: plugin-name.php "<strong style="color:red">(' + pluginMissingText + ')</strong>". Then, click the "<strong>' + removeNoticeText + '</strong>" link for that plugin.</p>' +
|
||||
'<p>This safely removes the missing active plugin reference from your database, using the standard WordPress function to update your active plugin options table, to leave the remaining plugins installed and active.</p>' +
|
||||
'<p><a href="#" id="prc-scroll-to-plugin" style="font-weight:bold;text-decoration:underline;color:#826200;">' + clickToScrollText + '</a></p>';
|
||||
|
||||
// Insert our notice right after the error
|
||||
targetNotice.parentNode.insertBefore(ourNotice, targetNotice.nextSibling);
|
||||
|
||||
// Make sure our notice has the same width as the WordPress error notice
|
||||
ourNotice.style.width = targetNotice.offsetWidth + 'px';
|
||||
ourNotice.style.maxWidth = '100%';
|
||||
ourNotice.style.boxSizing = 'border-box';
|
||||
|
||||
// Mark that we've added our notice
|
||||
noticeAdded = true;
|
||||
|
||||
// Add scroll behavior
|
||||
var scrollLink = document.getElementById('prc-scroll-to-plugin');
|
||||
if (scrollLink) {
|
||||
scrollLink.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
// Look for all plugin rows, not just inactive ones
|
||||
var allPluginRows = document.querySelectorAll('tr.active, tr.inactive');
|
||||
for (var i = 0; i < allPluginRows.length; i++) {
|
||||
if (allPluginRows[i].textContent.includes('(File Missing)')) {
|
||||
// Add a class for highlighting instead of direct style manipulation
|
||||
allPluginRows[i].classList.add('prc-highlight-missing');
|
||||
allPluginRows[i].scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
// Optional: Remove highlight after a delay
|
||||
(function(row) {
|
||||
setTimeout(function() {
|
||||
row.classList.remove('prc-highlight-missing');
|
||||
}, 3000); // Remove highlight after 3 seconds
|
||||
})(allPluginRows[i]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Try to inject notices on multiple events to ensure it works
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Delay the initial injection to ensure WordPress has fully loaded its notices
|
||||
setTimeout(injectNotice, 100);
|
||||
|
||||
// Also set up a MutationObserver to watch for dynamically added notices
|
||||
var observer = new MutationObserver(function(mutations) {
|
||||
mutations.forEach(function(mutation) {
|
||||
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
|
||||
// Check if added nodes are notices or contain notices
|
||||
mutation.addedNodes.forEach(function(node) {
|
||||
if (node.nodeType === 1 && (node.matches('.notice, .error, .updated, div.error') || node.querySelector('.notice, .error, .updated, div.error'))) {
|
||||
setTimeout(injectNotice, 50); // Small delay to ensure the DOM is updated
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Start observing the body for changes in children
|
||||
observer.observe(document.body, { childList: true, subtree: true });
|
||||
});
|
||||
|
||||
// Backup attempt with window.onload (less reliable than DOMContentLoaded but good fallback)
|
||||
window.addEventListener('load', function() {
|
||||
setTimeout(injectNotice, 500); // Delay slightly to ensure dynamic content is loaded
|
||||
});
|
||||
|
||||
// Additional attempt after a longer delay to catch late-loading notices
|
||||
window.addEventListener('load', function() {
|
||||
setTimeout(injectNotice, 1000); // Longer delay as final attempt
|
||||
});
|
||||
|
||||
})();
|
14
assets/screenshots/README.md
Normal file
14
assets/screenshots/README.md
Normal file
@ -0,0 +1,14 @@
|
||||
# WordPress.org Screenshot Files
|
||||
|
||||
This directory contains screenshot files for the WordPress.org plugin repository.
|
||||
|
||||
## Files in this Directory
|
||||
|
||||
- `screenshot-1.png` - Main screenshot showing the plugin in action
|
||||
- `screenshot-1.pxd` - Source file for editing in Pixelmator
|
||||
|
||||
## WordPress.org Submission
|
||||
|
||||
For detailed information about WordPress.org screenshot requirements and submission process, please see the main asset documentation:
|
||||
|
||||
[WordPress.org Plugin Submission Assets Guide](../WORDPRESS_ORG_ASSETS.md)
|
BIN
assets/screenshots/screenshot-1.png
Normal file
BIN
assets/screenshots/screenshot-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 392 KiB |
Reference in New Issue
Block a user