wtf frontend
All checks were successful
fetch npm modules / f0ck the f0cker (push) Successful in 15s

This commit is contained in:
Flummi 2023-05-03 04:53:22 +02:00
parent 63bd1104b7
commit fbf03bfbb4
11 changed files with 1860 additions and 1847 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,9 @@
@include(snippets/header) @include(snippets/header)
<div class="about"> <div id="main">
<div class="about">
<div> <div>
<a href="//f0ck.me/48908"><img src="//f0ck.me/s/img/loool.webp" /></a> <a href="//f0ck.me/48908"><img src="//f0ck.me/s/img/loool.webp" /></a>
<p>thanks to our turkish fellow lol@n0xy/#f0ck for this gif &lt;3</p> <p>thanks to our turkish fellow lol@n0xy/#f0ck for this gif &lt;3</p>
</div> </div>
<h5>f0ck Contact</h5> <h5>f0ck Contact</h5>
<p>Whatever it is, we might have a answer, even though it might not be the one you were looking for: <a href="mailto:admin@f0ck.me">admin@f0ck.me</a></p> <p>Whatever it is, we might have a answer, even though it might not be the one you were looking for: <a href="mailto:admin@f0ck.me">admin@f0ck.me</a></p>
@ -14,24 +15,24 @@
<h4>#f0ck on n0xy.net</h4> <h4>#f0ck on n0xy.net</h4>
<p>You can invite f0ck to your channel on the following supported networks by simply typing<br><code>/invite f0ck</code></p> <p>You can invite f0ck to your channel on the following supported networks by simply typing<br><code>/invite f0ck</code></p>
<ul> <ul>
<li><a href="https://n0xy.net">n0xy.net</a></li> <li><a href="https://n0xy.net">n0xy.net</a></li>
<li><a href="https://www.rizon.net/">rizon.net</a></li> <li><a href="https://www.rizon.net/">rizon.net</a></li>
<li><a href="https://libera.chat/">libera.chat</a></li> <li><a href="https://libera.chat/">libera.chat</a></li>
</ul> </ul>
<p>To start f0cking the shit out of something simply add a <code>!f0ck</code> behind the url you want to f0ck, that's it</p> <p>To start f0cking the shit out of something simply add a <code>!f0ck</code> behind the url you want to f0ck, that's it</p>
<p>#f0ck specific: to have f0ck ignore a link add <code>!ignore</code> at the end <br>Example: <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" target="_blank">https://www.youtube.com/watch?v=dQw4w9WgXcQ</a> !ignore</p> <p>#f0ck specific: to have f0ck ignore a link add <code>!ignore</code> at the end <br>Example: <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" target="_blank">https://www.youtube.com/watch?v=dQw4w9WgXcQ</a> !ignore</p>
<p>f0ck supports a variety of websites, in fact all websites supported by <code>yt-dlp</code> are supported by f0ck aswell!</p> <p>f0ck supports a variety of websites, in fact all websites supported by <code>yt-dlp</code> are supported by f0ck aswell!</p>
<h5>f0ck Rules</h5> <h5>f0ck Rules</h5>
<ul> <ul>
<li>You must be 18 years or older to visit or post</li> <li>You must be 18 years or older to visit or post</li>
<li>You shall not post animal cruelty, we like our animals alive and well, living a happy life until they are ready for our Schnitzel!</li> <li>You shall not post animal cruelty, we like our animals alive and well, living a happy life until they are ready for our Schnitzel!</li>
<li>You shall not post under <b>ANY</b> circumstances: Snuff, Beastiality, Rape, Terrorist stuff (Beheadings, First person shootings, warcrimes), Childporn, Childmodeling</li> <li>You shall not post under <b>ANY</b> circumstances: Snuff, Beastiality, Rape, Terrorist stuff (Beheadings, First person shootings, warcrimes), Childporn, Childmodeling</li>
</ul> </ul>
<h5>f0cked up?</h5> <h5>f0cked up?</h5>
<p>To have something removed in case you accidentally f0cked something that actually shouldn't be f0cked you can always contact the admins either via IRC or Email</p> <p>To have something removed in case you accidentally f0cked something that actually shouldn't be f0cked you can always contact the admins either via IRC or Email</p>
<ul> <ul>
<li>irc.n0xy.net #f0ck</li> <li>irc.n0xy.net #f0ck</li>
<li>admin@f0ck.me</li> <li>admin@f0ck.me</li>
</ul> </ul>
<h5>Compatibility</h5> <h5>Compatibility</h5>
<p>f0ck is developed and tested for Firefox and Chromium in their latest versions</p> <p>f0ck is developed and tested for Firefox and Chromium in their latest versions</p>
@ -45,5 +46,6 @@
<h5>f0ck Privacy?</h5> <h5>f0ck Privacy?</h5>
<p>Cookies: Yes, we set 1 cookie for your prefered stylesheet, this is a optional cookie and not required for the site to function, simply cosmetics, you can block this cookie and the site will still work as intended and will default to the default f0ck theme called "f0ck"</p> <p>Cookies: Yes, we set 1 cookie for your prefered stylesheet, this is a optional cookie and not required for the site to function, simply cosmetics, you can block this cookie and the site will still work as intended and will default to the default f0ck theme called "f0ck"</p>
<p>Logs: We do not log users accessing our website.</p> <p>Logs: We do not log users accessing our website.</p>
</div>
</div> </div>
@include(snippets/footer) @include(snippets/footer)

View File

@ -1,18 +1,20 @@
@include(snippets/header) @include(snippets/header)
<div class="container"> <div id="main">
<div class="container">
<div class="_error_wrapper"> <div class="_error_wrapper">
<div class="err"> <div class="err">
<div class="_error_topbar"> <div class="_error_topbar">
<span>x.x</span> <span>x.x</span>
</div>
<div class="_error_content">
<img src="/s/img/favicon.gif" alt="f0ck?!">
<div class="_error_message">
<span>Error</span>
<code>{{ message }}</code>
</div>
</div>
</div> </div>
<div class="_error_content">
<img src="/s/img/favicon.gif" alt="f0ck?!">
<div class="_error_message">
<span>Error</span>
<code>{{ message }}</code>
</div>
</div>
</div>
</div> </div>
</div>
</div> </div>
@include(snippets/footer) @include(snippets/footer)

View File

@ -1,15 +1,17 @@
<div class="pagewrapper">
@include(snippets/header) @include(snippets/header)
<div class="index-container"> <div class="pagewrapper">
@if(tmp.user)<h2>user: {!! tmp.user.toLowerCase() !!}@if(tmp.mime) ({{ tmp.mime }}s)@else (all)@endif</h2>@endif <div id="main">
@if(tmp.tag)<h2>tag: @if(session)<a href="/search?tag={!! tmp.tag.toLowerCase() !!}" target="_blank">{!! tmp.tag.toLowerCase() !!}</a>@else{!! tmp.tag.toLowerCase() !!}@endif@if(tmp.mime) ({{ tmp.mime }}s)@else (all)@endif</h2>@endif <div class="index-container">
<div class="posts"> @if(tmp.user)<h2>user: {!! tmp.user.toLowerCase() !!}@if(tmp.mime) ({{ tmp.mime }}s)@else (all)@endif</h2>@endif
@each(items as item) @if(tmp.tag)<h2>tag: @if(session)<a href="/search?tag={!! tmp.tag.toLowerCase() !!}" target="_blank">{!! tmp.tag.toLowerCase() !!}</a>@else{!! tmp.tag.toLowerCase() !!}@endif@if(tmp.mime) ({{ tmp.mime }}s)@else (all)@endif</h2>@endif
<a href="{{ link.main }}{{ item.id }}" data-mime="{{ item.mime }}" data-mode="{{ item.tag_id ? ['','sfw','nsfw'][item.tag_id] : 'null' }}" style="background-image: url('/t/{{ item.id }}.webp')"><p></p></a> <div class="posts">
@endeach @each(items as item)
</div> <a href="{{ link.main }}{{ item.id }}" data-mime="{{ item.mime }}" data-mode="{{ item.tag_id ? ['','sfw','nsfw'][item.tag_id] : 'null' }}" style="background-image: url('/t/{{ item.id }}.webp')"><p></p></a>
<div id="footbar"> @endeach
&#9660; </div>
<div id="footbar">
&#9660;
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,105 +1,107 @@
<div class="wrapper">
@include(snippets/header) @include(snippets/header)
<div class="container"> <div class="wrapper">
<div class="_204863"> <div id="main">
<div class="imageDoor" style="--hover-image: url('/t/{{ item.id }}.webp');"> <div class="container">
<img src="/t/{{ item.id }}.webp" alt="" /> <div class="_204863">
</div> <div class="imageDoor" style="--hover-image: url('/t/{{ item.id }}.webp');">
<div class="gapLeft"> <img src="/t/{{ item.id }}.webp" alt="" />
<span class="populateME"><b>f0ck</b> - {{ item.id }}</span>
</div>
@if(session)
<div class="gapRight">
<svg class="iconset" id="a_favo"><use href="/s/img/iconset.svg#heart_{{ Object.values(item.favorites).filter(u => u.user == session.user)[0] ? 'solid' : 'regular' }}"></use></svg>
<svg class="iconset" id="a_delete"><use href="/s/img/iconset.svg#cross"></use></svg>
</div>
@endif
</div>
<div class="content">
<div class="next-post">
@if(pagination.prev)
<div class="arrow-next">
<a id="next" href="{{ link.main }}{{ pagination.prev }}"></a>
</div> </div>
@else <div class="gapLeft">
<div class="arrow-next"> <span class="populateME"><b>f0ck</b> - {{ item.id }}</span>
<a id="next" href="#" style="color: #ccc !important;"></a>
</div> </div>
@endif
</div>
<div class="media-object">
@if(item.mime.startsWith("video"))
<div class="embed-responsive embed-responsive-16by9">
<video id="my-video" class="embed-responsive-item" width="640" height="360" src="{{ item.dest }}" preload="auto" autoplay controls loop playsinline></video>
</div>
@elseif(item.mime.startsWith("audio"))
<div class="embed-responsive embed-responsive-16by9" style="background: url('@if(item.coverart)//f0ck.me{{ item.coverart }}@else/s/img/200.gif@endif') no-repeat center / contain black;">
<audio id="my-video" class="embed-responsive-item" autoplay controls loop src="{{ item.dest }}" data-setup="{}" poster="@if(item.coverart){{ item.coverart }}@else/s/img/200.gif@endif" type="{{ item.mime }}"></audio>
</div>
@elseif(item.mime.startsWith("image"))
<div class="embed-responsive embed-responsive-16by9">
<div class="embed-responsive-image" id="image-scroll">
<a href="{{ item.dest }}" id="elfe" target="_blank"><img id="f0ck-image" class="img-fluid" src="{{ item.dest }}" loading="lazy" decoding="async"/></a>
</div>
</div>
@else
<h1>404 - Not f0cked</h1>
@endif
</div>
<div class="previous-post">
@if(pagination.next)
<div class="arrow-prev">
<a id="prev" href="{{ link.main }}{{ pagination.next }}"></a>
</div>
@else
<div class="arrow-prev">
<a id="prev" href="#" style="color: #ccc !important;"></a>
</div>
@endif
</div>
</div>
<div class="metadata">
<span class="badge badge-dark">
<a href="/{{ item.id }}" class="id-link">{{ item.id }}</a>
@if(session) @if(session)
(<a id="a_username" href="/user/{{ user.name.toLowerCase() }}/f0cks@if(tmp.mime)/{{ tmp.mime }}@endif">{{ user.name }}</a>) <div class="gapRight">
<svg class="iconset" id="a_favo"><use href="/s/img/iconset.svg#heart_{{ Object.values(item.favorites).filter(u => u.user == session.user)[0] ? 'solid' : 'regular' }}"></use></svg>
<svg class="iconset" id="a_delete"><use href="/s/img/iconset.svg#cross"></use></svg>
</div>
@endif @endif
</span> </div>
<span class="badge badge-dark">{{ user.network }} / {{ user.channel }}</span> <div class="content">
<span class="badge badge-dark image-source"> <div class="next-post">
@if(item.src.long.length) @if(pagination.prev)
<a href="{{ item.src.long }}" target="_blank">{{ item.src.short }}</a> <div class="arrow-next">
@else <a id="next" href="{{ link.main }}{{ pagination.prev }}"></a>
hidden </div>
@endif @else
</span> <div class="arrow-next">
<span class="badge badge-dark"><a class="dest-link" href="{{ item.dest }}" target="_blank">{{ item.mime }}</a> / {{ item.size }}</span> <a id="next" href="#" style="color: #ccc !important;"></a>
<span class="badge badge-dark"><time class="timeago" tooltip="{{ item.timestamp.timefull }}">{{ item.timestamp.timeago }}</time></span> </div>
<span class="badge badge-dark">{{ phrase }}</span> @endif
<span class="badge badge-dark" id="tags"> </div>
@if(typeof item.tags !== "undefined") <div class="media-object">
@each(item.tags as tag) @if(item.mime.startsWith("video"))
<span @if(session)tooltip="{{ tag.user }}"@endif class="badge {{ tag.badge }} mr-2"> <div class="embed-responsive embed-responsive-16by9">
<a href="/tag/{{ tag.tag }}">{!! tag.tag !!}</a>@if(session)&nbsp;<a class="removetag" href="#">&#215;</a>@endif <video id="my-video" class="embed-responsive-item" width="640" height="360" src="{{ item.dest }}" preload="auto" autoplay controls loop playsinline></video>
</div>
@elseif(item.mime.startsWith("audio"))
<div class="embed-responsive embed-responsive-16by9" style="background: url('@if(item.coverart)//f0ck.me{{ item.coverart }}@else/s/img/200.gif@endif') no-repeat center / contain black;">
<audio id="my-video" class="embed-responsive-item" autoplay controls loop src="{{ item.dest }}" data-setup="{}" poster="@if(item.coverart){{ item.coverart }}@else/s/img/200.gif@endif" type="{{ item.mime }}"></audio>
</div>
@elseif(item.mime.startsWith("image"))
<div class="embed-responsive embed-responsive-16by9">
<div class="embed-responsive-image" id="image-scroll">
<a href="{{ item.dest }}" id="elfe" target="_blank"><img id="f0ck-image" class="img-fluid" src="{{ item.dest }}" loading="lazy" decoding="async"/></a>
</div>
</div>
@else
<h1>404 - Not f0cked</h1>
@endif
</div>
<div class="previous-post">
@if(pagination.next)
<div class="arrow-prev">
<a id="prev" href="{{ link.main }}{{ pagination.next }}"></a>
</div>
@else
<div class="arrow-prev">
<a id="prev" href="#" style="color: #ccc !important;"></a>
</div>
@endif
</div>
</div>
<div class="metadata">
<span class="badge badge-dark">
<a href="/{{ item.id }}" class="id-link">{{ item.id }}</a>
@if(session)
(<a id="a_username" href="/user/{{ user.name.toLowerCase() }}/f0cks@if(tmp.mime)/{{ tmp.mime }}@endif">{{ user.name }}</a>)
@endif
</span> </span>
<span class="badge badge-dark">{{ user.network }} / {{ user.channel }}</span>
<span class="badge badge-dark image-source">
@if(item.src.long.length)
<a href="{{ item.src.long }}" target="_blank">{{ item.src.short }}</a>
@else
hidden
@endif
</span>
<span class="badge badge-dark"><a class="dest-link" href="{{ item.dest }}" target="_blank">{{ item.mime }}</a> / {{ item.size }}</span>
<span class="badge badge-dark"><time class="timeago" tooltip="{{ item.timestamp.timefull }}">{{ item.timestamp.timeago }}</time></span>
<span class="badge badge-dark">{{ phrase }}</span>
<span class="badge badge-dark" id="tags">
@if(typeof item.tags !== "undefined")
@each(item.tags as tag)
<span @if(session)tooltip="{{ tag.user }}"@endif class="badge {{ tag.badge }} mr-2">
<a href="/tag/{{ tag.tag }}">{!! tag.tag !!}</a>@if(session)&nbsp;<a class="removetag" href="#">&#215;</a>@endif
</span>
@endeach
@endif
@if(session)
<a href="#" id="a_addtag">add tag</a>&nbsp;-&nbsp;<a href="#" id="a_toggle">toggle</a>
<datalist id="testlist"></datalist>
@endif
</span>
<span class="badge" id="favs"@if(!item.favorites.length || !session) hidden@endif>
@if(item.favorites.length && session)
@each(item.favorites as fav)
<a href="/user/{{ fav.user.toLowerCase() }}/favs" tooltip="{{ fav.user }}" flow="up"><img src="@if(fav.avatar)/t/{{ fav.avatar }}.webp@else/s/img/default.png@endif" style="height: 32px; width: 32px" /></a>
@endeach @endeach
@endif @endif
@if(session) </span>
<a href="#" id="a_addtag">add tag</a>&nbsp;-&nbsp;<a href="#" id="a_toggle">toggle</a> </div>
<datalist id="testlist"></datalist> <div class="random">
@endif <a href="/random"></a>
</span> </div>
<span class="badge" id="favs"@if(!item.favorites.length || !session) hidden@endif>
@if(item.favorites.length && session)
@each(item.favorites as fav)
<a href="/user/{{ fav.user.toLowerCase() }}/favs" tooltip="{{ fav.user }}" flow="up"><img src="@if(fav.avatar)/t/{{ fav.avatar }}.webp@else/s/img/default.png@endif" style="height: 32px; width: 32px" /></a>
@endeach
@endif
</span>
</div>
<div class="random">
<a href="/random"></a>
</div> </div>
</div> </div>
</div>
@include(snippets/footer) @include(snippets/footer)
</div>

View File

@ -1,42 +1,44 @@
@include(snippets/header) @include(snippets/header)
<div class="topf0ckers"> <div id="main">
<h3>Top f0ckers of all time <br>- Ranking -</h3> <div class="topf0ckers">
</div> <h3>Top f0ckers of all time <br>- Ranking -</h3>
<div class="ranking">
<div class="by-user">
<h3>Biggest taggers</h3>
<table class="table">
<tbody>
@for(let i = 0; i < list.length; i++)
<tr>
<td>{{ i + 1 }}</td>
<td><a href="/{{ list[i].avatar }}"><img class="avatar" src="/t/{{ list[i].avatar }}.webp" /></a></td>
<td><a href="/user/{!! list[i].user !!}">{!! list[i].user !!}</a></td>
<td>{{ list[i].count }}</td>
</tr>
@endfor
</tbody>
</table>
</div> </div>
<div class="by-hoster"> <div class="ranking">
<h3>Top {{ hoster.length }} hoster</h3> <div class="by-user">
<table class="table"> <h3>Biggest taggers</h3>
@each(hoster as host) <table class="table">
<tr><td>{{ host.part.length ? host.part : "Telegram" }}</td><td>{{ host.c }}</td></tr> <tbody>
@endeach @for(let i = 0; i < list.length; i++)
</table> <tr>
</div> <td>{{ i + 1 }}</td>
<div class="by-stats"> <td><a href="/{{ list[i].avatar }}"><img class="avatar" src="/t/{{ list[i].avatar }}.webp" /></a></td>
<h3>Tag stats</h3> <td><a href="/user/{!! list[i].user !!}">{!! list[i].user !!}</a></td>
<table class="table"> <td>{{ list[i].count }}</td>
<tr><td>total</td><td>{{ stats.total }}</td></tr> </tr>
<tr><td>tagged</td><td>{{ stats.tagged }}</td></tr> @endfor
<tr><td>untagged</td><td>{{ stats.untagged }}</td></tr> </tbody>
<tr><td>SFW</td><td>{{ stats.sfw }}</td></tr> </table>
<tr><td>NSFW</td><td>{{ stats.nsfw }}</td></tr> </div>
<tr><td>deleted</td><td>{{ stats.deleted }}</td></tr> <div class="by-hoster">
<tr><td>missing ids</td><td>{{ stats.untracked }}</td></tr> <h3>Top {{ hoster.length }} hoster</h3>
</table> <table class="table">
@each(hoster as host)
<tr><td>{{ host.part.length ? host.part : "Telegram" }}</td><td>{{ host.c }}</td></tr>
@endeach
</table>
</div>
<div class="by-stats">
<h3>Tag stats</h3>
<table class="table">
<tr><td>total</td><td>{{ stats.total }}</td></tr>
<tr><td>tagged</td><td>{{ stats.tagged }}</td></tr>
<tr><td>untagged</td><td>{{ stats.untagged }}</td></tr>
<tr><td>SFW</td><td>{{ stats.sfw }}</td></tr>
<tr><td>NSFW</td><td>{{ stats.nsfw }}</td></tr>
<tr><td>deleted</td><td>{{ stats.deleted }}</td></tr>
<tr><td>missing ids</td><td>{{ stats.untracked }}</td></tr>
</table>
</div>
</div> </div>
</div> </div>
@include(snippets/footer) @include(snippets/footer)

View File

@ -1,37 +1,39 @@
@include(snippets/header) @include(snippets/header)
<div class="f0ckgle"> <div id="main">
<h1 style="text-align: center">f0ckgle</h1> <div class="f0ckgle">
<form action="/search" class="admin-search"> <h1 style="text-align: center">f0ckgle</h1>
<input type="text" name="tag" value="{!! searchstring || '' !!}" /><button type="submit"><b>f0ck</b></button> <form action="/search" class="admin-search">
</form> <input type="text" name="tag" value="{!! searchstring || '' !!}" /><button type="submit"><b>f0ck</b></button>
<div class="results"> </form>
@if(result) <div class="results">
<h2>{{ count }} f0cks given (page {{ pagination.page }} of {{ pagination.end }}):</h2> @if(result)
<table style="width: 100%" class="table"> <h2>{{ count }} f0cks given (page {{ pagination.page }} of {{ pagination.end }}):</h2>
<thead> <table style="width: 100%" class="table">
<tr> <thead>
<th>Thumbnail</th> <tr>
<th>ID</th> <th>Thumbnail</th>
<th>Tag</th> <th>ID</th>
<th>Mime</th> <th>Tag</th>
<th>Username</th> <th>Mime</th>
<th>Score</th> <th>Username</th>
</tr> <th>Score</th>
</thead> </tr>
<tbody> </thead>
@each(result as line) <tbody>
<tr> @each(result as line)
<td style="width: 128px;"><a href="/tag/{!! line.tag !!}/{{ line.id }}" target="_blank"><img src="/t/{{ line.id }}.webp" /></a></td> <tr>
<td><span class="mview_desc">ID:</span><a href="/tag/{!! line.tag !!}/{{ line.id }}" target="_blank">{{ line.id }}</a></td> <td style="width: 128px;"><a href="/tag/{!! line.tag !!}/{{ line.id }}" target="_blank"><img src="/t/{{ line.id }}.webp" /></a></td>
<td><span class="mview_desc">Tag:</span><a href="/tag/{!! line.tag !!}">{!! line.tag !!}</a></td> <td><span class="mview_desc">ID:</span><a href="/tag/{!! line.tag !!}/{{ line.id }}" target="_blank">{{ line.id }}</a></td>
<td><span class="mview_desc">Mime:</span>{{ line.mime }}</td> <td><span class="mview_desc">Tag:</span><a href="/tag/{!! line.tag !!}">{!! line.tag !!}</a></td>
<td><span class="mview_desc">User:</span><a href="/user/{!! line.username !!}/f0cks/{{ line.id }}">{!! line.username !!}</a></td> <td><span class="mview_desc">Mime:</span>{{ line.mime }}</td>
<td><span class="mview_desc">Score:</span>{{ line.score?.toFixed(2) }}</td> <td><span class="mview_desc">User:</span><a href="/user/{!! line.username !!}/f0cks/{{ line.id }}">{!! line.username !!}</a></td>
</tr> <td><span class="mview_desc">Score:</span>{{ line.score?.toFixed(2) }}</td>
@endeach </tr>
</tbody> @endeach
</table> </tbody>
@endif </table>
@endif
</div>
</div> </div>
</div> </div>
@include(snippets/footer) @include(snippets/footer)

View File

@ -1,52 +1,54 @@
@include(snippets/header) @include(snippets/header)
<h1>Settings</h1> <div id="main">
@if(session.avatar)<a href="/{{ session.avatar }}"><img id="img_avatar" src="/t/{{ session.avatar }}.webp" /></a>@endif <h1>Settings</h1>
<h2>Account</h2> @if(session.avatar)<a href="/{{ session.avatar }}"><img id="img_avatar" src="/t/{{ session.avatar }}.webp" /></a>@endif
<table class="table"> <h2>Account</h2>
<tbody> <table class="table">
<tr> <tbody>
<td>UserID</td> <tr>
<td>{{ session.id }}</td> <td>UserID</td>
</tr> <td>{{ session.id }}</td>
<tr> </tr>
<td>level</td> <tr>
<td>{{ session.level }}/100</td> <td>level</td>
</tr> <td>{{ session.level }}/100</td>
<tr> </tr>
<td>username</td> <tr>
<td>{!! session.user !!}</td> <td>username</td>
</tr> <td>{!! session.user !!}</td>
<tr> </tr>
<td>avatar</td> <tr>
<td><input type="text" class="input" name="i_avatar" value="{{ session.avatar }}" /><input type="submit" id="s_avatar" value="save" /></td> <td>avatar</td>
</tr> <td><input type="text" class="input" name="i_avatar" value="{{ session.avatar }}" /><input type="submit" id="s_avatar" value="save" /></td>
</tbody> </tr>
</table> </tbody>
<h2>Sessions</h2> </table>
<table class="table"> <h2>Sessions</h2>
<thead> <table class="table">
<tr> <thead>
<th>&nbsp;</th> <tr>
<th>id</th> <th>&nbsp;</th>
<th>&nbsp;</th> <th>id</th>
<th>last action</th> <th>&nbsp;</th>
</tr> <th>last action</th>
</thead> </tr>
<tbody> </thead>
@each(sessions as sess) <tbody>
<tr@if(sess.id === session.sess_id) style="background-color: rgb(0, 89, 0)"@endif> @each(sessions as sess)
<td>{{ sess.kmsi ? '&#9875;' : '' }}</td> <tr@if(sess.id === session.sess_id) style="background-color: rgb(0, 89, 0)"@endif>
<td tooltip="{{ sess.browser }}" flow="right"> <td>{{ sess.kmsi ? '&#9875;' : '' }}</td>
<p>{{ sess.id }}</p> <td tooltip="{{ sess.browser }}" flow="right">
<p><a href="#" onclick="alert('not yet implemented!');">logout</a></p> <p>{{ sess.id }}</p>
</td> <p><a href="#" onclick="alert('not yet implemented!');">logout</a></p>
<td> </td>
<p>last_used: {{ new Date(sess.last_used * 1e3).toLocaleString("de-DE") }}</p> <td>
<p>created_at: {{ new Date(sess.created_at * 1e3).toLocaleString("de-DE") }}</p> <p>last_used: {{ new Date(sess.last_used * 1e3).toLocaleString("de-DE") }}</p>
</td> <p>created_at: {{ new Date(sess.created_at * 1e3).toLocaleString("de-DE") }}</p>
<td><a href="{{ sess.last_action }}" target="_blank">{{ sess.last_action }}</a></td> </td>
</tr> <td><a href="{{ sess.last_action }}" target="_blank">{{ sess.last_action }}</a></td>
@endeach </tr>
</tbody> @endeach
</table> </tbody>
</table>
</div>
@include(snippets/footer) @include(snippets/footer)

View File

@ -1,5 +1,4 @@
@if(session)<!--<div style="position: fixed; bottom: 0; z-index: 998; background-color: var(--bg); width: 100%; height: 29px; border-top: 1px solid var(--accent)">{{ JSON.stringify(session) }}</div>-->@endif @if(session)<!--<div style="position: fixed; bottom: 0; z-index: 998; background-color: var(--bg); width: 100%; height: 29px; border-top: 1px solid var(--accent)">{{ JSON.stringify(session) }}</div>-->@endif
</div>
<script async src="/s/js/theme.js?v=@mtime(/public/s/js/theme.js)"></script> <script async src="/s/js/theme.js?v=@mtime(/public/s/js/theme.js)"></script>
<script src="/s/js/v0ck.js?v=@mtime(/public/s/js/v0ck.js)"></script> <script src="/s/js/v0ck.js?v=@mtime(/public/s/js/v0ck.js)"></script>
<script src="/s/js/f0ck.js?v=@mtime(/public/s/js/f0ck.js)"></script> <script src="/s/js/f0ck.js?v=@mtime(/public/s/js/f0ck.js)"></script>

View File

@ -12,4 +12,3 @@
</head> </head>
<body> <body>
@include(snippets/navbar) @include(snippets/navbar)
<div id="main">

View File

@ -1,28 +1,29 @@
@include(snippets/header) @include(snippets/header)
<h1>{{ user.user }}</h1> <div id="main">
<h1>{{ user.user }}</h1>
<h2>f0cks:</h2> <h2>f0cks:</h2>
@if('items' in f0cks) @if('items' in f0cks)
<div class="posts"> <div class="posts">
@each(f0cks.items as item) @each(f0cks.items as item)
<a href="{{ f0cks.link.main }}{{ item.id }}" data-mime="{{ item.mime }}" data-mode="{{ item.tag_id ? ['','sfw','nsfw'][item.tag_id] : 'null' }}" style="background-image: url('/t/{{ item.id }}.webp')"><p></p></a> <a href="{{ f0cks.link.main }}{{ item.id }}" data-mime="{{ item.mime }}" data-mode="{{ item.tag_id ? ['','sfw','nsfw'][item.tag_id] : 'null' }}" style="background-image: url('/t/{{ item.id }}.webp')"><p></p></a>
@endeach @endeach
</div>
<a href="{{ f0cks.link.main }}">show all f0cks</a>
@else
no f0cks given
@endif
<h2>favs:</h2>
@if('items' in favs)
<div class="posts">
@each(favs.items as item)
<a href="{{ favs.link.main }}{{ item.id }}" data-mime="{{ item.mime }}" data-mode="{{ item.tag_id ? ['','sfw','nsfw'][item.tag_id] : 'null' }}" style="background-image: url('/t/{{ item.id }}.webp')"><p></p></a>
@endeach
</div>
<a href="{{ favs.link.main }}">show all favs</a>
@else
no favorites
@endif
</div> </div>
<a href="{{ f0cks.link.main }}">show all f0cks</a> @include(snippets/footer)
@else
no f0cks given
@endif
<h2>favs:</h2>
@if('items' in favs)
<div class="posts">
@each(favs.items as item)
<a href="{{ favs.link.main }}{{ item.id }}" data-mime="{{ item.mime }}" data-mode="{{ item.tag_id ? ['','sfw','nsfw'][item.tag_id] : 'null' }}" style="background-image: url('/t/{{ item.id }}.webp')"><p></p></a>
@endeach
</div>
<a href="{{ favs.link.main }}">show all favs</a>
@else
no favorites
@endif
@include(snippets/footer)