// Shortcode: [botao_pasta dir="file://///192.168.21.2/publico/01%20-%20Modelos%20Rheserva" label="Abrir pasta" align="center" size="lg" variant="primary" target="_self"]
add_shortcode('linkservidor', function($atts, $content = ''){
$a = shortcode_atts([
'dir' => '', // file://///… ou \\host\share\pasta
'label' => '', // texto do botão (fallback: conteúdo entre [botao_pasta]...[/botao_pasta])
'align' => 'left', // left|center|right
'size' => 'md', // sm|md|lg
'variant' => 'primary', // primary|secondary|ghost
'target' => '_self', // _self|_blank (muitos browsers ignoram _blank para file://)
], $atts, 'botao_pasta');
if (!$a['dir']) return '
[botao_pasta] faltou o parâmetro dir.
';
$raw = trim($a['dir']);
// Normaliza para file://///host/share/path
if (preg_match('#^file:\\/\\/#i', $raw)) {
// Já é file:// — só garante que não tenha barra sobrando e mantém encoding existente
$href = $raw;
} else {
// Provavelmente UNC \\host\share\pasta -> vira file://///host/share/pasta
$p = str_replace('/', '\\', $raw);
if (strpos($p, '\\\\') !== 0) $p = '\\\\' . ltrim($p, '\\');
$p = preg_replace('/^\\\\\\\\/','', $p); // remove \\ inicial
$p = str_replace('\\','/', $p); // vira host/share/pasta
// NÃO fazemos urldecode; deixamos como está. Se quiser encode, use %20 no shortcode.
$href = 'file://///' . $p;
}
// Label
$label = $a['label'] !== '' ? $a['label'] : trim($content);
if ($label === '') $label = 'Abrir pasta';
// Estilos leves embutidos (para não depender do tema)
$wrapStyle = 'margin:8px 0; text-align:' . (in_array($a['align'], ['left','center','right']) ? $a['align'] : 'left') . ';';
$sizes = [
'sm' => 'padding:8px 12px; font-size:13px; border-radius:10px;',
'md' => 'padding:10px 16px; font-size:14px; border-radius:12px;',
'lg' => 'padding:12px 18px; font-size:15px; border-radius:14px;',
];
$sizeStyle = $sizes[$a['size']] ?? $sizes['md'];
$variants = [
'primary' => 'background:#0b57d0; color:#fff; border:1px solid #0b57d0;',
'secondary' => 'background:#f6f8ff; color:#0b57d0; border:1px solid #dbe5ff;',
'ghost' => 'background:#fff; color:#0b57d0; border:1px solid #e5e7eb;',
];
$variantStyle = $variants[$a['variant']] ?? $variants['primary'];
$btnBase = 'font-family:system-ui,Segoe UI,Arial; text-decoration:none; display:inline-block; line-height:1; box-shadow:0 1px 4px rgba(0,0,0,.08); transition:filter .15s ease;';
$hover = 'filter:brightness(0.95);';
// Observação: _blank para file:// pode ser bloqueado por alguns browsers; mantemos opção.
$target = in_array($a['target'], ['_self','_blank']) ? $a['target'] : '_self';
$rel = $target === '_blank' ? ' rel="noopener"' : '';
// HTML final
ob_start(); ?>