PageSourceSearch

https://artsandculturecentre.com/gander/Common/Widgets/instagramFeedWebWidget.js?_=7.92.0

js artsandculturecentre.com collected 2026-10-02 08:13:57 UTC 6,634 bytes, 198 lines download raw bytes

1// JavaScript Document
2
3function instagramFeedWidget(widgetId, widgetParams, articleContext) {
4	WidgetMaster.call(this, widgetId, widgetParams, articleContext);
5}
6
7instagramFeedWidget.prototype = Object.create(WidgetMaster.prototype);
8instagramFeedWidget.prototype.constructor = instagramFeedWidget;
9
10instagramFeedWidget.prototype.render = function () {
11	var widgetDiv = document.getElementById(this.widgetId);
12	var tagName = "";
13    
14	if (widgetDiv) {
15		this.renderWrapperContainer(widgetDiv);
16    
17		tagName = this.widgetParams["tag_name"];    
18		var userID = this.widgetParams["userID"];
19		var token = this.widgetParams["access_token"];
20		var count = "";
21		if(this.widgetParams["post_count"])
22			count = this.widgetParams["post_count"];
23		else
24			count = 21; //By default display 21 pics. Chose 21 since divisible by 3 and all carousel slides are full
25
26		if (token && (tagName || userID)) {
27			var callbackScript = document.createElement("script");
28			callbackScript.setAttribute("onload","$(\".instagram-holder .carousel\").carousel({interval: 5000,pause: \"hover\"})"); //Get the carousel moving
29
30			if(userID != "")
31				callbackScript.setAttribute("src", "https://api.instagram.com/v1/users/" + userID + "/media/recent/?access_token=" + token + "&callback=drawInstagramFeed&count=" + count);
32			else if(tagName != "")
33				callbackScript.setAttribute("src", "https://api.instagram.com/v1/tags/" + tagName + "/media/recent?access_token=" + token + "&callback=drawInstagramFeed&count=" + count);
34
35			var feedParent = document.createElement("div");
36			feedParent.setAttribute("class", "instagram-holder");
37			feedParent.setAttribute("id", "instagram-holder");
38			var feed = document.createElement("ul");
39			feed.setAttribute("class", "instagram-scroller clearfix list-unstyled");
40			feed.setAttribute("id", "instagram-block-scroller");
41
42			this.wrapperContainer.appendChild(callbackScript);
43			this.wrapperContainer.appendChild(feedParent);
44			feedParent.appendChild(feed);
45		}
46	}
47    
48	window.getTagName = function foo() {
49		return tagName;
50	};
51}
52
53instagramFeedWidget.prototype.renderWrapperContainer = function (parentElement) {
54	this.wrapperContainer = document.createElement("div");
55	if (this.widgetParams["css_id"]) {
56		this.wrapperContainer.id = this.widgetParams["css_id"];
57	}
58	if (this.widgetParams["css_class"]) {
59		this.wrapperContainer.setAttribute("class", this.widgetParams["css_class"]);
60	}
61	if (this.widgetParams["css_style"]) {
62		this.wrapperContainer.setAttribute("style", this.widgetParams["css_style"]);
63	}
64	parentElement.appendChild(this.wrapperContainer);
65};
66
67function drawInstagramFeed(obj) {
68
69	var instagramJSON = JSON.stringify(obj);
70	var instagramImages = JSON.parse(instagramJSON);
71
72	var URLsmallImage;
73	var URLlargeImage;
74	var smallImage;
75	var largeImage;
76	var imageCaption;
77	var tagName = getTagName();
78    
79	var divSlides = document.createElement("div");
80	divSlides.setAttribute("class", "carousel-inner");
81    
82	var ol = document.createElement("ol");
83	ol.setAttribute("class", "carousel-indicators");
84    
85	var ulCont = document.createElement("ul");
86	ulCont.setAttribute("class", "list-inline");
87	var entered = false;
88    
89	for (var i=0; i < instagramImages.data.length; i++) {
90    
91		if(tagName != "")
92		{
93			var showImage = false;
94			for(var j = 0; j < instagramImages.data[i].tags.length; j++)
95			{
96				var tag = instagramImages.data[i].tags[j];
97				if(tag == tagName)
98					showImage = true;
99			}
100    
101			if(!showImage)
102				continue;
103		}
104    
105		URLsmallImage = instagramImages.data[i].images.thumbnail.url; //used for the carousel    
106		URLlargeImage = instagramImages.data[i].images.standard_resolution.url; //used for the hyperlink in the image to expand
107    
108		smallImage = "https://" + URLsmallImage.substr(URLsmallImage.indexOf('://')+3);
109		largeImage = "https://" + URLlargeImage.substr(URLlargeImage.indexOf('://')+3);
110    
111		imageCaption = "";
112		if(instagramImages.data[i].caption != null){
113			imageCaption = instagramImages.data[i].caption.text;
114		}
115    
116		var feedListItem = document.createElement("li");
117		feedListItem.setAttribute("class","instagram-image");
118		feedListItem.setAttribute("id","instagram-image" + i);
119    
120		var feedImageLink = document.createElement("a");
121		feedImageLink.setAttribute("href",largeImage);
122		feedImageLink.setAttribute("rel","prettyPhoto[pp_gal]");
123		feedImageLink.setAttribute("title", imageCaption);
124		feedListItem.appendChild(feedImageLink);
125    
126		var feedImageThumb = document.createElement("img");
127		feedImageThumb.setAttribute("src", smallImage);
128		feedImageThumb.setAttribute("alt", imageCaption);    
129		feedImageLink.appendChild(feedImageThumb);
130
131		ulCont.appendChild(feedListItem);
132    
133		if((i+1) % 3 == 0) //Only displaying 3 images per carousel slide
134		{
135			entered = true; //Flag to see if we created at least one slide
136			var divItem = document.createElement("div");
137			if(i == 2)
138			{
139				divItem.setAttribute("class", "item active");
140    
141				var li = document.createElement("li");
142				li.setAttribute("class", "active");
143				ol.appendChild(li);    
144			}
145			else
146			{
147				divItem.setAttribute("class", "item");
148    
149				var li = document.createElement("li");
150				ol.appendChild(li);    
151			}
152			var cln = ulCont.cloneNode(true);
153			divItem.appendChild(cln);
154			divSlides.appendChild(divItem);
155			ulCont.innerHTML = "";    
156		}
157	}
158    
159	if(!entered && ulCont.innerHTML != "")
160	{
161		var divItem = document.createElement("div");
162		divItem.setAttribute("class", "item active");
163    
164		var li = document.createElement("li");
165		li.setAttribute("class", "active");
166		ol.appendChild(li);    
167    
168		var cln = ulCont.cloneNode(true);
169		divItem.appendChild(cln);
170		divSlides.appendChild(divItem);
171		ulCont.innerHTML = "";    
172	}
173    
174	drawPics(divSlides,ol);
175}
176
177function drawPics(divSlides,ol) {
178	var car = document.createElement("div");
179	car.setAttribute("class", "carousel slide");
180	car.setAttribute("id", "carousel-example-generic");
181	car.setAttribute("data-ride", "carousel");
182	document.getElementById("instagram-holder").appendChild(car);    
183    
184	car.appendChild(ol);    
185	car.appendChild(divSlides);
186    
187	var mycode = "  <a class=\"left carousel-control\" href=\"#carousel-example-generic\" role=\"button\" data-slide=\"prev\">\
188					<span class=\"fas fa-chevron-left\" aria-hidden=\"true\"></span>\
189					<span class=\"sr-only\">Previous</span>\
190				  </a>\
191				  <a class=\"right carousel-control\" href=\"#carousel-example-generic\" role=\"button\" data-slide=\"next\">\
192					<span class=\"fas fa-chevron-right\" aria-hidden=\"true\"></span>\
193					<span class=\"sr-only\">Next</span>\
194				  </a>";
195    
196	car.innerHTML += mycode;    
197}
198

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.