CINXE.COM

Dunedin Santa Parade 2022 | Dunedin Public Libraries

<!DOCTYPE html> <html lang="en"> <head prefix="og: http://ogp.me/ns#"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Dunedin Santa Parade 2022 | Dunedin Public Libraries</title><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><link href="/favicon.ico" type="image/x-icon" rel="icon" /><link href="/favicon.ico" type="image/x-icon" rel="shortcut icon" /><meta recollect="1.5" /><meta name="google-site-verification" content="KoFxpUQwinV_Vi2E7XtEuU2Kuxsc5FoAOQqkETXB__M" /><meta property="og:url" content="https://dunedin.recollect.co.nz/nodes/view/217145" /><meta property="og:type" content="website" /> <link rel="stylesheet" type="text/css" href="/css/jquery-ui-1.13.2/jquery-ui.css?1724292971" /> <link rel="stylesheet" type="text/css" href="/css/jquery-ui-1.13.2/jquery-ui.structure.css?1724292971" /> <link rel="stylesheet" type="text/css" href="/css/jquery-ui-1.13.2/jquery-ui.theme.css?1724292971" /> <link rel="stylesheet" type="text/css" href="/css/jquery.mCustomScrollbar.css?1724292971" /> <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700:latin" /> <link rel="stylesheet" type="text/css" href="/css/recollect3.css?1732140683" /> <script type="text/javascript" nonce="63e3a91113239e4c0fac46da26473ff1"> //<![CDATA[ var jsRoot = "/"; var themedCSS = "dunedin"; var jsURL = "https://dunedin.recollect.co.nz/"; var siteTitle = "Dunedin Public Libraries"; //]]> </script><script type="text/javascript" src="https://www.google.com/recaptcha/api.js?render=6LdtysMUAAAAAL2VgG5vRBJq4x8tyqUgaDGBfWzS" nonce="63e3a91113239e4c0fac46da26473ff1"></script><script type="text/javascript" src="/js/browser-update.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/jquery-3.5.1.min.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/jquery-ui-1.13.2/jquery-ui.min.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/jquery.mCustomScrollbar.concat.min.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/jquery-scroll.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/recollect3.js?1731540133" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/jquery-migrate-3.4.0.min.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script><script nonce=63e3a91113239e4c0fac46da26473ff1 type='text/javascript'> var cpopapidata = 'eyIxIjp7ImlkIjoiNjRkMmZhMWIyZTEyNTc1OTI0Mjk2OSIsInNob3dfcG9wdXAiOiIxIiwicG9wdXBfcG9zaXRpb24iOiIxIiwicG9wdXBfdGl0bGVDb2xvciI6IiMwMDAwMDAiLCJwb3B1cF9iYWNrZ3JvdW5kQ29sb3IiOiIjMDAwMDAwIiwiYnV0dG9uX2NvbG9yIjoiIzAwMDAwMCIsIm1vcmVCdXR0b25fdGV4dENvbG9yIjoiIzAwMDAwMCIsInNob3dzX3doZW4iOiIwIiwicG9wdXBfY2xvc2VJY29uQ29sb3IiOiIjMDAwMDAwIiwicG9wdXBfYnV0dG9uVGV4dENvbG9yIjoiIzAwMDAwMCIsInNob3dfb25fcGFnZXMiOiIwIiwicGF0aG5hbWUiOlsiXC9jcm93ZHNvdXJjZSJdfX0='; </script><script type="text/javascript" src="/js/custompopup/cpop.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script><script type="text/javascript" src="https://maps.google.com/maps/api/js?key=AIzaSyAe8K9rv_LzsZfpUyjUnesYzaUutdor4uM" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/jquery.jeditable.min.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <script type="text/javascript" src="/js/jquery.popupoverlay.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <link rel="stylesheet" type="text/css" href="/css/toastr/toastr.min.css?1724292971" /> <script type="text/javascript" src="/js/toastr/toastr.min.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script> <meta property="og:title" content="Dunedin Santa Parade 2022" /> <meta property="og:type" content="website" /> <meta property="og:site_name" content="Dunedin Public Libraries" /> <meta property="og:description" content="Date taken: 4 December 2022 | Read the full record details for Photo: Dunedin Santa Parade 2022" /> <meta property="og:image" content="https://dunedin.recollect.co.nz/assets/display/453179-max?u=e4c643622cb6cf0e1051a08dbaf707d3" /> <meta property="og:image:type" content="image/jpeg" /> <meta property="og:image:width" content="6000" /> <meta property="og:image:height" content="4000" /> <link rel="stylesheet" type="text/css" href="/font-awesome/4.3.0/css/font-awesome.min.css?1724292971" /><link rel="stylesheet" type="text/css" href="/theme/dunedin/css/page/Nodes/view.css?1724292971" /><script type="text/javascript" src="/theme/dunedin/js/page/Nodes/view.js?1731013313" nonce="63e3a91113239e4c0fac46da26473ff1"></script><link rel="stylesheet" type="text/css" href="/theme/dunedin/css/dunedin.css?1731974497" /><script type="text/javascript" src="/theme/dunedin/js/dunedin.js?1724292971" nonce="63e3a91113239e4c0fac46da26473ff1"></script><link rel="stylesheet" type="text/css" href="/css/print.css?1724292971" media="print" /><link rel="stylesheet" type="text/css" href="/css/mobile.css?1732140683" /> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <!-- #R1X-9002 Adding global functions for Maps & Recaptcha to body tag --> <body data-recollect-page="-nodes-view-217145" data-recollect-google-map-api-key="AIzaSyAe8K9rv_LzsZfpUyjUnesYzaUutdor4uM" data-sitekey="6LdtysMUAAAAAL2VgG5vRBJq4x8tyqUgaDGBfWzS"> <div id="popupoverlay"></div> <script nonce="63e3a91113239e4c0fac46da26473ff1" type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-34575327-23']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; //ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> <script async nonce="63e3a91113239e4c0fac46da26473ff1" src="https://www.googletagmanager.com/gtag/js?id=G-GRN23Z8N5R"></script> <script nonce="63e3a91113239e4c0fac46da26473ff1"> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-GRN23Z8N5R'); // Capture User Level for Google Analytics gtag('set', 'user_properties', { 'user_level': 'Guest' }); </script> <div id="wrap"> <div id="main" role='main'> <a href="#toolbox" class="visuallyhidden">Skip to toolbar</a><div id="menu_bar" role="navigation"><div id="client_menu" class="sprite"><ul><li class="home"><a href="https://dunedin.recollect.co.nz/" class="">Home</a></li><li class="browse"><a href="https://dunedin.recollect.co.nz/nodes/browse" class="">Browse All </a></li><li class="search"><a href="https://dunedin.recollect.co.nz/nodes/definesearch" class="active">Search</a></li><li class="history"><a href="https://dunedin.recollect.co.nz/pages/history" class="">My History</a></li><li class="profile"><a href="https://dunedin.recollect.co.nz/users/login" class="">Login</a></li><li class="contribute"><a href="https://dunedin.recollect.co.nz/contributes" class="">Contribute</a></li><li class="crowdsource"><a href="https://dunedin.recollect.co.nz/crowdsource" class="">Crowdsource</a></li><li class="info"><a class=" void-pointer" tabindex="0" role="button">More</a></li><li class="contact"><a href="https://dunedin.recollect.co.nz/pages/contact" class="">Contact Us</a></li><li class="bookface"><a href="https://www.facebook.com/dunedin.public.libraries" class="">Facebook</a></li></ul></div></div><div id="info_menu"><div class="info_menu_inner"><ul><li><a href="https://dunedin.recollect.co.nz/pages/contact" >Contact Us</a></li><li><a href="https://dunedin.recollect.co.nz/pages/newspapers" >Newspaper Index</a></li><li><a href="https://dunedin.recollect.co.nz/pages/abbv" >Abbreviation Help</a></li><li><a href="https://www.dunedinlibraries.govt.nz/home" class="extlink">Library</a></li><li><a href="https://dunedin.recollect.co.nz/users/login" >Login</a></li><li><a href="https://dunedin.recollect.co.nz/users/register" >Register</a></li></ul></div></div><span id="nodeID" style="display:none;">217145</span><script nonce="63e3a91113239e4c0fac46da26473ff1" > var texttype = 'METADATA'; var textedit = '1'; var textview = '1'; var initText = '1'; </script> <script type="text/javascript" nonce="63e3a91113239e4c0fac46da26473ff1"> //<![CDATA[ var autoFadeAway = 2000; //]]> </script><div id="toolbox"><a id="toggle-toolbox" class="sprite void-pointer" title="Toggle toolbox display" tabindex="0" role="button">Open/Close Toolbox</a><div id="searchbacknextinheader" class="sprite clearfix"><div id="back-forward"></div></div><div class="nodeactions sprite"><ul></ul></div><div id="thezone"><div role="heading" class="portlet-header">Format: Photo</div><div id="imagetaglist" class="portlet"><div role="heading" aria-level="3" class="portlet-header"><span class="expandcolapse sprite"></span>Image Tags</div><a href="https://dunedin.recollect.co.nz/users/login" title="Login to add a tag" class="addtag2 sprite">Add</a><div class="portlet-content"><div id="showHideTags"><input type="radio" name="data[showHideRadio]" id="ShowHideRadio2" value="2" checked="checked" /> <label class="hide" for="ShowHideRadio2">Show tags<span class="crossed"></span></label> <input type="radio" name="data[showHideRadio]" id="ShowHideRadio3" value="3" /> <label for="ShowHideRadio3">Show tags<span class="ticked" tabindex="0"></span></label></div><span class="nil">no tags yet</span><div id="showHideTagsList" class="listwrap"><ul></ul></div></div></div><div id="back_fwd_links" class="portlet"><div role="heading" aria-level="3" class="portlet-header"><span class="expandcolapse sprite"></span>Linked To</div><div class="portlet-content"><strong>Events</strong><ul><li><a href="https://dunedin.recollect.co.nz/nodes/view/217127" >Santa Parade 2022</a></li></ul></div></div><div id="recollections" class="portlet"><div role="heading" aria-level="3" class="portlet-header"><span class="expandcolapse sprite"></span>Recollections</div><a href="https://dunedin.recollect.co.nz/users/login" class="sprite recadd2" title="Login and tell us more about this photo">Add</a><div class="portlet-content"><span class="nil">no stories yet</span></div></div></div><div id="sharemenu" class="sharemenu"><a href="https://twitter.com/share?url=https%3A%2F%2Fdunedin.recollect.co.nz%2Fnodes%2Fview%2F217145" target="_blank" class="shareme" id="twitter_share"><img src="/img/share_twitter.png?1724292971" alt="Tweet this on Twitter" title="Tweet this on Twitter" /></a><a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fdunedin.recollect.co.nz%2Fnodes%2Fview%2F217145" target="_blank" class="shareme" id="facebook_share"><img src="/img/share_facebook.png?1724292971" alt="Share this on Facebook" title="Share this on Facebook" /></a><a href="https://www.linkedin.com/shareArticle?url=https%3A%2F%2Fdunedin.recollect.co.nz%2Fnodes%2Fview%2F217145" target="_blank" class="shareme" id="linkedin_share"><img src="/img/share_linkedin.png?1724292971" alt="Share this on LinkedIn" title="Share this on LinkedIn" /></a><a href="https://www.tumblr.com/share/link?url=https%3A%2F%2Fdunedin.recollect.co.nz%2Fnodes%2Fview%2F217145" target="_blank" class="shareme" id="tumblr_share"><img src="/img/share_tumblr.png?1724292971" alt="Share this on Tumblr" title="Share this on Tumblr" /></a><a href="mailto:?subject=Sharing%20Dunedin%20Santa%20Parade%202022%20at%20Dunedin%20Public%20Libraries&body= Here's the link: https%3A%2F%2Fdunedin.recollect.co.nz%2Fnodes%2Fview%2F217145&X-Mailer=RECOLLECTshare" id="email_share"><img src="/img/share_email.png?1724292971" alt="Share this via email" title="Share this via email" /></a></div><div id="tools" style=""><div class="butttit">Tools</div><a id="heroz1" class="toolbox_button void-pointer" tabindex="0" role="button">Full size thumbnail</a><a id="heroz2" class="toolbox_button void-pointer" tabindex="0" role="button">Fit to screen</a><a id="heroz3" class="toolbox_button void-pointer" tabindex="0" role="button">Fit to width</a><a id="heroz4" class="toolbox_button void-pointer" tabindex="0" role="button">Fit to height</a><a id="flipper" class="toolbox_button void-pointer" tabindex="0" role="button">Rotate 90 degrees</a><a id="pz_button" class="toolbox_button void-pointer" u="/assets/view" tabindex="0" role="button">Zoom to 100%</a><div id="zoom"><div id="zoomer"></div><div id="zoom_wrap"><div id="zoom_slide"></div></div></div><a id="OCRpopup" class="toolbox_button void-pointer" u="/nodes/ocrtxt" tabindex="0" role="button">Show Text / Transcription</a><a id="searchpop" class="toolbox_button void-pointer" tabindex="0" role="button">Show keyword hits</a><a id="showKeyHits" class="toolbox_button void-pointer" tabindex="0" role="button">Highlight keywords</a><a href="https://dunedin.recollect.co.nz/nodes/download/217145" class="toolbox_button download downloadwiz" aid="0">Download</a><a href="https://dunedin.recollect.co.nz/users/bookmarks/add:217145" class="toolbox_button add">Add to My Collection</a><a href="https://dunedin.recollect.co.nz/messages/create/217145" class="toolbox_button contact">Contact us about this</a><a class="toolbox_button cite void-pointer" tabindex="0" role="button">Citation for this item</a></div></div><div id="main_content_wrap"><div id="header"><div id="client_logo"><a href="http://www.dunedinlibraries.govt.nz/home" ><img src="/theme/dunedin/img/logo.png?1724292971" title="" alt="" /></a></div><div class="headerText pad"><span class="headerTextA">Dunedin Public Libraries and the Dunedin Lebanese Community Present:</span><br><span class="headerTextB">HE PURAPURA MARARA &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="headerTextC">SCATTERED SEEDS</span></div><div id="topright"><a href="http://www.cedarsoflebanon.org.nz/" target="_blank"><img src="/theme/dunedin/img/cedars-logo_circle.png?1724292971" title="" alt="" /></a></div><div id="login_logout" class="notloggedin"><span id="welcome">Welcome <a href="https://dunedin.recollect.co.nz/users/login" >Guest</a></span><span id="logout"><a href="https://dunedin.recollect.co.nz/users/login" class ="sprite">Login</a></span></div></div><div id="rMenuCont"><div id="rMenuBurg"><span class="sprite"></span></div><div id="rMenuCent"><div id="client_logo_responsive"><a href="/" ><img src="/theme/dunedin/img/logo.mobile.png?1724292971" title="" alt="" /></a></div></div><div id="rMenuSearch"><span class="sprite"></span></div></div><div id="main_content" role="main"><div class="the-header sprite"><h1>Dunedin Santa Parade 2022</h1></div><div id="sidebar"><a id="toggle-sidebar" class="sprite void-pointer" title="Toggle display" tabindex="0" role="button">Expand/collapse</a><div id="sidebar-scroll"><div class="portlet"><div role="heading" aria-level="3" class="portlet-header"><span class="expandcolapse sprite"></span>Details</div><div class="portlet-content"><span class="metadata"><span class="titlelabel">Date taken</span><span title="" alt="">4 December 2022</span></span><span class="metadata"><span class="titlelabel">Photographer</span><a href="https://dunedin.recollect.co.nz/nodes/browse/?meta=eyIxNCI6WyJKaWxsIEJvd2llIl0sIjQxOCI6WyJKaWxsIEJvd2llIl19" class="metadatalookup" title="Find all Photographer = Jill Bowie">Jill Bowie</a></span></div></div><div class="portlet"><div role="heading" aria-level="3" class="portlet-header"><span class="expandcolapse sprite"></span>Relates to</div><div class="portlet-content"><span class="metadata"><span class="titlelabel">Events</span><a href="https://dunedin.recollect.co.nz/nodes/view/217127" >Santa Parade 2022</a></span></div></div></div></div><div id="ocrbar"><div id="ocrtools"><a href="#" class="button TXTbut" type="OCR" allow="0" data-view="1" title="Automatic machine generated text">OCR</a><a href="#" class="button TXTbut" type="TXT" allow="0" data-view="1" title="Text extracted from the document">Text</a><a href="#" class="button TXTbut" type="TRANSCRIPTION" allow="0" data-view="1" title="Transcription of this item">Transcription</a><a href="#" class="button" id="eddy" title="Edit this Item">Edit</a><a class="button void-pointer" id="eddyGrid" title="Edit grid data" tabindex="0" role="button">Edit</a><a href="#" class="button fonty" do="+=2" id="eddy" title="Increase font size">+</a><a href="#" class="button fonty" do="-=2" id="eddy" title="Decrease font size">-</a><a href="#" class="button" id="XXXbutt" title="Close this panel">Close</a></div><div id="gridtools"><h1>Editing is temporarily disabled</h1><a class="button void-pointer" id="gridCancel" title="Cancel Edit" tabindex="0" role="button">Cancel Edit</a></div><div id="ocrandtxt"></div></div><div id="viewport"><img src="/assets/display/453179-max?u=e4c643622cb6cf0e1051a08dbaf707d3" class="hero current" id="hero453179" w="6000" h="4000" idx="453179" title="" alt="" /></div><div id="threedeeCont" style="display:none; position:relative;"><span class="threedeeCont_close close-icon" ></span></div></div></div><div id="addtaghelp" class="hidden">Click on the image to add<br />a tag or press ESC to cancel</div><div id="citation" class="hidden">Dunedin Public Libraries (7th Feb 2023). <em>Dunedin Santa Parade 2022</em>. In Website Dunedin Public Libraries. Retrieved 4th Dec 2024 15:32, from https://dunedin.recollect.co.nz/nodes/view/217145</div><style> #threedeeCont, #narImgCont { background: #ffffff url("/img/ajax-loader.gif") no-repeat center center; } #autoplayer { height: auto; width: auto; background: #ffffff url("/img/ajax-loader.gif") no-repeat center center !important; } .narImgCont_close { margin: 20px; position: fixed; } span.marker { background-color: #ffff00; } #footer { margin-top: -4.6em !important; } .sidelogo { margin: 0; } .vscancolor { color: orange !important; } #gridtools { display: none; margin: 8px; white-space: nowrap; } #eddy, #eddyGrid { display: inline-block; } @media only screen and (max-width: 790px) { #viewport.pdf { display: block; height: auto !important; } .pdf iframe { display: block; height: 600px !important; } } </style> <script nonce="63e3a91113239e4c0fac46da26473ff1"> /* BB R1X-3135 - toggle asset/text full screen*/ $("#toggleFullText").change(function() { transcriptionBlock.toggleFullText($(this)); }); $("#toggleFullAsset").change(function() { transcriptionBlock.toggleFullAsset($(this)); }); var gridTable = ''; $('img.kaboom').css({ cursor: 'pointer' }).on('click', function() { var img = $(this); //var url = location.origin; var url = ''; var close = $('<span class="narImgCont_close close-icon" ></span>'); var bigImg = $('<img />').css({ 'max-width': '100%', 'max-height': '100%', 'height': 'auto', 'width': 'auto', 'display': 'inline' }); bigImg.attr({ //src: img.attr('src'), src: "/assets/display/" + img.attr('id') + "-max", alt: img.attr('alt'), title: img.attr('title') }); var over = $('<div />').text(' ').css({ 'height': '100%', 'width': '100%', 'background': 'rgba(0,0,0,.82)', 'position': 'fixed', 'top': 0, 'left': 0, 'padding': '20px', 'opacity': 0.0, 'cursor': 'pointer', 'z-index': '9999', 'text-align': 'center' }).append(bigImg, close).bind('click', function() { $(this).fadeOut(300, function() { $(this).remove(); $('div#viewport').css('z-index', 'initial'); }); }).insertAfter(this).animate({ 'opacity': 1 }, 300); $('div#viewport').css('z-index', '4'); }); /* * Refactoring Note: * The function 'initPop(idx)' (responsible for displaying OCR/Transcription results on Page load as default behaviour) * is moved to 'recollect3.js' as 'showOcrTranscriptionOnPageLoad(idx, texttype, textedit, textview)' to improve modularity * and separation of concerns.This change helps in maintaining and testing the OCR functionality independently. */ if (texttype !== 'METADATA') { console.log("T-type: " + texttype); idx = transcriptionBlock.getPageHash(); console.log("T-idx: " + idx); //Show default view (ORC/Transcript) on page load transcriptionBlock.showOcrTranscriptionOnPageLoad(idx, texttype, textedit, textview) var popLoaded = 1; } //@ST COSA-1324 : 2020-01-13. Function for image tag form validation. function getFormValidation(obj, value, userLevel) { // var patternOld = /['<','>','&']/; // Changed to new regex that accepts comma and still denies other characters https://recollectnz.atlassian.net/browse/R1X-6281 var pattern = /[<>&]/; if (userLevel != "Administrator") { if (pattern.test(value)) { obj.previousElementSibling.style.opacity = 1; $('.newrec').addClass('error_form'); $('.submit')[1].children[0].setAttribute("disabled", "disabled"); } else { obj.previousElementSibling.style.opacity = 0; $('.newrec').removeClass('error_form'); $('.submit')[1].children[0].removeAttribute("disabled"); } } } </script> <script nonce="63e3a91113239e4c0fac46da26473ff1"> $(document).ready(function() { // @ST timeline script var embed; if (document.getElementById('timeline-embed') !== null) { embed = document.getElementById('timeline-embed'); //embed.style.height = getComputedStyle(document.body).height; window.timeline = new TL.Timeline('timeline-embed', Array, { hash_bookmark: false }); window.addEventListener('resize', function() { var embed = document.getElementById('timeline-embed'); //embed.style.height = getComputedStyle(document.body).height; timeline.updateDisplay(); }); } }); </script> <script nonce="63e3a91113239e4c0fac46da26473ff1"> (function() { //if it doesn't have "#back-forward" block set null var $el = document.getElementById("back-forward") || null; //if page doesn't have this element break function if (!$el) return; //small helpers const getNewObj = (k, v) => { return { [k]: v } }; const parseReq = (str) => str.replace("?", "&").split("&").map(e => e.split("=")).filter(e => e[0] != "").map(e => getNewObj(e[0], e[1])); const getValue = (obj) => Object.values(obj); //encode array of the elements var encoding = function(str) { var result; try { result = btoa(unescape(encodeURIComponent(str))); } catch (e) { console.error("Error on ENCODING FUNCTION." + e); } return result; } //decode string var decoding = function(str) { var result; try { result = decodeURIComponent(escape(atob(decodeURIComponent(str)))); } catch (e) { console.error("Error on DECODING FUNCTION." + e); } return result; } //parse string var jsonParse = function(param) { var result; try { result = JSON.parse(param); } catch (e) { console.error("Error on JSON PARSE FUNCTION." + e); } return result; } //XSS protection var encodingHtmlEntities = function(str) { return String(str).replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); //.replace(/&/g, '&amp;') } //get localStorageKey from URL const localStorageKey = parseReq(window.location.search).filter(e => Object.keys(e) == "lsk"); const otherKeys = parseReq(window.location.search).filter(e => Object.keys(e) != "lsk"); let searchParam = ""; otherKeys.forEach(e => { searchParam += "&" + Object.keys(e) + "=" + Object.values(e); }); //if don't have a key in URL break function if ((localStorageKey && localStorageKey.length === 0)) return; //get key from string const KEY = localStorageKey[0].lsk; //this key doesn't have a data break function if (!window.localStorage.getItem(KEY) && !window.sessionStorage.getItem(KEY)) return; var cleanLocalStorage = function() { for (let key in window.sessionStorage) { if ((key != KEY) && (key != "_" + KEY)) { window.sessionStorage.removeItem(key); } } } if (Object.keys(window.sessionStorage).length > 1) { cleanLocalStorage(); } //return current ID var getCurrentId = function() { let path = window.location.pathname.split('/'); return path[path.length - 1]; } //get position of element in an array var getPositionInArray = function(sessionStorage) { for (let i = 0; i < sessionStorage.length; i++) { if (Object.keys(sessionStorage[i])[0] == getCurrentId()) { return i; } } return 0; } //get range var ss_getRange = function(sessionStorage) { const array = jsonParse(decoding(sessionStorage)); let position = Number(getPositionInArray(array)); return range = { prev: array[position - 1] ? array[position - 1] : {}, current: array[position] ? array[position] : {}, next: array[position + 1] ? array[position + 1] : {}, position } } //generate object of position, index, page and length var getPosition = function() { let arr = jsonParse(decoding(currentStorage.searchSet)); let position = { page: currentStorage.page, index: getPositionInArray(arr), length: arr.length }; return position; } var getByPosition = function(array, idx) { return jsonParse(decoding(array))[idx]; } if (!window.sessionStorage.getItem(KEY)) { window.sessionStorage.setItem("_" + KEY, window.localStorage.getItem(KEY)); window.localStorage.removeItem(KEY); } //get initial information from LocalStorage const searchResult = jsonParse(decoding(window.sessionStorage.getItem("_" + KEY))); const itemsSet = searchResult.itemsSet; const searchReq = decoding(searchResult.request); const pageCount = jsonParse(searchResult.pageCount); const countElem = jsonParse(searchResult.countElem); //set local variable let perPage = jsonParse(searchResult.perPage); let requestWasSent = false; //SESSION SECTION let sessionKey = KEY; //get sessionStorage by key, if it's not exist set null let sessionStorage = window.sessionStorage.getItem(sessionKey) || null; let sessionItemSet = ""; if (sessionStorage) { sessionItemSet = JSON.parse(sessionStorage).searchSet; } else { sessionItemSet = itemsSet; } //create local state let currentStorage = { page: jsonParse(searchResult.currentPage), prevSearchSet: "", searchSet: sessionItemSet, nextSearchSet: "", current: ss_getRange(itemsSet).current, prev: ss_getRange(itemsSet).prev, next: ss_getRange(itemsSet).next, position: ss_getRange(itemsSet).position } var setSessionStorage = function() { window.sessionStorage.setItem(sessionKey, JSON.stringify(currentStorage)) } //if sessionStorage empty set it with initialState of currentStorage //if sessionStorage has this key update it with new value if (!sessionStorage) { let range = ss_getRange(itemsSet); setSessionStorage(); pageNumber = searchResult.currentPage; } else { let currentArray = jsonParse(sessionStorage).searchSet; let currentPage = jsonParse(sessionStorage).page; let currentRange = ss_getRange(currentArray); currentStorage.page = jsonParse(sessionStorage).page; // currentStorage.current = ss_getRange(itemsSet).current; // currentStorage.prev = ss_getRange(itemsSet).prev; // currentStorage.next = ss_getRange(itemsSet).next; // currentStorage.position = ss_getRange(itemsSet).position; currentStorage.current = ss_getRange(jsonParse(sessionStorage).searchSet).current; currentStorage.prev = ss_getRange(jsonParse(sessionStorage).searchSet).prev; currentStorage.next = ss_getRange(jsonParse(sessionStorage).searchSet).next; currentStorage.position = ss_getRange(jsonParse(sessionStorage).searchSet).position; currentStorage.prevSearchSet = jsonParse(sessionStorage).prevSearchSet; currentStorage.nextSearchSet = jsonParse(sessionStorage).nextSearchSet; if (currentStorage.position === 0 && currentStorage.prevSearchSet != "") { let prevSet = currentStorage.prevSearchSet; currentStorage.prev = getByPosition(prevSet, jsonParse(decoding(prevSet)).length - 1); } if (currentStorage.position === jsonParse(decoding(currentArray)).length - 1 && currentStorage.nextSearchSet != "") { let nextSet = currentStorage.nextSearchSet; currentStorage.next = getByPosition(nextSet, 0); } setSessionStorage(); } let nextPage = currentStorage.page; //update set of nodes array var updateLocalStorage = function(data, searchReq, pageNum) { let newitemsSet = data.nodes.map(e => e.Node).map(e => { let x = { [e.id]: e.title }; return x; }); let newSet = encoding(JSON.stringify(newitemsSet)); let range = ss_getRange(currentStorage.searchSet); if (currentStorage.position == 0) { currentStorage.prev = getByPosition(newSet, newitemsSet.length - 1); currentStorage.prevSearchSet = newSet; } if (currentStorage.position == (jsonParse(decoding(currentStorage.searchSet)).length - 1) && jsonParse(decoding(currentStorage.searchSet)).length > 1) { currentStorage.next = getByPosition(newSet, 0); currentStorage.nextSearchSet = newSet; } setSessionStorage(); createButtonsBlock(); } var sendRequest = function(direction) { let pageNum = 1; if (direction.page == 1) { pageNum = direction.index == 0 ? 1 : (Number(direction.page) + 1); } else if (direction.page > 1 && direction.page < pageCount) { pageNum = direction.index == 0 ? (Number(direction.page) - 1) : (Number(direction.page) + 1); } else { pageNum = direction.index == 0 ? (Number(direction.page) - 1) : pageCount; } const regex = /(page=\d*)/ius; let otherReq = searchReq != "" ? (regex.test(searchReq)) ? searchReq.replace(regex, `page=${pageNum}`) : `${searchReq}&page=${pageNum}` : `?page=${pageNum}`; let newRequest = (searchReq != "" && regex.test(searchReq)) ? searchReq.replace(regex, `page=${pageNum}`) : otherReq; $.get('/nodes/search_result/1' + newRequest, data => updateLocalStorage(data, newRequest, pageNum)); } var getNewArrayOfIds = async function(position) { if (position.index != 0 && position.index != position.length - 1) { return; } if (((Number(position.index) == position.length - 1) && (Number(position.page) < pageCount)) || ((Number(position.index) == 0) && (Number(position.page) > 1 && Number(position.page) <= pageCount))) { if (!requestWasSent) { await sendRequest(position); requestWasSent = true; } } } var getURL = function(pathname = false) { if (pathname) { return window.location.origin + window.location.pathname; } return window.location.origin; } var getParam = function() { return window.location.search } var createBtn = function(id, title, direct) { return `<span> <a href="${getURL()}/nodes/view/${id}?lsk=${KEY}${searchParam}" title="${encodingHtmlEntities(title)}" data-dir='${direct}'><i class='fa fa-chevron-${direct}'></i></a> </span>`; } var createButtonsBlock = function() { let rangePrev = Object.keys(currentStorage.prev).length > 0 ? currentStorage.prev : 0; let rangeNext = Object.keys(currentStorage.next).length > 0 ? currentStorage.next : 0; let prev = rangePrev != 0 ? rangePrev : "none"; let next = rangeNext != 0 ? rangeNext : "none"; let prevBtn = "<a href='#' style='pointer-events: none;'><i class='fa fa-chevron-left'></i></a>"; let nextBtn = "<a href='#' style='pointer-events: none;'><i class='fa fa-chevron-right'></a>"; if (prev != "none") { prevBtn = createBtn(Object.keys(prev), Object.values(prev), "left"); prevId = Object.keys(prev); } if (next != "none") { nextBtn = createBtn(Object.keys(next), Object.values(next), "right"); nextId = Object.keys(next); } let pos = getPosition(); getNewArrayOfIds(pos); let arrCount = perPage > 0 ? perPage : 24; let searchPos = Number(pos.page) == 1 ? (pos.index + 1) : (((Number(pos.page) - 1) * arrCount) + (pos.index + 1)); $el.innerHTML = `<div class="nav-btn left-btn">${prevBtn}</div> <div class="nav-btn result-btn">Result ${searchPos} from ${countElem}</div> <div class="nav-btn right-btn">${nextBtn}</i></div>`; $('[data-dir="left"]').one('click', () => { if (pos.index == 0) { nextPage = currentStorage.page - 1; } }); $('[data-dir="right"]').one('click', () => { if (pos.index == pos.length - 1) { nextPage = currentStorage.page + 1; } }); } createButtonsBlock(); window.addEventListener('beforeunload', (event) => { // RX9003 - Removed event.preventDefault() to stop prompt message from // occurring, not needed at this stage. if (window.sessionStorage.getItem(sessionKey)) { if (currentStorage.nextSearchSet != "" || currentStorage.prevSearchSet != "") { if (currentStorage.page != 1 || currentStorage.page != pageCount) { if (nextPage > currentStorage.page) { currentStorage.prevSearchSet = currentStorage.searchSet; currentStorage.searchSet = currentStorage.nextSearchSet; currentStorage.nextSearchSet = ""; currentStorage.next = {}; } if (currentStorage.page > nextPage) { currentStorage.nextSearchSet = currentStorage.searchSet; currentStorage.searchSet = currentStorage.prevSearchSet; currentStorage.prevSearchSet = ""; currentStorage.prev = {}; } currentStorage.page = nextPage; } } setSessionStorage(); } }, { once: true }); //TO HIDE PARAMS. IT REMOVES PARAMS FROM URL // history.pushState("", null, getURL(true)); })() </script> <style> #back-forward { display: flex; width: 100%; max-width: 100%; justify-content: space-between; box-sizing: border-box; /* margin: 5px 0 5px 5px; */ border-radius: 4px; } .nav-btn { padding: 5px; background-color: #f0f0f0; } .left-btn { border-radius: 2px 0 0 2px; background-color: #fff; border: 1px solid #e5e5ee; } .right-btn { border-radius: 0 2px 2px 0; background-color: #fff; border: 1px solid #e5e5ee; } .result-btn { /* font-size: 1.1em; font-weight: 700; */ width: 100%; border-top: 1px solid #e5e5ee; border-bottom: 1px solid #e5e5ee; text-align: center; } </style> </div><!-- #main --> </div><!-- #wrap --> <div id="footer"><div id="footer-links"><a href="https://dunedin.recollect.co.nz/pages/privacy" >Privacy Policy</a> | <a href="https://dunedin.recollect.co.nz/pages/terms" >Terms of Use</a></div><div id="copyright">Content on this site may be subject to Copyright, please <a href="https://dunedin.recollect.co.nz/messages/create" >contact Dunedin Public Libraries</a> before any reuse if you are unsure.<br /><a href="https://www.recollectcms.com/" target="_blank">RECOLLECT</a> is Copyright &copy; 2011-2024 by <a href="https://www.recollectcms.com/" target="_blank">Recollect Limited</a> | Page rendered in <span id='render-time'>0.7766</span> seconds</div></div></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10