'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,
);
$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 name
+ * count = counted unseen 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;
+}
$(".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')
<?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) {
$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`,
#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`,
<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) {
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>
}
/* 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-img {
+ height: 20px;
+ width: 20px;
+ vertical-align: middle;
}
-#forumlist-max-forumlists, #forumlist-random, #forumlist-profile, #forumlist-network {
- float: left;
+#forum-widget-collapse {
+ opacity: 0.3;
}
-.forumlist-img {
- height: 20px;
- width: 20px;
+#forum-widget-collapse:hover {
+ opacity: 1.0;
}
<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>
- {{foreach $forums as $forum}}
+ <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>
- {{/if}}
+ {{/foreach}}
+ {{if $total > $visible_forums }}
+ <li onclick="showHideForumlist(); return false;" id="forum-widget-collapse" class="forum-widget-link fakelink tool">{{$showmore}}</li>
+ {{/if}}
+ </ul>
</div>
#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);
float: right;
background-color: #BABDB6;
}
-.sidebar-group-li .notify.show {
+.sidebar-group-li .notify.show, .forum-widget-entry .notify.show {
display: block;
}
margin-top: 10px;
}
+#forumlist-sidebar ul {
+ list-style: none;
+}
+
.nets-ul, .fileas-ul, .categories-ul, .datebrowse-ul {
list-style-type: none;
}
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;
}
$(".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 ) {
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;
.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;
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; */
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;
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;
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;
}
--- /dev/null
+<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>
//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;
}
}