PageSourceSearch

https://newhavenfuneralcentre.com/files/admin/js/SiteAnnouncementRenderController.js

js newhavenfuneralcentre.com collected 2026-09-26 02:37:21 UTC 4,611 bytes, 122 lines download raw bytes

1/**
2 * Controller for managing dynamic fields.
3 */
4YUI().use("scriptlibrary.Request", "event", "node", "cookie", "Admin.SiteAnnouncementRenderController.styles", function(Y) {
5    "use strict";
6    
7    var Request = Y.scriptlibrary.Request;
8
9    var SiteAnnouncementRenderController = function(contextPath) {
10        var me = this,
11            dismissedAnnouncementsMap = {},
12            activeAnnouncements = {},
13            container = Y.one(".site-announcements-container");
14        
15        var initialize = function() {
16            if (!container) {
17                container = Y.Node.create("<div class=\"site-announcements-container\"></div>");
18                container.hide();
19                Y.one("body").appendChild(container);
20            }
21            else {
22                container.hide();
23            }
24            
25            var dismissedAnnouncementIds = Y.Cookie.get("site-dismissed-announcement-ids"),
26                dismissedAnnouncements = dismissedAnnouncementIds
27                    ? dismissedAnnouncementIds.split(",")
28                    : [];
29            
30            Y.Array.each(dismissedAnnouncements, function(id) {
31                dismissedAnnouncementsMap[id] = true;
32            });
33            
34            loadAnnouncements();
35        };
36        
37        var loadAnnouncements = function() {
38            if(location.pathname.includes("editpage.htm")){
39                const params = new URLSearchParams(window.location.search)
40                const hostname = params.get('hostname');
41                new Request(contextPath + "/site-announcements?preview=1&host="+hostname)
42                    .get()
43                    .then(Request.processCmsResult)
44                    .then(announcementsLoaded)
45                    .then(undefined, function (error) {
46                        if (console && console.log) {
47                            console.log(error);
48                        }
49                    });
50            } else {
51                new Request(contextPath + "/site-announcements")
52                    .get()
53                    .then(Request.processCmsResult)
54                    .then(announcementsLoaded)
55                    .then(undefined, function (error) {
56                        if (console && console.log) {
57                            console.log(error);
58                        }
59                    });
60            }
61        };
62        
63        var attachAnnouncement = function(announcement) {
64            activeAnnouncements[announcement.id] = true;
65            
66            if (dismissedAnnouncementsMap[announcement.id]) {
67                return;
68            }
69            
70            var announcementContainer = Y.Node.create(
71                "<div class=\"site-announcement\">" + 
72                    "<div class=\"site-announcement-message\"></div>" +
73                    "<div class=\"dismiss-announcement-button\">X</div>" +
74                "</div>");
75        
76            announcementContainer.one(".site-announcement-message").setHTML(announcement.message);
77            
78            announcementContainer.setAttribute("data-announcement-id", announcement.id);
79            
80            container.appendChild(announcementContainer);
81            
82            announcementContainer.one(".dismiss-announcement-button").on("click", function() {
83                announcementContainer.hide();
84                dismissedAnnouncementsMap[announcement.id] = true;
85                updateCookieValue();
86            });
87        };
88        
89        var updateCookieValue = function() {
90            var dismissed = [];
91            
92            Y.Object.each(dismissedAnnouncementsMap, function(_, key) {
93                if (activeAnnouncements[key]) {
94                    dismissed.push(key);
95                }
96            });
97            
98            Y.Cookie.set(
99                "site-dismissed-announcement-ids",
100                dismissed.length ? dismissed.join(",") : "",
101                { path: contextPath + "/" , "Max-Age": 31536000 });
102        };
103        
104        var announcementsLoaded = function(announcements) {
105            container.empty();
106
107            Y.Array.each(announcements, attachAnnouncement);
108            
109            if (announcements.length) {
110                container.show();
111            }
112            
113            updateCookieValue();
114        };
115        
116        initialize();
117    };
118    
119    Y.on("domready", function () {
120        new SiteAnnouncementRenderController(contextPath);
121    });
122});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.