forked from midou/invidious
94 lines
3.6 KiB
Plaintext
94 lines
3.6 KiB
Plaintext
<% content_for "header" do %>
|
|
<title><%= translate(locale, "History") %> - Invidious</title>
|
|
<% end %>
|
|
|
|
<div class="pure-g h-box">
|
|
<div class="pure-u-1-3">
|
|
<h3><%= translate(locale, "`x` videos", %(<span id="count">#{user.watched.size}</span>)) %></h3>
|
|
</div>
|
|
<div class="pure-u-1-3" style="text-align:center">
|
|
<h3>
|
|
<a href="/feed/subscriptions"><%= translate(locale, "`x` subscriptions", %(<span id="count">#{user.subscriptions.size}</span>)) %></a>
|
|
</h3>
|
|
</div>
|
|
<div class="pure-u-1-3" style="text-align:right">
|
|
<h3>
|
|
<a href="/clear_watch_history"><%= translate(locale, "Clear watch history") %></a>
|
|
</h3>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pure-g">
|
|
<% watched.each_slice(4) do |slice| %>
|
|
<% slice.each do |item| %>
|
|
<div class="pure-u-1 pure-u-md-1-4">
|
|
<div class="h-box">
|
|
<a style="width:100%" href="/watch?v=<%= item %>">
|
|
<% if !env.get("preferences").as(Preferences).thin_mode %>
|
|
<div class="thumbnail">
|
|
<img class="thumbnail" src="/vi/<%= item %>/mqdefault.jpg"/>
|
|
<form onsubmit="return false;" action="/watch_ajax?action_mark_unwatched=1&id=<%= item %>&referer=<%= env.get("current_page") %>" method="post">
|
|
<input type="hidden" name="csrf_token" value="<%= URI.escape(env.get?("csrf_token").try &.as(String) || "") %>">
|
|
<p class="watched">
|
|
<a onclick="mark_unwatched(this)" data-id="<%= item %>" href="#">
|
|
<button type="submit" style="all:unset">
|
|
<i class="icon ion-md-trash"></i>
|
|
</button>
|
|
</a>
|
|
</p>
|
|
</form>
|
|
</div>
|
|
<p></p>
|
|
<% end %>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<script>
|
|
function mark_unwatched(target) {
|
|
var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode;
|
|
tile.style.display = "none";
|
|
var count = document.getElementById('count')
|
|
count.innerText = count.innerText - 1;
|
|
|
|
var url = '/watch_ajax?action_mark_unwatched=1&redirect=false' +
|
|
'&id=' + target.getAttribute('data-id');
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.responseType = 'json';
|
|
xhr.timeout = 20000;
|
|
xhr.open('POST', url, true);
|
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
xhr.send('csrf_token=<%= URI.escape(env.get?("csrf_token").try &.as(String) || "") %>');
|
|
|
|
xhr.onreadystatechange = function() {
|
|
if (xhr.readyState == 4) {
|
|
if (xhr.status != 200) {
|
|
count.innerText = count.innerText - 1 + 2;
|
|
tile.style.display = '';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<div class="pure-g h-box">
|
|
<div class="pure-u-1 pure-u-lg-1-5">
|
|
<% if page >= 2 %>
|
|
<a href="/feed/history?page=<%= page - 1 %>">
|
|
<%= translate(locale, "Previous page") %>
|
|
</a>
|
|
<% end %>
|
|
</div>
|
|
<div class="pure-u-1 pure-u-lg-3-5"></div>
|
|
<div class="pure-u-1 pure-u-lg-1-5" style="text-align:right">
|
|
<% if watched.size >= limit %>
|
|
<a href="/feed/history?page=<%= page + 1 %>">
|
|
<%= translate(locale, "Next page") %>
|
|
</a>
|
|
<% end %>
|
|
</div>
|
|
</div>
|