aboutsummaryrefslogtreecommitdiffstats
path: root/view
diff options
context:
space:
mode:
Diffstat (limited to 'view')
-rw-r--r--view/css/bootstrap-red.css27
-rw-r--r--view/js/acl.js74
-rw-r--r--view/js/autocomplete.js2
-rw-r--r--view/js/main.js84
-rw-r--r--view/theme/redbasic/css/style.css2
-rwxr-xr-xview/tpl/acl_selector.tpl12
-rwxr-xr-xview/tpl/connection_template.tpl2
-rwxr-xr-xview/tpl/contact_template.tpl2
-rwxr-xr-xview/tpl/conv_item.tpl2
-rwxr-xr-xview/tpl/conv_list.tpl2
-rwxr-xr-xview/tpl/direntry.tpl2
-rwxr-xr-xview/tpl/jot.tpl2
-rwxr-xr-xview/tpl/micropro_img.tpl2
-rw-r--r--view/tpl/notifications_widget.tpl18
-rwxr-xr-xview/tpl/photo_top.tpl2
-rwxr-xr-xview/tpl/search_item.tpl2
16 files changed, 156 insertions, 81 deletions
diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css
index 984a5b4f9..122bb5904 100644
--- a/view/css/bootstrap-red.css
+++ b/view/css/bootstrap-red.css
@@ -11,29 +11,6 @@ nav .dropdown-menu {
min-width: 16rem;
}
-@media screen and (min-width: 992px) {
- nav .badge {
- top: 0px;
- left: 0px;
- line-height: 0.75;
- }
-}
-
-@media screen and (max-width: 992px) {
- .navbar {
- padding: .5rem 7px;
- }
-
- nav .badge {
- top: 0.5rem;
- left: 1.5rem;
- }
-}
-
-.widget .badge {
- font-size: 100%;
-}
-
.nav-item.nav-item-hack {
height: 2.3rem;
}
@@ -77,10 +54,6 @@ nav .dropdown-menu {
}
/* nav overrides end */
-.list-group-item:hover {
- text-decoration: none;
-}
-
label {
font-weight: bold;
}
diff --git a/view/js/acl.js b/view/js/acl.js
index 9415113dd..4597184ea 100644
--- a/view/js/acl.js
+++ b/view/js/acl.js
@@ -12,8 +12,13 @@ function ACL(backend_url) {
that.deny_cid = [];
that.deny_gid = [];
- that.group_uids = [];
- that.group_ids = [];
+ that.group_uids = {};
+ that.group_ids = {};
+ that.contact_uids = {};
+ that.contact_ids = {};
+
+ that.bang = '';
+
that.selected_id = '';
that.info = $("#acl-info");
@@ -78,6 +83,8 @@ ACL.prototype.get_form_data = function(event) {
that.deny_cid = (that.form_id.data('deny_cid') || []);
that.deny_gid = (that.form_id.data('deny_gid') || []);
+ that.bang = (that.form_id.data('bang') || '');
+
that.update_view();
that.on_submit();
@@ -147,15 +154,31 @@ ACL.prototype.on_showall = function(event) {
};
ACL.prototype.on_showgroup = function(event) {
- var xid = that.acl_select.children(":selected").val();
+
+ var xid = that.acl_select.val();
+ var cid = '';
+
+ if(xid.length && xid.substr(0,1) == '^') {
+ cid = xid.slice(1);
+ xid = '';
+ }
// preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton
event.stopPropagation();
- that.allow_cid = [];
- that.allow_gid = [xid];
- that.deny_cid = [];
- that.deny_gid = [];
+ if (xid.length) {
+ that.allow_cid = [];
+ that.allow_gid = [xid];
+ that.deny_cid = [];
+ that.deny_gid = [];
+
+ }
+ else {
+ that.allow_cid = [cid];
+ that.allow_gid = [];
+ that.deny_cid = [];
+ that.deny_gid = [];
+ }
that.update_view();
that.on_submit();
@@ -307,8 +330,26 @@ ACL.prototype.update_view = function(value) {
$('#dbtn-jotnets').hide();
$('.profile-jot-net input').attr('disabled', 'disabled');
}
+ else if (that.allow_gid.length === 0 && that.allow_cid.length === 1 && that.deny_gid.length === 0 && that.deny_cid.length === 0 && value !== 'custom') {
+
+ if(that.bang && that.bang !== that.allow_cid[0]) {
+ that.update_view('custom');
+ return;
+ }
+
+ that.list.hide(); //hide acl-list
+ that.info.hide(); //show acl-info
+ that.selected_id = that.contact_ids[that.allow_cid[0]];
+ that.update_select('\\^' + that.selected_id);
+
+ /* jot acl */
+ $('#jot-perms-icon, #dialog-perms-icon, #' + that.form_id[0].id + ' .jot-perms-icon').removeClass('fa-unlock').addClass('fa-lock');
+ $('#dbtn-jotnets').hide();
+ $('.profile-jot-net input').attr('disabled', 'disabled');
+ }
else {
+
that.list.show(); //show acl-list
datasrc2src('#acl-list-content .list-group-item img[data-src]');
that.info.hide(); //hide acl-info
@@ -382,6 +423,21 @@ ACL.prototype.update_view = function(value) {
bthide.removeClass("btn-outline-danger").addClass("btn-danger");
$(this).removeClass("groupshow");
}
+ $(that.contact_uids[id]).each(function(i, v) {
+ if(uclass == "grouphide")
+ // we need attr selection here because the id can include an @ (diaspora/friendica xchans)
+ $('[id="g' + v + '"]').removeClass("groupshow");
+ if(uclass !== "") {
+ var cls = $('[id="g' + v + '"]').attr('class');
+ if( cls === undefined)
+ return true;
+ var hiding = cls.indexOf('grouphide');
+ if(hiding == -1)
+ $('[id="g' + v + '"]').addClass(uclass);
+ }
+ });
+ break;
+
}
});
}
@@ -415,9 +471,13 @@ ACL.prototype.populate = function(data) {
that.group_uids[this.xid] = this.uids;
that.group_ids[this.xid] = this.id;
}
+ else {
+ that.contact_ids[this.xid] = this.id;
+ }
if (this.self === 'abook-self') {
that.self[0] = this.xid;
}
+
that.list_content.append(html);
});
};
diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js
index 660b5f190..27011b4d4 100644
--- a/view/js/autocomplete.js
+++ b/view/js/autocomplete.js
@@ -40,7 +40,7 @@ function contact_format(item) {
var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick);
if(typeof desc === 'undefined') desc = '';
if(desc) desc = ' ('+desc+')';
- return "<div class='{0} dropdown-item dropdown-notification clearfix' title='{4}'><img class='menu-img-2' src='{1}'><span class='contactname'>{2}</span><span class='dropdown-sub-text'>{4}</span></div>".format(item.taggable, item.photo, item.name, desc, typeof(item.link) !== 'undefined' ? item.link : desc.replace('(','').replace(')',''));
+ return "<div class='{0} dropdown-item dropdown-notification clearfix' title='{4}'><img class='menu-img-2' src='{1}' loading='lazy'><span class='font-weight-bold contactname'>{2}</span><span class='dropdown-sub-text'>{4}</span></div>".format(item.taggable, item.photo, item.name, desc, typeof(item.link) !== 'undefined' ? item.link : desc.replace('(','').replace(')',''));
}
else
return "<div>" + item.text + "</div>";
diff --git a/view/js/main.js b/view/js/main.js
index 29f7ed7ca..fb7bcb52f 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -30,6 +30,7 @@ var sse_bs_active = false;
var sse_offset = 0;
var sse_type;
var sse_partial_result = false;
+var sse_rmids = [];
var page_cache = {};
@@ -176,8 +177,7 @@ $(document).ready(function() {
$('.notification-content').on('scroll', function() {
if(this.scrollTop > this.scrollHeight - this.clientHeight - (this.scrollHeight/7)) {
- if(!sse_bs_active)
- sse_bs_notifications(sse_type, false, true);
+ sse_bs_notifications(sse_type, false, true);
}
});
@@ -545,7 +545,7 @@ function markRead(notifType) {
function markItemRead(itemId) {
$.get('ping?f=&markItemRead='+itemId);
- $('.unseen-wall-indicator-'+itemId).hide();
+ $('.unseen-wall-indicator-'+itemId).remove();
}
function contextualHelp() {
@@ -710,6 +710,9 @@ function updateConvItems(mode,data) {
var nmids = $(this).data('b64mids');
nmids.forEach(function(nmid, index) {
+
+ sse_rmids.push(nmid);
+
if($('.notification[data-b64mid=\'' + nmid + '\']').length) {
$('.notification[data-b64mid=\'' + nmid + '\']').each(function() {
var n = this.parentElement.id.split('-');
@@ -743,12 +746,6 @@ function updateConvItems(mode,data) {
});
- // We are actually dealing with counts in sse_updateNotifications()
- // for notifications which are already visible. For the case where
- // unseen items were loaded but their notifications are not yet visible
- // we need to bootstrap counts here to stay in sync with the DB after
- // the first page load.
-
if(followUpPageLoad)
sse_bs_counts();
else
@@ -1766,14 +1763,31 @@ function sse_bs_init() {
}
function sse_bs_counts() {
- $.get('/sse_bs',function(obj) {
+
+
+ if(sse_bs_active)
+ return;
+
+ sse_bs_active = true;
+
+ $.ajax({
+ type: 'post',
+ url: '/sse_bs',
+ data: { sse_rmids }
+ }).done( function(obj) {
console.log(obj);
+ sse_bs_active = false;
+ sse_rmids = [];
sse_handleNotifications(obj, true, false);
});
}
function sse_bs_notifications(e, replace, followup) {
- sse_bs_active = true;
+
+ if(sse_bs_active)
+ return;
+
+
var manual = false;
if(typeof replace === 'undefined')
@@ -1805,17 +1819,23 @@ function sse_bs_notifications(e, replace, followup) {
var cn_val = (($('#cn-' + sse_type + '-input').length && sse_partial_result) ? $('#cn-' + sse_type + '-input').val().toString().toLowerCase() : '');
- $.get('/sse_bs/' + sse_type + '/' + sse_offset + '?nquery=' + encodeURIComponent(cn_val), function(obj) {
+ $("#nav-" + sse_type + "-loading").show();
+
+ sse_bs_active = true;
+
+ $.ajax({
+ type: 'post',
+ url: '/sse_bs/' + sse_type + '/' + sse_offset,
+ nquery: encodeURIComponent(cn_val),
+ data: { sse_rmids }
+ }).done(function(obj) {
console.log('sse: bootstraping ' + sse_type);
console.log(obj);
-
sse_bs_active = false;
+ sse_rmids = [];
+ $("#nav-" + sse_type + "-loading").hide();
sse_offset = obj[sse_type].offset;
- if(sse_offset < 0)
- $("#nav-" + sse_type + "-loading").hide();
-
sse_handleNotifications(obj, replace, followup);
-
});
}
else
@@ -1836,14 +1856,21 @@ function sse_handleNotifications(obj, replace, followup) {
var all_notifications = primary_notifications.concat(secondary_notifications);
all_notifications.forEach(function(type, index) {
- if(obj[type] && obj[type].count) {
+ if(typeof obj[type] === typeof undefined)
+ return true;
+
+ if(obj[type].count) {
$('.' + type + '-button').fadeIn();
if(replace || followup)
$('.' + type + '-update').html(Number(obj[type].count));
else
$('.' + type + '-update').html(Number(obj[type].count) + Number($('.' + type + '-update').html()));
}
- if(obj[type] && obj[type].notifications.length)
+ else {
+ $('.' + type + '-update').html('0');
+ $('.' + type + '-button').fadeOut();
+ }
+ if(obj[type].notifications.length)
sse_handleNotificationsItems(type, obj[type].notifications, replace, followup);
});
@@ -1864,10 +1891,18 @@ function sse_handleNotifications(obj, replace, followup) {
});
}
+ // load more notifications if visible notifications count becomes low
+ if(sse_type && sse_offset != -1 && $('#nav-' + sse_type + '-menu').children().length <= 20) {
+ sse_offset = 0;
+ sse_bs_notifications(sse_type, false, true);
+ }
+
+
}
function sse_handleNotificationsItems(notifyType, data, replace, followup) {
- var notifications_tpl = ((notifyType == 'forums') ? decodeURIComponent($("#nav-notifications-forums-template[rel=template]").html()) : decodeURIComponent($("#nav-notifications-template[rel=template]").html()));
+
+ var notifications_tpl = ((notifyType == 'forums') ? decodeURIComponent($("#nav-notifications-forums-template[rel=template]").html().replace('data-src', 'src')) : decodeURIComponent($("#nav-notifications-template[rel=template]").html().replace('data-src', 'src')));
var notify_menu = $("#nav-" + notifyType + "-menu");
var notify_loading = $("#nav-" + notifyType + "-loading");
var notify_count = $("." + notifyType + "-update");
@@ -1878,6 +1913,11 @@ function sse_handleNotificationsItems(notifyType, data, replace, followup) {
}
$(data).each(function() {
+
+ // do not add a notification if it is already present
+ if($('#nav-' + notifyType + '-menu .notification[data-b64mid=\'' + this.b64mid + '\']').length)
+ return true;
+
html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.addr,this.message,this.when,this.hclass,this.b64mid,this.notify_id,this.thread_top,this.unseen,this.private_forum, encodeURIComponent(this.mids), this.body);
notify_menu.append(html);
});
@@ -1920,7 +1960,7 @@ function sse_updateNotifications(type, mid) {
if(type === 'notify' && (mid !== bParam_mid || sse_type !== 'notify'))
return true;
-
+/*
var count = Number($('.' + type + '-update').html());
count--;
@@ -1934,6 +1974,7 @@ function sse_updateNotifications(type, mid) {
else {
$('.' + type + '-update').html(count);
}
+*/
$('#nav-' + type + '-menu .notification[data-b64mid=\'' + mid + '\']').fadeOut(function() {
this.remove();
@@ -1977,4 +2018,5 @@ function sse_setNotificationsStatus() {
$('#no_notifications').show();
$('#notifications').hide();
}
+
}
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index 08a6e9d19..545e610b5 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -799,8 +799,6 @@ div.jGrowl div.jGrowl-notification {
}
.contactname {
- font-weight: bold;
- color: $font_colour;
display: block;
overflow: hidden;
text-overflow: ellipsis;
diff --git a/view/tpl/acl_selector.tpl b/view/tpl/acl_selector.tpl
index 3d05cb455..c58a345e5 100755
--- a/view/tpl/acl_selector.tpl
+++ b/view/tpl/acl_selector.tpl
@@ -15,12 +15,14 @@
{{if $aclModalDesc}}
<div id="acl-dialog-description" class="section-content-info-wrapper">{{$aclModalDesc}}</div>
{{/if}}
- <label for="acl-select">{{$select_label}}</label>
+ <label for="acl-select">{{if $aclModalDesc}}<i class="fa fa-send-o"></i> {{/if}}{{$select_label}}</label>
<select id="acl-select" name="optionsRadios" class="form-control form-group">
<option id="acl-showall" value="public" {{$public_selected}}>{{$showall}}</option>
- {{$groups}}
<option id="acl-onlyme" value="onlyme" {{$justme_selected}}>{{$onlyme}}</option>
- <option id="acl-custom" value="custom" {{$custom_selected}}>{{$custom}}</option>
+ {{$groups}}
+ <optgroup label = "{{$custom_label}}">;
+ <option id="acl-custom" value="custom" {{$custom_selected}}>{{$custom}}</option>
+ </optgroup>;
</select>
{{if $showallOrigin}}
@@ -39,8 +41,8 @@
<div class="list-group-item acl-list-item" rel="acl-template" style="display:none">
<div class="acl-item-header clearfix">
- <img class="menu-img-3" data-src="{0}">
- <span class="contactname">{1}</span>
+ <img class="menu-img-3" data-src="{0}" loading="lazy" />
+ <span class="font-weight-bold contactname">{1}</span>
<span class="dropdown-sub-text">{6}</span>
</div>
<button class="acl-button-hide btn btn-sm btn-outline-danger"><i class="fa fa-times"></i> {{$hide}}</button>
diff --git a/view/tpl/connection_template.tpl b/view/tpl/connection_template.tpl
index f9b46b41e..86a230c7f 100755
--- a/view/tpl/connection_template.tpl
+++ b/view/tpl/connection_template.tpl
@@ -22,7 +22,7 @@
<div class="section-content-tools-wrapper">
<div class="contact-photo-wrapper" >
<a href="{{$contact.url}}" title="{{$contact.img_hover}}" >
- <img class="directory-photo-img {{if $contact.classes}}{{$contact.classes}}{{/if}}" src="{{$contact.thumb}}" alt="{{$contact.name}}" />
+ <img class="directory-photo-img {{if $contact.classes}}{{$contact.classes}}{{/if}}" src="{{$contact.thumb}}" alt="{{$contact.name}}" loading="lazy" />
</a>
{{include "connstatus.tpl" perminfo=$contact.perminfo}}
</div>
diff --git a/view/tpl/contact_template.tpl b/view/tpl/contact_template.tpl
index 73fa5adde..7c8c02ea2 100755
--- a/view/tpl/contact_template.tpl
+++ b/view/tpl/contact_template.tpl
@@ -1,6 +1,6 @@
<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" >
<div class="contact-entry-photo-wrapper" >
- <a href="{{$contact.link}}" title="{{$contact.img_hover}}" ><img class="contact-block-img" src="{{$contact.thumb}}" alt="{{$contact.name}}" /></a>
+ <a href="{{$contact.link}}" title="{{$contact.img_hover}}" ><img class="contact-block-img" src="{{$contact.thumb}}" alt="{{$contact.name}}" loading="lazy" /></a>
{{if $contact.perminfo}}{{include "connstatus.tpl" perminfo=$contact.perminfo}}{{/if}}
</div>
<div class="contact-entry-photo-end" ></div>
diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl
index f48e88006..d7eaefe7e 100755
--- a/view/tpl/conv_item.tpl
+++ b/view/tpl/conv_item.tpl
@@ -35,7 +35,7 @@
{{/if}}
<div class="wall-item-info" id="wall-item-info-{{$item.id}}" >
<div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}} h-card p-author" id="wall-item-photo-wrapper-{{$item.id}}">
- <img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" data-toggle="dropdown" />
+ <img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" loading="lazy" data-toggle="dropdown" />
{{if $item.thread_author_menu}}
<i class="fa fa-caret-down wall-item-photo-caret cursor-pointer" data-toggle="dropdown"></i>
<div class="dropdown-menu">
diff --git a/view/tpl/conv_list.tpl b/view/tpl/conv_list.tpl
index 21c38829a..113cf2324 100755
--- a/view/tpl/conv_list.tpl
+++ b/view/tpl/conv_list.tpl
@@ -29,7 +29,7 @@
<div class="p-2 clearfix wall-item-head{{if !$item.title && !$item.event && !$item.photo}} rounded-top{{/if}}{{if $item.is_new && !$item.event && !$item.is_comment}} wall-item-head-new{{/if}}">
<div class="wall-item-info" id="wall-item-info-{{$item.id}}" >
<div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}} h-card p-author" id="wall-item-photo-wrapper-{{$item.id}}">
- <img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" data-toggle="dropdown" /></a>
+ <img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" data-toggle="dropdown" loading="lazy" /></a>
{{if $item.thread_author_menu}}
<i class="fa fa-caret-down wall-item-photo-caret cursor-pointer" data-toggle="dropdown"></i>
<div class="dropdown-menu">
diff --git a/view/tpl/direntry.tpl b/view/tpl/direntry.tpl
index 175d813c5..015f1102d 100755
--- a/view/tpl/direntry.tpl
+++ b/view/tpl/direntry.tpl
@@ -23,7 +23,7 @@
<div class="contact-photo-wrapper" id="directory-photo-wrapper-{{$entry.hash}}" >
<div class="contact-photo" id="directory-photo-{{$entry.hash}}" >
<a href="{{$entry.profile_link}}" class="directory-profile-link" id="directory-profile-link-{{$entry.hash}}" >
- <img class="directory-photo-img" src="{{$entry.photo}}" alt="{{$entry.alttext}}" title="{{$entry.alttext}}" />
+ <img class="directory-photo-img" src="{{$entry.photo}}" alt="{{$entry.alttext}}" title="{{$entry.alttext}}" loading="lazy"/>
</a>
</div>
</div>
diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl
index 4e496b511..36543ccfa 100755
--- a/view/tpl/jot.tpl
+++ b/view/tpl/jot.tpl
@@ -1,6 +1,6 @@
<input id="invisible-wall-file-upload" type="file" name="files" style="visibility:hidden;position:absolute;top:-50;left:-50;width:0;height:0;" multiple>
<input id="invisible-comment-upload" type="file" name="files" style="visibility:hidden;position:absolute;top:-50;left:-50;width:0;height:0;" multiple>
-<form id="profile-jot-form" action="{{$action}}" method="post" class="acl-form" data-form_id="profile-jot-form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}'>
+<form id="profile-jot-form" action="{{$action}}" method="post" class="acl-form" data-form_id="profile-jot-form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}' data-bang='{{$bang}}'>
{{$mimeselect}}
{{$layoutselect}}
{{if $id_select}}
diff --git a/view/tpl/micropro_img.tpl b/view/tpl/micropro_img.tpl
index 98f33d119..5bfca615f 100755
--- a/view/tpl/micropro_img.tpl
+++ b/view/tpl/micropro_img.tpl
@@ -1 +1 @@
-<div class="contact-block-div{{if $class}} {{$class}}{{/if}}"><a class="contact-block-link{{if $class}} {{$class}}{{/if}}{{if $click}} fakelink{{/if}}" href="{{if $click}}#{{else}}{{$url}}{{/if}}" {{if $click}}onclick="{{$click}}"{{/if}}><img class="contact-block-img{{if $class}} {{$class}}{{/if}}" src="{{$photo}}" title="{{$title}}" alt="" />{{if $perminfo}}{{include "connstatus.tpl"}}{{/if}}</a></div>
+<div class="contact-block-div{{if $class}} {{$class}}{{/if}}"><a class="contact-block-link{{if $class}} {{$class}}{{/if}}{{if $click}} fakelink{{/if}}" href="{{if $click}}#{{else}}{{$url}}{{/if}}" {{if $click}}onclick="{{$click}}"{{/if}}><img class="contact-block-img{{if $class}} {{$class}}{{/if}}" src="{{$photo}}" title="{{$title}}" alt="" loading="lazy" />{{if $perminfo}}{{include "connstatus.tpl"}}{{/if}}</a></div>
diff --git a/view/tpl/notifications_widget.tpl b/view/tpl/notifications_widget.tpl
index abfc922f2..1a24ca7c4 100644
--- a/view/tpl/notifications_widget.tpl
+++ b/view/tpl/notifications_widget.tpl
@@ -142,17 +142,17 @@
{{$no_notifications}}<span class="jumping-dots"><span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span></span>
</div>
<div id="nav-notifications-template" rel="template">
- <a class="list-group-item clearfix notification {6}" href="{0}" title="{13}" data-b64mid="{7}" data-notify_id="{8}" data-thread_top="{9}" data-contact_name="{2}" data-contact_addr="{3}" data-when="{5}">
- <img class="menu-img-3" src="{1}">
- <span class="contactname">{2} <span class="font-weight-normal text-muted">{3}</span></span>
- <span class="dropdown-sub-text">{4}</span><br>
- <span class="dropdown-sub-text notifications-autotime" title="{5}">{5}</span>
+ <a class="list-group-item text-decoration-none text-darkclearfix notification {6}" href="{0}" title="{13}" data-b64mid="{7}" data-notify_id="{8}" data-thread_top="{9}" data-contact_name="{2}" data-contact_addr="{3}" data-when="{5}">
+ <img class="menu-img-3" data-src="{1}" loading="lazy">
+ <div class="contactname"><span class="text-dark font-weight-bold">{2}</span> <span class="text-muted">{3}</span></div>
+ <span class="text-muted">{4}</span><br>
+ <span class="text-muted notifications-autotime" title="{5}">{5}</span>
</a>
</div>
<div id="nav-notifications-forums-template" rel="template">
- <a class="list-group-item clearfix notification notification-forum" href="{0}" title="{4} - {3}" data-b64mid="{7}" data-notify_id="{8}" data-thread_top="{9}" data-contact_name="{2}" data-contact_addr="{3}" data-b64mids='{12}'>
+ <a class="list-group-item text-decoration-none clearfix notification notification-forum" href="{0}" title="{4} - {3}" data-b64mid="{7}" data-notify_id="{8}" data-thread_top="{9}" data-contact_name="{2}" data-contact_addr="{3}" data-b64mids='{12}'>
<span class="float-right badge badge-secondary">{10}</span>
- <img class="menu-img-1" src="{1}">
+ <img class="menu-img-1" data-src="{1}" loading="lazy">
<span class="">{2}</span>
<i class="fa fa-{11} text-muted"></i>
</a>
@@ -160,13 +160,13 @@
<div id="notifications" class="border border-bottom-0 rounded navbar-nav collapse">
{{foreach $notifications as $notification}}
<div class="rounded list-group list-group-flush collapse {{$notification.type}}-button">
- <a id="notification-link-{{$notification.type}}" class="collapsed list-group-item notification-link" href="#" title="{{$notification.title}}" data-target="#nav-{{$notification.type}}-sub" data-toggle="collapse" data-sse_type="{{$notification.type}}">
+ <a id="notification-link-{{$notification.type}}" class="collapsed list-group-item text-decoration-none notification-link" href="#" title="{{$notification.title}}" data-target="#nav-{{$notification.type}}-sub" data-toggle="collapse" data-sse_type="{{$notification.type}}">
<i class="fa fa-fw fa-{{$notification.icon}}"></i> {{$notification.label}}
<span class="float-right badge badge-{{$notification.severity}} {{$notification.type}}-update"></span>
</a>
<div id="nav-{{$notification.type}}-sub" class="list-group list-group-flush border border-left-0 border-top-0 border-right-0 collapse notification-content" data-parent="#notifications" data-sse_type="{{$notification.type}}">
{{if $notification.viewall}}
- <a class="list-group-item text-dark" id="nav-{{$notification.type}}-see-all" href="{{$notification.viewall.url}}">
+ <a class="list-group-item text-decoration-none text-dark" id="nav-{{$notification.type}}-see-all" href="{{$notification.viewall.url}}">
<i class="fa fa-fw fa-external-link"></i> {{$notification.viewall.label}}
</a>
{{/if}}
diff --git a/view/tpl/photo_top.tpl b/view/tpl/photo_top.tpl
index a86aa7f80..16862a8d6 100755
--- a/view/tpl/photo_top.tpl
+++ b/view/tpl/photo_top.tpl
@@ -1,4 +1,4 @@
<a href="{{$photo.link}}" id="photo-top-photo-link-{{$photo.id}}" title="{{$photo.title}}">
- <img src="{{$photo.src}}" alt="{{if $photo.album.name}}{{$photo.album.name}}{{elseif $photo.desc}}{{$photo.desc}}{{elseif $photo.alt}}{{$photo.alt}}{{else}}{{$photo.unknown}}{{/if}}" title="{{$photo.title}}" id="photo-top-photo-{{$photo.id}}" />
+ <img src="{{$photo.src}}" alt="{{if $photo.album.name}}{{$photo.album.name}}{{elseif $photo.desc}}{{$photo.desc}}{{elseif $photo.alt}}{{$photo.alt}}{{else}}{{$photo.unknown}}{{/if}}" title="{{$photo.title}}" id="photo-top-photo-{{$photo.id}}" loading="lazy" />
</a>
diff --git a/view/tpl/search_item.tpl b/view/tpl/search_item.tpl
index 40341a840..3e986ea21 100755
--- a/view/tpl/search_item.tpl
+++ b/view/tpl/search_item.tpl
@@ -23,7 +23,7 @@
<div class="p-2 clearfix wall-item-head{{if !$item.title && !$item.event && !$item.photo}} rounded-top{{/if}}{{if $item.is_new && !$item.event && !$item.is_comment}} wall-item-head-new{{/if}}" >
<div class="wall-item-info" id="wall-item-info-{{$item.id}}" >
<div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}}" id="wall-item-photo-wrapper-{{$item.id}}">
- <img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" data-toggle="dropdown" />
+ <img src="{{$item.thumb}}" class="fakelink wall-item-photo{{$item.sparkle}} u-photo p-name" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" data-toggle="dropdown" loading="lazy" />
{{if $item.thread_author_menu}}
<i class="fa fa-caret-down wall-item-photo-caret cursor-pointer" data-toggle="dropdown"></i>
<div class="dropdown-menu">