Join our team
Latest VacanciesBenefits
Winchester City Council offer an excellent package of benefits including:
Hybrid Working
50% office-based, 50% remote
Employer-Paid Health Cash Plan
Employer-Paid Health Cash Plan
Salary Sacrifice Schemes
Available for cars and bikes
Annual Leave
- 27 days per year, rising to 30 days after 2 years continuous service, then 35 days
after 5 years continuous service
- 13 additional flexi-leave days annually
- Option to purchase up to 5 extra days
- 13 additional flexi-leave days annually
- Option to purchase up to 5 extra days
Free Parking
At any Winchester Park and Ride location.
This role will be entitled to Essential Car User Allowance:
£70.50 additional allowance per month
Free parking close to Winchester City Council
This role will be entitled to Essential Car User Allowance:
£70.50 additional allowance per month
Free parking close to Winchester City Council
Pension Scheme
Membership to the Local Government Pension
Employee pays in - 9.9%
Council pays in – 18%
Employee pays in - 9.9%
Council pays in – 18%
Discounts
Major high street brands and local leisure centres
Season Ticket Loans
Season Ticket Loans
Professional Development
Ongoing support for continuous learning and growth
Excellent Working Environment
Excellent Working Environment
Latest jobs
| Title | Location | Salary | Type |
|---|
No job found
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> propsUtil.get(ucmLocaleKey) [in template "64056#64102#365043" at line 5, column 19]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign locale = propsUtil.get(ucmLoc... [in template "64056#64102#365043" at line 5, column 1]
----
1<div id="outer-footer" class="updatedFooter" style="padding-left: 0px; width: 1640px;">
2 <div id="inner-footer-expert" class="">
3
4<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale">
5<#assign locale = propsUtil.get(ucmLocaleKey)/>
6<#assign apiUrl = propsUtil.get("WEB72_API_DOMAIN")/>
7
8<#assign lr74CutoverCountryCode = propsUtil.get("LR74_CUTOVER_COUNTRY_CODE")/>
9<#assign hays_logo = propsUtil.get("HAYS_LOGO")/>
10
11<#if lr74CutoverCountryCode??>
12<#list lr74CutoverCountryCode?split(",") as countryCode>
13 <#if countryCode = themeDisplay.getLocale()?keep_after_last("_") >
14 <#assign apiUrl = propsUtil.get("API_DOMAIN")/>
15 </#if>
16</#list>
17</#if>
18
19<#attempt>
20
21<#assign PortalCacheHelperUtil = staticUtil["com.liferay.portal.kernel.cache.PortalCacheHelperUtil"]>
22<#assign PortalCacheManagerNames = staticUtil["com.liferay.portal.kernel.cache.PortalCacheManagerNames"]>
23<#assign cacheName = "EXPERT_FOOTER_TEMPLATE_CACHE">
24<#assign cacheKey = "footerResponse_" + locale>
25<#assign cache = PortalCacheHelperUtil.getPortalCache(PortalCacheManagerNames.SINGLE_VM,cacheName)>
26<#assign response = (cache.get(cacheKey))?default("")>
27
28
29<#if response?has_content>
30<#assign responseObj = jsonFactoryUtil.createJSONObject(response)>
31<#else>
32<#assign response = httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)>
33<#assign responseObj = jsonFactoryUtil.createJSONObject(response)>
34 ${cache.put(cacheKey,response,86400)}
35</#if>
36
37<#if responseObj?? && responseObj.results?? && responseObj.results?has_content>
38<#assign getResponseResultArray = responseObj.getJSONArray("results")>
39<div id="footer-bottom">
40 <#if getResponseResultArray.length() gt 0>
41 <#assign siteUrl = getResponseResultArray.get(0).siteUrl>
42
43 <#if getResponseResultArray.get(0).getJSONArray("GroupHeading")?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length()?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length() gt 1>
44
45 <#assign groupHeadingArr = getResponseResultArray.get(0).getJSONArray("GroupHeading")>
46 <div class="row single-col gpHeading">
47 <div class="col col-12">
48 <nav>
49 <ul>
50 <#list 0 ..< groupHeadingArr.length()?number as i>
51 <#if groupHeadingArr.get(i).Link?starts_with("/")>
52 <#assign linkUrl = siteUrl + groupHeadingArr.get(i).Link>
53 <li>
54 <a href="${linkUrl}" target="">${groupHeadingArr.get(i).GroupHeading}</a>
55 </li>
56 <#else>
57 <li>
58 <a href="${groupHeadingArr.get(i).Link}" target="">${groupHeadingArr.get(i).GroupHeading}</a>
59 </li>
60 </#if>
61 </#list>
62 </ul>
63 </nav>
64 </div>
65 </div>
66 <#elseif getResponseResultArray.get(0).getJSONArray("FooterLink")??>
67 <#assign FooterLinkArr = getResponseResultArray.get(0).getJSONArray("FooterLink")>
68 <div class="row single-col gpHeading">
69 <div class="col col-12">
70 <nav>
71 <ul>
72 <#list 0 ..< FooterLinkArr.length()?number as i>
73 <#assign linkUrl = FooterLinkArr.get(i).FooterLink?replace("href=\"/", "href=\""+siteUrl+"/" ) >
74 <li>
75 ${linkUrl}
76 </li>
77 </#list>
78 </ul>
79 </nav>
80 </div>
81 </div>
82
83 </#if>
84
85
86 <div class="footer-added">
87 <img src="${hays_logo}"></img>
88 <div class="copyright">
89 <p>
90 <p class="last">${getResponseResultArray.get(0).CopyrightHTML}</p>
91
92 </p>
93 </div>
94 </div>
95 </#if>
96</div>
97</#if>
98<#recover>
99
100</#attempt>
101
102
103 </div>
104</div>
105<script>
106window.addEventListener('DOMContentLoaded', function () {
107 const themeId = "${themeDisplay.getThemeId()}";
108 // Find the <ul> inside the nav of gpHeading
109 var ulElement = document.querySelector(".gpHeading nav ul");
110 if (themeId == "haysmicrositecustomized_WAR_haysmicrositecustomizedtheme" && ulElement) {
111 var consentElement = document.createElement("div");
112 consentElement.id = "teconsent";
113 var liElement = document.createElement("li");
114 liElement.appendChild(consentElement);
115 ulElement.appendChild(liElement);
116 } else {
117 var consent = document.getElementById("teconsent");
118 if (consent && ulElement) {
119 var liWrapper = document.createElement("li");
120 liWrapper.appendChild(consent);
121 ulElement.appendChild(liWrapper);
122 } else {
123 console.log("Consent element or target UL not found.");
124 }
125 }
126});
127
128$(document).ready(function(){
129 if((Liferay.ThemeDisplay.getLanguageId() != "en_GB") && (location.href.indexOf("/web/") != -1)) {
130 console.log("link update required on the site");
131 $('a').each(function(index) {
132 var layoutRelativeUrl = Liferay.ThemeDisplay.getLayoutRelativeURL();
133 var getSiteUrl = layoutRelativeUrl.substring(0, layoutRelativeUrl.lastIndexOf("/"));
134 var linkVal = $(this).attr("href");
135 if((typeof linkVal !== "undefined") && linkVal.indexOf("https") == -1 && linkVal.indexOf("/")!= -1 && (linkVal.indexOf("/") === linkVal.lastIndexOf("/"))){
136 var updatedLink = getSiteUrl + linkVal ;
137 $(this).attr("href", updatedLink)
138 console.log("link updated - " + updatedLink);
139 }
140 });
141 }
142});
143</script>