fix: https://
All checks were successful
BCards Deployment Pipeline / Run Tests (push) Successful in 2s
BCards Deployment Pipeline / PR Validation (push) Has been skipped
BCards Deployment Pipeline / Build and Push Image (push) Successful in 14m54s
BCards Deployment Pipeline / Deploy to Production (ARM - OCI) (push) Successful in 2m29s
BCards Deployment Pipeline / Deploy to Staging (x86 - Local) (push) Has been skipped
BCards Deployment Pipeline / Cleanup Old Resources (push) Has been skipped
BCards Deployment Pipeline / Deployment Summary (push) Successful in 0s

This commit is contained in:
Ricardo Carneiro 2025-09-09 21:09:15 -03:00
parent 074c850c67
commit b12ffb0016

View File

@ -574,8 +574,12 @@
<div class="mb-3"> <div class="mb-3">
<label for="linkUrl" class="form-label">URL</label> <label for="linkUrl" class="form-label">URL</label>
<input type="url" class="form-control" id="linkUrl" placeholder="https://exemplo.com" required> <div class="input-group">
<div class="form-text">Link completo incluindo https://</div> <span class="input-group-text bg-primary text-white fw-bold">https://</span>
<input type="text" class="form-control" id="linkUrlInput" placeholder="exemplo.com" required>
</div>
<input type="hidden" id="linkUrl">
<div class="form-text">Digite apenas o domínio e caminho (sem https://)</div>
</div> </div>
<div class="mb-3"> <div class="mb-3">
@ -609,11 +613,13 @@
<div class="mb-3"> <div class="mb-3">
<label for="productUrl" class="form-label">URL do Produto</label> <label for="productUrl" class="form-label">URL do Produto</label>
<div class="input-group"> <div class="input-group">
<input type="url" class="form-control" id="productUrl" placeholder="https://mercadolivre.com.br/produto..."> <span class="input-group-text bg-success text-white fw-bold">https://</span>
<input type="text" class="form-control" id="productUrlInput" placeholder="mercadolivre.com.br/produto...">
<button type="button" class="btn btn-outline-primary" id="extractProductBtn"> <button type="button" class="btn btn-outline-primary" id="extractProductBtn">
<i class="fas fa-magic"></i> Extrair Dados <i class="fas fa-magic"></i> Extrair Dados
</button> </button>
</div> </div>
<input type="hidden" id="productUrl">
<div class="form-text"> <div class="form-text">
<small> <small>
<strong>Suportamos:</strong> Mercado Livre, Amazon, Magazine Luiza, Americanas, Shopee, e outros e-commerces conhecidos. <strong>Suportamos:</strong> Mercado Livre, Amazon, Magazine Luiza, Americanas, Shopee, e outros e-commerces conhecidos.
@ -895,6 +901,29 @@
font-size: 0.875rem; font-size: 0.875rem;
margin-top: 0.25rem; margin-top: 0.25rem;
} }
/* URL Input Styling */
.input-group .input-group-text.bg-primary,
.input-group .input-group-text.bg-success {
border-right: 1px solid rgba(255,255,255,0.2);
font-weight: 600;
min-width: 85px;
justify-content: center;
}
.input-group .form-control {
border-left: none;
padding-left: 0.75rem;
}
.input-group .form-control:focus {
box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);
border-color: #86b7fe;
}
.input-group:focus-within .input-group-text {
border-color: #86b7fe;
}
</style> </style>
@section Scripts { @section Scripts {
@ -911,6 +940,9 @@
// Initialize image upload // Initialize image upload
initializeImageUpload(); initializeImageUpload();
// Initialize URL input handlers
initializeUrlInputs();
// Check for validation errors and show toast + open accordion // Check for validation errors and show toast + open accordion
checkValidationErrors(); checkValidationErrors();
@ -974,11 +1006,6 @@
return; return;
} }
if (!url.startsWith('http://') && !url.startsWith('https://')) {
alert('Por favor, insira uma URL válida que comece com http:// ou https://');
return;
}
extractProductData(url); extractProductData(url);
}); });
@ -1161,11 +1188,6 @@
return; return;
} }
if (!url.startsWith('http://') && !url.startsWith('https://')) {
alert('Por favor, insira uma URL válida que comece com http:// ou https://');
return;
}
addLinkInput(title, url, description, icon, 'Normal'); addLinkInput(title, url, description, icon, 'Normal');
closeModalAndReset(); closeModalAndReset();
} }
@ -1187,11 +1209,6 @@
return; return;
} }
if (!url.startsWith('http://') && !url.startsWith('https://')) {
alert('Por favor, insira uma URL válida que comece com http:// ou https://');
return;
}
addProductLinkInput(title, url, description, price, image); addProductLinkInput(title, url, description, price, image);
closeModalAndReset(); closeModalAndReset();
} }
@ -1312,6 +1329,13 @@
function closeModalAndReset() { function closeModalAndReset() {
// Clear modal form // Clear modal form
$('#addLinkForm')[0].reset(); $('#addLinkForm')[0].reset();
// Limpar campos de URL específicos
$('#linkUrlInput').val('');
$('#linkUrl').val('');
$('#productUrlInput').val('');
$('#productUrl').val('');
$('#productImagePreview').hide(); $('#productImagePreview').hide();
$('#productImagePlaceholder').show(); $('#productImagePlaceholder').show();
$('#productImage').val(''); $('#productImage').val('');
@ -1577,6 +1601,57 @@
} }
} }
// URL Input Functions
function initializeUrlInputs() {
// Setup para link normal
setupUrlField('#linkUrlInput', '#linkUrl');
// Setup para link de produto (se existir)
if ($('#productUrlInput').length) {
setupUrlField('#productUrlInput', '#productUrl');
}
}
function setupUrlField(inputSelector, hiddenSelector) {
const $input = $(inputSelector);
const $hidden = $(hiddenSelector);
// Eventos para tratar entrada do usuário
$input.on('input paste keyup', function() {
let value = $(this).val().trim();
// Remover https:// ou http:// se o usuário digitou
if (value.startsWith('https://')) {
value = value.substring(8);
$(this).val(value);
} else if (value.startsWith('http://')) {
value = value.substring(7);
$(this).val(value);
}
// Atualizar campo hidden com URL completa
if (value) {
$hidden.val('https://' + value);
} else {
$hidden.val('');
}
});
// Para modal de edição - detectar se já tem URL e separar
if ($hidden.val()) {
const existingUrl = $hidden.val();
if (existingUrl.startsWith('https://')) {
$input.val(existingUrl.substring(8));
} else if (existingUrl.startsWith('http://')) {
$input.val(existingUrl.substring(7));
$hidden.val('https://' + existingUrl.substring(7)); // Converter para https
} else {
$input.val(existingUrl);
$hidden.val('https://' + existingUrl);
}
}
}
// Image Upload Functions // Image Upload Functions
function initializeImageUpload() { function initializeImageUpload() {
const fileInput = $('#profileImageInput'); const fileInput = $('#profileImageInput');