Bitte geben Sie einen Grund für die Verwarnung an
Der Grund erscheint unter dem Beitrag.Bei einer weiteren Verwarnung wird das Mitglied automatisch gesperrt.
Activity Feed
#1 Activity Feed
@Ingmar @Johannes Bei uns kam die Frage bzw. der Wunsch auf, den newsfeed unter "Neueste Ereignisse" einschränken zu können. Die Idee dabei, dass ein User einen bestimmten Unterbereich abwählt, indem er für sich diesen durch anklicken der Bereichsüberschrift diesen ausblendet und er dann auch keine neuen Beiträge unter "Neueste Ereignisse" angezeigt bekommt.
Aktuell ist es ja nur möglich, Bereiche insoweit für alle Nutzer in der Sicht "Neueste.." auszublenden, unter "Letzte Beiträge" werden sie weiterhin angezeigt.
Diese Möglichkeit wollen wir aber nicht nutzen, da davon eben alle User betroffen sind.
Daher der Wunsch, diese Entscheidung für den einzelnen User möglich zu machen. Dann könnte jeder seine gewünschte bzw. nicht gewünschte Wahl treffen und der ihn störende newsfeed würde entfallen.
Vielleicht wäre das auch in anderen Foren so erwünscht
Gruß old-smokey
Betreff: RE: Activity Feed (Individueller Filter für jeden User - V1-V6)
Hallo old-smokey,
dein Wunsch nach einer individuellen Filterung des Feeds ist absolut verständlich.
Da Xobor das serverseitig nicht anbietet, habe ich mich mal drangesetzt und ein maßgeschneidertes, clientseitiges JavaScript-Plugin entwickelt, das dieses Problem für alle Xobor-Generationen (V1 bis V6, inklusive Business v4) vollständig löst.
Was macht das Plugin?
Volle Kontrolle für den User:
Neben jeder Kategorie-Überschrift wird vollautomatisch eine kleine, dezente Schaltfläche platziert.
Visuelles Feedback:
Der User sieht sofort den Zustand: [ FEED ON ] (Aktiv) oder [ MUTE ] (Stummgeschaltet).
Echtzeit-Filter:
Klickt ein User auf [ MUTE ], wird der Activity Feed auf der Startseite augenblicklich durchsucht und die Einträge dieser Kategorie ausgeblendet.
Browserspeicher (localStorage):
Der Filter merkt sich die Entscheidung dauerhaft pro Nutzer. Auch nach Tagen bleibt die Stummschaltung aktiv, bis man sie wieder anklickt. Andere Forennutzer werden davon absolut nicht beeinflusst!
CPU- und Akku-schonend:
Das Skript läuft nicht permanent, sondern prüft im ressourcenschonenden 3-Sekunden-Takt im Hintergrund nachladende Ajax-Feeds.
Das Skript ist design-neutral aufgebaut und nutzt currentColor sowie inherit. Es passt sich also vollautomatisch der Textfarbe und Schriftart deines bestehenden Foren-Designs an (egal ob Gaya, Business oder V6).
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<!-- === XOBOR ALL-TEMPLATE PLUGIN: PERSONAL ACTIVITY FEED FILTER (V1-V6) === -->
<style>
.feed-toggle-eye {
float: right !important;
margin-left: 15px !important;
margin-top: 2px !important;
cursor: pointer !important;
font-family: inherit !important;
font-size: 11px !important;
font-weight: bold !important;
color: currentColor !important;
opacity: 0.7;
background: rgba(0, 0, 0, 0.05) !important;
padding: 1px 6px !important;
border: 1px solid currentColor !important;
border-radius: 3px !important;
user-select: none;
transition: opacity 0.2s ease;
display: inline-block !important;
}
.feed-toggle-eye:hover { opacity: 1 !important; }
.feed-toggle-eye.muted { opacity: 0.3 !important; background: transparent !important; }
th .feed-toggle-eye, td .feed-toggle-eye { float: right !important; position: relative !important; margin-top: -2px !important; }
</style>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
const FEED_STORAGE_KEY = 'xobor_user_muted_feeds';
function getMutedFeeds() { return JSON.parse(localStorage.getItem(FEED_STORAGE_KEY) || "[]"); }
function saveMutedFeeds(muted) { localStorage.setItem(FEED_STORAGE_KEY, JSON.stringify(muted)); }
function filterActivityFeed() {
const mutedFeeds = getMutedFeeds();
const feedEntries = document.querySelectorAll('#xActivityFeed li, .activity_feed_box li, .xFeedContainer li, .newsfeed_box li');
feedEntries.forEach(li => {
const text = li.textContent.toLowerCase();
let shouldHide = false;
mutedFeeds.forEach(catName => { if (text.includes(catName.toLowerCase())) { shouldHide = true; } });
if (shouldHide) { li.style.display = 'none'; } else { li.style.display = ''; }
});
}
function injectFilterControls() {
const mutedFeeds = getMutedFeeds();
document.querySelectorAll('.box.cat, .wbox, [id^="cat_"], .forum_table, .cat_header').forEach(box => {
let header = box.querySelector('.boxheader, h3, .wbox_header, th.cat, td.cat, .titlecell');
if (!header && (box.tagName === 'TH' || box.tagName === 'TD' || box.classList.contains('cat_header'))) { header = box; }
const catLink = box.querySelector('a.cat, a[href*="cat"], a[href*="fcategory"]');
if (!header || !catLink || header.querySelector('.feed-toggle-eye')) return;
const catName = catLink.textContent.trim();
if (!catName) return;
const isMuted = mutedFeeds.includes(catName);
const eye = document.createElement('span');
eye.className = isMuted ? 'feed-toggle-eye muted' : 'feed-toggle-eye';
eye.textContent = isMuted ? '[ MUTE ]' : '[ FEED ON ]';
eye.title = isMuted ? `Feed für ${catName} wieder aktivieren` : `Feed für ${catName} ausblenden`;
eye.addEventListener('click', function(e) {
e.preventDefault(); e.stopPropagation();
let currentMuted = getMutedFeeds();
if (currentMuted.includes(catName)) {
currentMuted = currentMuted.filter(name => name !== catName);
this.textContent = '[ FEED ON ]'; this.className = 'feed-toggle-eye';
} else {
currentMuted.push(catName);
this.textContent = '[ MUTE ]'; this.className = 'feed-toggle-eye muted';
}
saveMutedFeeds(currentMuted); filterActivityFeed();
});
header.appendChild(eye);
});
}
setTimeout(function() { injectFilterControls(); filterActivityFeed(); }, 600);
setInterval(filterActivityFeed, 3000);
});
</script>
Einbau:
- In V4/V6: Einfach als neues Plugin-Element in der „Unteren Leiste / Header“ (bottom_header) mit der Zuweisung für das Template forum_overview hinterlegen.
- In alten V1-V3 Versionen: Kann direkt in die globale Fußzeile kopiert werden.
Viel Spaß beim Ausprobieren und Testen!
Viele Grüße
Enricos
- Informationen
- Aktuelle News
- Forum Tutorials - Tipps und Anleitungen
- SEO / Werbung fürs Forum
- Verwaltung
- Extras
- Design
- Plugin(system)
- Eure Fragen zu Tutorials
- Forum Support
- Fragen und Antworten
- Pluginsystem
- Plugins
- Templates & Sprachen
- Bugreport
- Verbesserungsvorschläge
- Sponsoren gesucht
- Das neue Xobor Business-Template
- News und Updates
- Bugreport
- Allgemeines Feedback
- Verbesserungsvorschläge
- Sonstiges
- Kaffeeklatsch
- Lob & Kritik
- Verbesserungsvorschläge
- Allgemeine Fragen
- Fehlermeldungen
- Verbesserungsvorschläge Responsive Design
- Bugreport Responsive Design
- Archiv - Alter Betatest
- Responsive Design - Verbesserungsvorschläge
- Responsive Design - Bugreport
- Fragen zum neuen Template
- Neue Administration Beta Test
- Bugreport Neue Administration
- Allgemeines Fragen & Feedback
- Verbesserungsvorschläge zur neuen Administration
- Shoutbox
Ähnliche Themen
Jetzt anmelden!
Jetzt registrieren!
© 2017 Xobor | Forum-Software