Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Web/Presenters/WallPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ public function renderFeed(): void
foreach ($posts->page((int) ($_GET["p"] ?? 1), $perPage) as $post) {
$this->template->posts[] = $this->posts->get($post->id);
}
$this->template->feedIgnoreButton = true;
}

public function renderGlobalFeed(): void
Expand Down Expand Up @@ -240,6 +241,7 @@ public function renderGlobalFeed(): void
foreach ($posts as $post) {
$this->template->posts[] = $this->posts->get($post->id);
}
$this->template->feedIgnoreButton = true;
}

public function renderHashtagFeed(string $hashtag): void
Expand Down
1 change: 1 addition & 0 deletions Web/Presenters/templates/components/post/microblogpost.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
<span n:if="$post->isPinned()" class="nobold">{_pinned}</span>

<a n:if="$canBeDeleted && !($forceNoDeleteLink ?? false) && $compact == false" class="delete" href="/wall{$post->getPrettyId()}/delete"></a>
<a n:if="$feedIgnoreButton && !$canBeDeleted" class="delete" id="__ignoreSomeoneFeed" title="{_feed_ignore}" data-val='1' data-id="{$wallOwner->getRealId()}"></a>

{if $canBePinned && !($forceNoPinLink ?? false) && $compact == false}
{if $post->isPinned()}
Expand Down
4 changes: 4 additions & 0 deletions Web/Presenters/templates/components/post/oldpost.xml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@

{if !($forceNoDeleteLink ?? false) && $canBeDeleted}
<a href="/wall{$post->getPrettyId()}/delete">{_delete}</a> &nbsp;|&nbsp;
{/if}

{if $feedIgnoreButton && !$canBeDeleted}
<a id="__ignoreSomeoneFeed" data-val='1' data-id="{$wallOwner->getRealId()}">{_feed_ignore}</a> &nbsp;|&nbsp;
{/if}

{if !($forceNoPinLink ?? false) && $canBePinned}
Expand Down
9 changes: 9 additions & 0 deletions Web/static/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -914,6 +914,15 @@ h4 {
}
}

.post-hidden {
display: none;
}

.ignore-message {
padding: 5px 0;
}


.small-textarea {
height: 24px;
}
Expand Down
23 changes: 23 additions & 0 deletions Web/static/css/microblog.css
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,29 @@
background-color: rgb(240, 240, 240);
}

.ignore {
float: right;
height: 16px;
width: 16px;
overflow: auto;
background: url("/assets/packages/static/openvk/img/ignore.png") no-repeat 0 0;
opacity: 0.1;
transition-duration: 0.3s;
}

.ignore:hover {
opacity: 0.4;
}

.post-hidden {
display: none;
}

.ignore-message {
padding: 5px 0;
border-bottom: 1px #ddd solid;
}

.post-author .delete {
float: right;
height: 16px;
Expand Down
47 changes: 47 additions & 0 deletions Web/static/js/al_feed.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,53 @@ u(document).on("click", "#__ignoreSomeone", async (e) => {
}
})

u(document).on("click", "#__ignoreSomeoneFeed", async (e) => {
e.preventDefault()

const TARGET = u(e.target)
const ENTITY_ID = Number(e.target.dataset.id)
const VAL = Number(e.target.dataset.val)
const ACT = VAL == 1 ? 'ignore' : 'unignore'
const METHOD_NAME = ACT == 'ignore' ? 'addBan' : 'deleteBan'
const PARAM_NAME = ENTITY_ID < 0 ? 'group_ids' : 'user_ids'
const ENTITY_NAME = ENTITY_ID < 0 ? 'club' : 'user'
const URL = `/method/newsfeed.${METHOD_NAME}?auth_mechanism=roaming&${PARAM_NAME}=${Math.abs(ENTITY_ID)}`

TARGET.closest('.post').addClass('lagged')
const REQ = await fetch(URL)
const RES = await REQ.json()
TARGET.closest('.post').removeClass('lagged')

if(RES.error_code) {
switch(RES.error_code) {
case -10:
fastError(';/')
break
case -50:
fastError(tr('ignored_sources_limit'))
break
default:
fastError(res.error_msg)
break
}
return
}

if(RES.response == 1) {
if(ACT == 'unignore') {
TARGET.closest('.scroll_node').find('.post').removeClass('post-hidden');
TARGET.closest('.ignore-message').remove()
} else {
TARGET.closest('.post').addClass('post-hidden');
TARGET.closest('.scroll_node').append(`
<div class="ignore-message" width="100%">
${tr(`feed_${ENTITY_NAME}_ignored`)} <a id="__ignoreSomeoneFeed" data-val='0' data-id='${ENTITY_ID}' href="#">${tr('feed_unignore')}</a>
</div>
`)
}
}
})

u(document).on('click', '#__feed_settings_link', (e) => {
e.preventDefault()

Expand Down
5 changes: 5 additions & 0 deletions locales/en.strings
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,11 @@
"subscriptions_one" = "$1 subscription";
"subscriptions_other" = "$1 subscriptions";

"feed_user_ignored" = "User will no longer appear in the feed.";
"feed_club_ignored" = "Club will no longer appear in the feed.";
"feed_unignore" = "Restore.";
"feed_ignore" = "Not interested";

/* Group */

"group" = "Group";
Expand Down
5 changes: 5 additions & 0 deletions locales/ru.strings
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,11 @@
"change_geo_name" = "Изменить название точки";
"change_geo_name_new" = "Новое название";

"feed_user_ignored" = "Пользователь больше не будет появляться в ленте.";
"feed_club_ignored" = "Группа больше не будет появляться в ленте.";
"feed_unignore" = "Вернуть.";
"feed_ignore" = "Не интересно";

/* Friends */

"friends" = "Друзья";
Expand Down
5 changes: 5 additions & 0 deletions locales/uk.strings
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,11 @@
"change_geo_name" = "Змінити назву розташування";
"change_geo_name_new" = "Нова назва";

"feed_user_ignored" = "Користувач більше не з'являтиметься у стрічці.";
"feed_club_ignored" = "Спiльнота більше не з'являтиметься у стрічці.";
"feed_unignore" = "Повернути.";
"feed_ignore" = "Не цікаво";

/* Friends */

"friends" = "Друзі";
Expand Down