Add Choose Update Source feature
Some checks failed
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/tag/woodpecker Pipeline is pending
Plugin Asset Update / Push assets to WordPress.org (push) Has been cancelled
Build Release / Build and Create Release (push) Has been cancelled
Build Release / Deploy to WordPress.org (push) Has been cancelled
Some checks failed
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/tag/woodpecker Pipeline is pending
Plugin Asset Update / Push assets to WordPress.org (push) Has been cancelled
Build Release / Build and Create Release (push) Has been cancelled
Build Release / Deploy to WordPress.org (push) Has been cancelled
This commit is contained in:
86
assets/css/update-source-selector.css
Normal file
86
assets/css/update-source-selector.css
Normal file
@ -0,0 +1,86 @@
|
||||
/**
|
||||
* Update Source Selector Styles
|
||||
*/
|
||||
#fpden-update-source-modal {
|
||||
display: none;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
||||
}
|
||||
|
||||
#fpden-update-source-modal h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 15px;
|
||||
font-size: 1.3em;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#fpden-update-source-modal p {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#fpden-update-source-form label {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#fpden-update-source-form label:hover {
|
||||
background-color: #f0f0f1;
|
||||
}
|
||||
|
||||
#fpden-update-source-form input[type="radio"] {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.fpden-source-description {
|
||||
display: block;
|
||||
margin-left: 24px;
|
||||
font-size: 0.9em;
|
||||
color: #666;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.fpden-submit-container {
|
||||
margin-top: 20px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.fpden-submit-container button {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.fpden-update-source-toggle {
|
||||
color: #2271b1;
|
||||
}
|
||||
|
||||
.fpden-update-source-toggle:hover {
|
||||
color: #135e96;
|
||||
}
|
||||
|
||||
/* Source badges */
|
||||
.fpden-source-badge {
|
||||
display: inline-block;
|
||||
padding: 2px 6px;
|
||||
border-radius: 3px;
|
||||
font-size: 0.8em;
|
||||
margin-left: 5px;
|
||||
color: white;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.fpden-source-badge.wordpress {
|
||||
background-color: #0073aa;
|
||||
}
|
||||
|
||||
.fpden-source-badge.github {
|
||||
background-color: #24292e;
|
||||
}
|
||||
|
||||
.fpden-source-badge.gitea {
|
||||
background-color: #609926;
|
||||
}
|
||||
|
||||
.fpden-source-badge.auto {
|
||||
background-color: #666;
|
||||
}
|
119
assets/js/update-source-selector.js
Normal file
119
assets/js/update-source-selector.js
Normal file
@ -0,0 +1,119 @@
|
||||
/**
|
||||
* Update Source Selector
|
||||
*
|
||||
* Handles the UI for selecting which source to use for plugin updates.
|
||||
*/
|
||||
jQuery(document).ready(function($) {
|
||||
// Open modal when toggle is clicked
|
||||
$(document).on('click', '.fpden-update-source-toggle', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
// Add overlay
|
||||
$('body').append('<div id="fpden-modal-overlay"></div>');
|
||||
$('#fpden-modal-overlay').css({
|
||||
'position': 'fixed',
|
||||
'top': 0,
|
||||
'left': 0,
|
||||
'width': '100%',
|
||||
'height': '100%',
|
||||
'background-color': 'rgba(0,0,0,0.5)',
|
||||
'z-index': 100000
|
||||
});
|
||||
|
||||
// Position and show modal
|
||||
var modal = $('#fpden-update-source-modal');
|
||||
modal.css({
|
||||
'position': 'fixed',
|
||||
'top': '50%',
|
||||
'left': '50%',
|
||||
'transform': 'translate(-50%, -50%)',
|
||||
'background-color': '#fff',
|
||||
'padding': '20px',
|
||||
'border-radius': '5px',
|
||||
'box-shadow': '0 0 10px rgba(0,0,0,0.5)',
|
||||
'z-index': 100001,
|
||||
'width': '400px',
|
||||
'max-width': '90%'
|
||||
}).show();
|
||||
|
||||
// Add close button styles
|
||||
$('.fpden-close-modal').css({
|
||||
'position': 'absolute',
|
||||
'top': '10px',
|
||||
'right': '10px',
|
||||
'cursor': 'pointer',
|
||||
'font-size': '20px',
|
||||
'color': '#666'
|
||||
});
|
||||
});
|
||||
|
||||
// Close modal when clicking overlay or close button
|
||||
$(document).on('click', '#fpden-modal-overlay, .fpden-close-modal', function() {
|
||||
$('#fpden-update-source-modal').hide();
|
||||
$('#fpden-modal-overlay').remove();
|
||||
});
|
||||
|
||||
// Prevent clicks inside modal from closing it
|
||||
$('#fpden-update-source-modal').on('click', function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// Handle form submission
|
||||
$('#fpden-update-source-form').on('submit', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var source = $('input[name="update_source"]:checked').val();
|
||||
|
||||
// Show loading state
|
||||
var submitButton = $(this).find('button[type="submit"]');
|
||||
var originalText = submitButton.text();
|
||||
submitButton.text('Saving...').prop('disabled', true);
|
||||
|
||||
// Save via AJAX
|
||||
$.post(ajaxurl, {
|
||||
action: 'fpden_save_update_source',
|
||||
source: source,
|
||||
nonce: fpdenData.updateSourceNonce
|
||||
}, function(response) {
|
||||
submitButton.text(originalText).prop('disabled', false);
|
||||
|
||||
if (response.success) {
|
||||
// Show success message
|
||||
var message = $('<div class="fpden-success-message">Update source saved successfully!</div>');
|
||||
message.css({
|
||||
'color': 'green',
|
||||
'margin-top': '10px',
|
||||
'text-align': 'center'
|
||||
});
|
||||
|
||||
$('#fpden-update-source-form').append(message);
|
||||
|
||||
// Hide message and modal after delay
|
||||
setTimeout(function() {
|
||||
message.fadeOut(function() {
|
||||
$(this).remove();
|
||||
$('#fpden-update-source-modal').hide();
|
||||
$('#fpden-modal-overlay').remove();
|
||||
});
|
||||
}, 1500);
|
||||
} else {
|
||||
// Show error message
|
||||
var message = $('<div class="fpden-error-message">Error saving update source.</div>');
|
||||
message.css({
|
||||
'color': 'red',
|
||||
'margin-top': '10px',
|
||||
'text-align': 'center'
|
||||
});
|
||||
|
||||
$('#fpden-update-source-form').append(message);
|
||||
|
||||
// Hide message after delay
|
||||
setTimeout(function() {
|
||||
message.fadeOut(function() {
|
||||
$(this).remove();
|
||||
});
|
||||
}, 3000);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user