mirror of
https://github.com/friendica/friendica
synced 2024-11-10 05:42:54 +00:00
Merge pull request #2095 from rabuzarus/unread_forums
count unread forum items for forumlist widget (ping.php)
This commit is contained in:
commit
9c37fc320e
11 changed files with 208 additions and 68 deletions
|
@ -87,6 +87,7 @@ function widget_forumlist($a) {
|
|||
'url' => $a->get_baseurl() . '/network?f=&cid=' . $contact['id'],
|
||||
'external_url' => $a->get_baseurl() . '/redir/' . $contact['id'],
|
||||
'name' => $contact['name'],
|
||||
'cid' => $contact['id'],
|
||||
'micro' => proxy_url($contact['micro'], false, PROXY_SIZE_MICRO),
|
||||
'id' => ++$id,
|
||||
);
|
||||
|
@ -147,3 +148,30 @@ function forumlist_profile_advanced($uid) {
|
|||
$o .= $forumlist;
|
||||
return $o;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief count unread forum items
|
||||
*
|
||||
* Count unread items of connected forums and private groups
|
||||
*
|
||||
* @return array
|
||||
* 'id' => contact id
|
||||
* 'name' => contact/forum name
|
||||
* 'count' => counted unseen forum items
|
||||
*
|
||||
*/
|
||||
|
||||
function forums_count_unseen() {
|
||||
$r = q("SELECT `contact`.`id`, `contact`.`name`, COUNT(`item`.`unseen`) AS `count` FROM `item`
|
||||
INNER JOIN `contact` ON `item`.`contact-id` = `contact`.`id`
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` AND NOT `item`.`deleted`
|
||||
AND `contact`.`network`= 'dfrn' AND (`contact`.`forum` OR `contact`.`prv`)
|
||||
AND NOT `contact`.`blocked` AND NOT `contact`.`hidden`
|
||||
AND NOT `contact`.`pending` AND NOT `contact`.`archive`
|
||||
AND `contact`.`success_update` > `failure_update`
|
||||
GROUP BY `contact`.`id` ",
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
|
|
@ -210,6 +210,13 @@
|
|||
$(".group-"+gid+" .notify").addClass("show").text(gcount);
|
||||
});
|
||||
|
||||
$(".forum-widget-entry .notify").removeClass("show");
|
||||
$(data).find("forum").each(function() {
|
||||
var fid = this.id;
|
||||
var fcount = this.innerHTML;
|
||||
$(".forum-"+fid+" .notify").addClass("show").text(fcount);
|
||||
});
|
||||
|
||||
|
||||
var eNotif = $(data).find('notif')
|
||||
|
||||
|
|
15
mod/ping.php
15
mod/ping.php
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
require_once("include/datetime.php");
|
||||
require_once('include/bbcode.php');
|
||||
require_once('include/forums.php');
|
||||
require_once("mod/proxy.php");
|
||||
|
||||
function ping_init(&$a) {
|
||||
|
@ -34,6 +35,7 @@ function ping_init(&$a) {
|
|||
$home = 0;
|
||||
$network = 0;
|
||||
$network_group = array();
|
||||
$forums_unseen = array();
|
||||
|
||||
$r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`wall`, `item`.`author-name`,
|
||||
`item`.`contact-id`, `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `item`.`object`,
|
||||
|
@ -100,6 +102,10 @@ function ping_init(&$a) {
|
|||
#echo '<SQL id="' . intval(local_user()) . '">' . $sql . '</SQL>';
|
||||
$network_group = q($sql, intval(local_user()), intval(local_user()));
|
||||
#echo '<COUNT R="' . count($network_group) . '"/>';
|
||||
|
||||
if(intval(feature_enabled(local_user(),'forumlist_widget'))) {
|
||||
$forums_unseen = forums_count_unseen();
|
||||
}
|
||||
}
|
||||
|
||||
$intros1 = q("SELECT `intro`.`id`, `intro`.`datetime`,
|
||||
|
@ -220,6 +226,7 @@ function ping_init(&$a) {
|
|||
<net>$network</net>
|
||||
<home>$home</home>\r\n";
|
||||
if ($register!=0) echo "<register>$register</register>";
|
||||
|
||||
if ( count($network_group) ) {
|
||||
echo '<groups>';
|
||||
foreach ($network_group as $it) {
|
||||
|
@ -228,6 +235,14 @@ function ping_init(&$a) {
|
|||
echo "</groups>";
|
||||
}
|
||||
|
||||
if ( count($forums_unseen) ) {
|
||||
echo '<forums>';
|
||||
foreach ($forums_unseen as $it) {
|
||||
echo '<forum id="' . $it['id'] . '">' . $it['count'] . "</forum>";
|
||||
}
|
||||
echo "</forums>";
|
||||
}
|
||||
|
||||
echo "<all-events>$all_events</all-events>
|
||||
<all-events-today>$all_events_today</all-events-today>
|
||||
<events>$events</events>
|
||||
|
|
|
@ -288,28 +288,16 @@ ul.credits li {
|
|||
}
|
||||
|
||||
/* forumlist widget */
|
||||
#hide-forum-list {
|
||||
opacity: 0.3;
|
||||
filter:alpha(opacity=30);
|
||||
}
|
||||
|
||||
#hide-forum-list:hover {
|
||||
opacity: 1.0;
|
||||
filter:alpha(opacity=100);
|
||||
}
|
||||
|
||||
|
||||
#forumlist-settings-label, #forumlist-random-label, #forumlist-profile-label, #forumlist-network-label {
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
#forumlist-max-forumlists, #forumlist-random, #forumlist-profile, #forumlist-network {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.forumlist-img {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#forum-widget-collapse {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
#forum-widget-collapse:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
|
|
@ -1,45 +1,46 @@
|
|||
<script>
|
||||
|
||||
function showHideForumlist() {
|
||||
if( $("div[id^='forum-widget-entry-extended-']").is(':visible')) {
|
||||
$("div[id^='forum-widget-entry-extended-']").hide();
|
||||
$('#forum-widget-collapse').html(window.showMore);
|
||||
if( $("li[id^='forum-widget-entry-extended-']").is(':visible')) {
|
||||
$("li[id^='forum-widget-entry-extended-']").hide();
|
||||
$("li#forum-widget-collapse").html(window.showMore);
|
||||
|
||||
}
|
||||
else {
|
||||
$("div[id^='forum-widget-entry-extended-']").show();
|
||||
$('#forum-widget-collapse').html(window.showFewer);
|
||||
}
|
||||
$("li[id^='forum-widget-entry-extended-']").show();
|
||||
$("li#forum-widget-collapse").html(window.showFewer);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="forumlist-sidebar" class="widget">
|
||||
<h3 id="forumlist">{{$title}}</h3>
|
||||
|
||||
<ul id="forumlist-sidbar-ul" role="menu">
|
||||
{{foreach $forums as $forum}}
|
||||
{{if $forum.id <= $visible_forums}}
|
||||
<div class="forum-widget-entry" id="forum-widget-entry-{{$forum.id}}" role="menuitem">
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-{{$forum.id}}" role="menuitem">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}" >{{$forum.name}}</a>
|
||||
</div>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $forum.id > $visible_forums}}
|
||||
<div class="forum-widget-entry" id="forum-widget-entry-extended-{{$forum.id}}" role="menuitem" style="display: none;">
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-extended-{{$forum.id}}" role="menuitem" style="display: none;">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}" >{{$forum.name}}</a>
|
||||
</div>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
||||
{{if $total > $visible_forums }}
|
||||
<div id="forum-widget-showmore" class="forum-widget-entry" role="menuitem">
|
||||
<a onclick="showHideForumlist(); return false;" id="forum-widget-collapse" class="forum-widget-link">{{$showmore}}</a>
|
||||
</div>
|
||||
<li onclick="showHideForumlist(); return false;" id="forum-widget-collapse" class="forum-widget-link fakelink tool">{{$showmore}}</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -2039,7 +2039,7 @@ a.mail-list-link {
|
|||
#sidebar-group-list ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
.sidebar-group-li .notify {
|
||||
.sidebar-group-li .notify, .forum-widget-entry .notify {
|
||||
display: none;
|
||||
font-size: 9px;
|
||||
border: 1px solid rgb(221, 221, 221);
|
||||
|
@ -2047,7 +2047,7 @@ a.mail-list-link {
|
|||
float: right;
|
||||
background-color: #BABDB6;
|
||||
}
|
||||
.sidebar-group-li .notify.show {
|
||||
.sidebar-group-li .notify.show, .forum-widget-entry .notify.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
@ -2061,6 +2061,10 @@ a.mail-list-link {
|
|||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#forumlist-sidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.nets-ul, .fileas-ul, .categories-ul, .datebrowse-ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
|
|
@ -2357,6 +2357,16 @@ a.mail-list-link {
|
|||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#forumlist-sidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.forumlist-img {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.nets-ul, .fileas-ul, .categories-ul, .datebrowse-ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,13 @@ $(document).ready(function(){
|
|||
$(".group-"+gid+" .notify").addClass("on").text(gcount);
|
||||
});
|
||||
|
||||
$(".forum-widget-entry .notify").removeClass("on");
|
||||
$(data).find("forum").each(function() {
|
||||
var fid = this.id;
|
||||
var fcount = this.innerHTML;
|
||||
$(".forum-"+fid+" .notify").addClass("on").text(fcount);
|
||||
});
|
||||
|
||||
console.log(intro,mail);
|
||||
|
||||
if (notifCount > 0 ) {
|
||||
|
|
|
@ -343,6 +343,22 @@ code {
|
|||
margin-top: 20px;
|
||||
max-width: 640px;
|
||||
}
|
||||
.badge {
|
||||
display: inline-block;
|
||||
min-width: 10px;
|
||||
padding: 3px 7px;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
/* background-color: #737373*/;
|
||||
background-color: #36C;
|
||||
border-radius: 4px;
|
||||
opacity: 0.3;
|
||||
}
|
||||
#panel {
|
||||
position: absolute;
|
||||
width: 10em;
|
||||
|
@ -386,7 +402,7 @@ code {
|
|||
.tool a {
|
||||
/* color: #000; */
|
||||
}
|
||||
.tool a:hover, .widget a:hover, #nets-sidear a:hover, #hide-forum-list:hover, .admin.link a:hover, aside h4 a:hover, right_aside h4 a:hover {
|
||||
.tool a:hover, .widget a:hover, #nets-sidear a:hover, #forum-widget-collapse:hover, .admin.link a:hover, aside h4 a:hover, right_aside h4 a:hover {
|
||||
/* text-decoration: underline; */
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
|
@ -400,8 +416,8 @@ code {
|
|||
opacity: 1;
|
||||
}
|
||||
|
||||
.sidebar-group-li:hover, #sidebar-new-group:hover, #hide-forum-list:hover,
|
||||
#sidebar-ungrouped:hover, .side-link:hover, .nets-ul li:hover, #forumlist-sidebar div:hover, #forum-list-right div:hover,
|
||||
.sidebar-group-li:hover, #sidebar-new-group:hover, #forum-widget-collapse:hover,
|
||||
#sidebar-ungrouped:hover, .side-link:hover, .nets-ul li:hover, #forumlist-sidebar li:hover, #forumlist-sidebar-right li:hover,
|
||||
.nets-all:hover, .saved-search-li:hover, li.tool:hover, .admin.link:hover, aside h4 a:hover, right_aside h4 a:hover, #message-new:hover {
|
||||
/* background-color: #ddd; */
|
||||
/* background-color: #e5e5e5; */
|
||||
|
@ -420,7 +436,7 @@ code {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
#forum-widget-showmore, #sidebar-new-group, #hide-forum-list, #forum-list-right, #sidebar-ungrouped,
|
||||
#forum-widget-showmore, #sidebar-new-group, #forum-widget-collapse, #forumlist-rsidebar-right, #sidebar-ungrouped,
|
||||
.side-link, #peoplefind-desc, #connect-desc, .nets-all, .admin.link, #message-new {
|
||||
padding-left: 10px;
|
||||
padding-top: 3px;
|
||||
|
@ -440,6 +456,14 @@ code {
|
|||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#forumlist-sidebar .notify, #forumlist-sidebar-right .notify {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#forumlist-sidebar .notify.show, #forumlist-sidebar-right .notify.show {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
a.nets-link, .side-link a, #sidebar-new-group a, a.savedsearchterm, a.fileas-link, aside h4 a, right_aside h4 a {
|
||||
display: block;
|
||||
color: #737373;
|
||||
|
@ -467,11 +491,11 @@ a.sidebar-group-element {
|
|||
color: black;
|
||||
}
|
||||
|
||||
#forumlist-sidebar a, #forum-list-right a, .tool a, .admin.link a {
|
||||
#forumlist-sidebar a, #forumlist-sidebar-right a, .tool a, .admin.link a {
|
||||
color: #737373;
|
||||
}
|
||||
|
||||
#forumlist-sidebar, #forum-list-right {
|
||||
#forumlist-sidebar, #forumlist-sidebar-right {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
|
|
47
view/theme/vier/templates/widget_forumlist_right.tpl
Normal file
47
view/theme/vier/templates/widget_forumlist_right.tpl
Normal file
|
@ -0,0 +1,47 @@
|
|||
<script>
|
||||
|
||||
function showHideForumlist() {
|
||||
if( $("li[id^='forum-widget-entry-extended-']").is(':visible')) {
|
||||
$("li[id^='forum-widget-entry-extended-']").hide();
|
||||
$("li#forum-widget-collapse").html(window.showMore);
|
||||
|
||||
}
|
||||
else {
|
||||
$("li[id^='forum-widget-entry-extended-']").show();
|
||||
$("li#forum-widget-collapse").html(window.showFewer);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="forumlist-sidebar-right" class="widget">
|
||||
<h3 id="forumlist">{{$title}}</h3>
|
||||
|
||||
<ul id="forumlist-sidbar-ul" role="menu">
|
||||
{{foreach $forums as $forum}}
|
||||
{{if $forum.id <= $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-{{$forum.id}}" role="menuitem">
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}" >{{$forum.name}}</a>
|
||||
<span class="notify badge pull-right"></span>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $forum.id > $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-extended-{{$forum.id}}" role="menuitem" style="display: none;">
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}" >{{$forum.name}}</a>
|
||||
<span class="notify padge pull-right"></span>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
||||
{{if $total > $visible_forums }}
|
||||
<li onclick="showHideForumlist(); return false;" id="forum-widget-collapse" class="forum-widget-link tool fakelink">{{$showmore}}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
|
||||
</div>
|
|
@ -220,35 +220,44 @@ function vier_community_info() {
|
|||
//Community_Pages at right_aside
|
||||
if($show_pages AND local_user()) {
|
||||
|
||||
$pagelist = array();
|
||||
require_once('include/forums.php');
|
||||
|
||||
$contacts = q("SELECT `id`, `url`, `name`, `micro` FROM `contact`
|
||||
WHERE `network`= '%s' AND `uid` = %d AND (`forum` OR `prv`) AND
|
||||
NOT `hidden` AND NOT `blocked` AND
|
||||
NOT `archive` AND NOT `pending` AND
|
||||
`success_update` > `failure_update`
|
||||
ORDER BY `name` ASC",
|
||||
dbesc(NETWORK_DFRN), intval($a->user['uid']));
|
||||
//sort by last updated item
|
||||
$lastitem = true;
|
||||
|
||||
$pageD = array();
|
||||
$contacts = get_forumlist($a->user['uid'],true,$lastitem, true);
|
||||
$total = count($contacts);
|
||||
$visible_forums = 10;
|
||||
|
||||
// Look if the profile is a community page
|
||||
foreach($contacts as $contact) {
|
||||
$pageD[] = array("url"=>$contact["url"], "name"=>$contact["name"], "id"=>$contact["id"], "micro"=>$contact['micro']);
|
||||
};
|
||||
if(count($contacts)) {
|
||||
|
||||
$contacts = $pageD;
|
||||
|
||||
if ($contacts) {
|
||||
$page = '
|
||||
<h3>'.t("Community Pages").'</h3>
|
||||
<div id="forum-list-right">';
|
||||
$id = 0;
|
||||
|
||||
foreach($contacts as $contact) {
|
||||
$page .= '<div role="menuitem"><a href="' . $a->get_baseurl() . '/redir/' . $contact["id"] . '" title="'.t('External link to forum').'" class="label sparkle" target="_blank"><img class="forumlist-img" height="20" width="20" src="' . $contact['micro'] .'" alt="'.t('External link to forum').'" /></a> <a href="' . $a->get_baseurl() . '/network?f=&cid=' . $contact['id'] . '" >' . $contact["name"]."</a></div>";
|
||||
|
||||
$entry = array(
|
||||
'url' => $a->get_baseurl() . '/network?f=&cid=' . $contact['id'],
|
||||
'external_url' => $a->get_baseurl() . '/redir/' . $contact['id'],
|
||||
'name' => $contact['name'],
|
||||
'cid' => $contact['id'],
|
||||
'micro' => proxy_url($contact['micro'], false, PROXY_SIZE_MICRO),
|
||||
'id' => ++$id,
|
||||
);
|
||||
$entries[] = $entry;
|
||||
}
|
||||
|
||||
$page .= '</div>';
|
||||
|
||||
$tpl = get_markup_template('widget_forumlist_right.tpl');
|
||||
|
||||
$page .= replace_macros($tpl,array(
|
||||
'$title' => t('Forums'),
|
||||
'$forums' => $entries,
|
||||
'$link_desc' => t('External link to forum'),
|
||||
'$total' => $total,
|
||||
'$visible_forums' => $visible_forums,
|
||||
'$showmore' => t('show more'),
|
||||
));
|
||||
|
||||
$aside['$page'] = $page;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue