Skip to content

Commit 53669cd

Browse files
Iankodjpepinho24
authored andcommitted
feat: add centralized announcements #149
1 parent 0686e12 commit 53669cd

File tree

4 files changed

+89
-31
lines changed

4 files changed

+89
-31
lines changed

_assets/css/_styles.scss

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -332,32 +332,22 @@ nav.TK-Nav, .PRGS-PairNav {
332332

333333
// Ribbon Announcement
334334

335-
.SiteRibbon-text,
336-
.SiteRibbon-CTA {
337-
display: inline;
338-
vertical-align: middle;
339-
}
340-
341-
.SiteRibbon {
342-
margin-top: -95px;
343-
top: 0;
344-
position: relative;
345-
padding: 20px 0 18px 0;
346-
font-family: FaktSlabPro,Arial,Helvetica,sans-serif;
347-
font-weight: 300;
348-
font-size: 16px;
349-
line-height: 1.2;
350-
text-align: center;
351-
z-index: 50000;
352-
color: #000;
353-
background-color: #ffda3f;
335+
#announcement-banner {
336+
width: 100%;
337+
position: fixed;
338+
z-index: 40000;
339+
left: 0;
340+
top: 61px;
354341

355-
.container {
356-
position: relative;
357-
}
342+
.close-button-container {
343+
position: absolute;
344+
top: 19px;
345+
right: 16px;
346+
z-index: 100000;
358347

359-
+ nav.TK-Nav, + .PRGS-PairNav {
360-
margin-top: 0;
348+
&:hover {
349+
cursor: pointer;
350+
}
361351
}
362352
}
363353

_assets/js/announcement.js

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,57 @@
11
$(document).ready(function () {
2-
$('.js-r1dt').insertBefore($('#js-tlrk-nav')).end().show();
2+
var banner = $("#announcement-banner");
3+
var fallbackContent = $("#announcement-fallback").html();
4+
var content = $("#announcement-content");
5+
var button = $("#announcement-banner .close-button-container");
6+
var url = content.data("url");
7+
var storageKey = "T_DOCUMENTATION_announcement".toUpperCase();
8+
9+
// detect any user interaction
10+
$("body").one("mousemove scroll touchstart", onUserInteraction);
11+
12+
function onUserInteraction () {
13+
fetchAnnouncement();
14+
}
15+
16+
function fetchAnnouncement () {
17+
$.get(url).done(onSuccess).fail(onFail);
18+
}
19+
20+
function onSuccess (data) {
21+
tryRenderAnnouncement(data);
22+
}
23+
24+
function onFail () {
25+
if (fallbackContent) {
26+
tryRenderAnnouncement(fallbackContent);
27+
}
28+
}
29+
30+
function tryRenderAnnouncement (html) {
31+
if (!checkStorage(hash($(html).text()))) {
32+
content.append(html);
33+
banner.show();
34+
button.one("click", hideAnnouncement);
35+
}
36+
}
37+
38+
function hideAnnouncement () {
39+
saveStorage(hash(content.text()));
40+
content.html("");
41+
banner.hide();
42+
}
43+
44+
function checkStorage (hash) {
45+
var item = localStorage.getItem(storageKey);
46+
47+
return hash === item;
48+
}
49+
50+
function saveStorage (hash) {
51+
localStorage.setItem(storageKey, hash);
52+
}
53+
54+
function hash (content) {return "announcement-" + content.trim().split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0) };
355
});
56+
57+

_includes/announcement.html

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1-
<div class="SiteRibbon js-r1dt" style="display:none;"><div class="container">
2-
<span class="SiteRibbon-text">
3-
{{page.announcement}}
4-
</span></div></div>
1+
<div id="announcement-banner" style="display: none">
2+
<div id="announcement-content" data-url="{%if page.announcementUrl%}{{page.announcementUrl}}{%else%}https://docs.telerik.com/kendo-api/announcements{{site.baseurl}}{%endif%}">
3+
</div>
4+
<div class="close-button-container">
5+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 27.23 26.588">
6+
<g fill="none" stroke="rgba(0,0,0,0.5)" stroke-linecap="round" stroke-width="2">
7+
<path d="M1.414 1.414l23.759 23.759M25.815 1.414L2.056 25.173"></path>
8+
</g>
9+
</svg>
10+
</div>
11+
</div>
12+
{% if page.announcement %}
13+
<script id="announcement-fallback" type="text/fallback-announcement">
14+
<style>.Ribbon { z-index: 50000; position: relative; padding: 20px 2% 18px; text-align: center; color: #000; background-color: #ffda3f; font: 300 20px/1.2 FaktSlabPro, Arial, Helvetica, sans-serif }</style>
15+
<aside class="Ribbon">{{page.announcement}}</aside>
16+
</script>
17+
{% endif %}
18+

_layouts/default.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
{% include _head.html %}
55

66
<body role="document" class="layout-{{ page.layout }} brand">
7-
{% if page.announcement %}{% include announcement.html %}{% endif %}
87
{% include nav.html %}
98
{% include _variables.html %}
9+
{% include announcement.html %}
1010
<div id="content">
1111
{{ content }}
1212
<div id="push" class="pt-60 pb-40"></div> <!-- Sticky Footer -->
@@ -22,7 +22,7 @@
2222
{% if site.enable_dojo == true %} <script src="{{site.baseurl}}/assets/dojo.js?{{randomNumber}}" defer></script> {% endif %}
2323
{% if page.kind == "api" %} <script src="{{site.baseurl}}/assets/api-toc.js?{{randomNumber}}" defer></script>{% endif %}
2424
{% if page.sdk_example == true %}<script src="{{site.baseurl}}/assets/sdk-browser.js?{{randomNumber}}" defer></script>{% endif %}
25-
{% if page.announcement %}<script src="{{site.baseurl}}/assets/announcement.js?{{randomNumber}}" defer></script>{% endif %}
25+
<script src="{{site.baseurl}}/assets/announcement.js?{{randomNumber}}" defer></script>
2626
{% include footer.html %}
2727
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-language="en" type="text/javascript" charset="UTF-8" {% if site.progress_hosting == true %} data-domain-script="f9397248-1dbe-47fc-9dbf-c50e7dd51096" {% else %} data-domain-script="3dfce4f2-dab6-4128-9f33-df7e0597da82" {%endif%} async></script>
2828
{% include _gtm.html %}

0 commit comments

Comments
 (0)