Nav

Mob Nav

The role

The majority of the roles on offer sit within ITS (Innovation and Technology Services), this is the University's IT directorate, responsible for the maintenance and onward development of IT Services that support the University's business needs and the development and design of innovative new services in support of the University's Digital Strategy.

The roles

The ideal candidates will have the vision and imagination to become involved in the innovation and enhancement of our digital capabilities. You will be interested in supporting the University to deliver an ambitious digital strategy that looks to design a “digital campus” with as much care and attention as it does the physical campus. This role will help to provide the University community with the skills needed to capitalise on the digital technologies that are adopted through the development of communities of practice and will work collaboratively with colleagues across the University to facilitate the adoption of new technologies.

The University is expanding and our IT staff will have the opportunity to become involved in a wide range of projects from the creation of future learning spaces to delivering a new data platform. We recently opened a new Creative Centre on our York Campus and we are looking forward to being involved in the exciting new spaces that this building offers and showing how technology can enhance the way in which physical spaces are used.

Every one of these roles is critical in supporting the university community to get maximum value from existing digital technologies alongside the exploration of new and emerging digital opportunities.

We welcome individuals who are keen to develop, their careers, and offer training and support to those that have the ambition and drive to grow into the roles on offer.

Over the last two years the University has invested in agile ways of working and ITS staff are now based in a new and exciting agile office space and flexible working is encouraged.

Hays Microsite jobs listing

Latest jobs

Title Location Salary Type
No job found

Main jobs

Latest jobs

Footer

حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> propsUtil.get(ucmLocaleKey)  [in template "64056#64102#365043" at line 28, 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 28, column 1]
----
1<div id="outer-footer" class="updatedFooter" style="padding-left: 0px; width: 1640px;"> 
2	 <div id="inner-footer-expert" class=""> 
3					<div id="footerLogo"> 
4					<#--<#if FooterLogo.getData()?? && FooterLogo.getData() != ""> 
5					<#assign footerLogoHTML = "${FooterLogo.getData()}"/> 
6					<#if (footerLogoHTML?length > 0)> 
7					${footerLogoHTML} 
8					<#else> 
9						<img src="https://www/hays.co.uk/cs/HaysMicroSites/assets/img/hayslogo.gif" id="defaultLogo" alt="Hays  
10							footer logo"> 
11					</#if> 
12					</#if>--> 
13					<#assign haysLogo = propsUtil.get("HAYS_LOGO")/> 
14					<img src="${haysLogo}" id="defaultLogo" alt="Hays  
15							footer logo" style="max-width:200px!important;margin:0px 15px;"> 
16					</div> 
17					<div id="footerLogo-Links"> 
18					<#if Link.getSiblings()?has_content> 
19							<#list Link.getSiblings() as cur_Link> 
20							<#if cur_Link.getData()?? && cur_Link.getData() != ""> 
21									<#assign linkData = "${cur_Link.getData()}"/> 
22												${linkData} 
23							</#if> 
24							</#list> 
25						</#if> 
26					</div> 
27					<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale"> 
28<#assign locale = propsUtil.get(ucmLocaleKey)/> 
29<#assign apiUrl = propsUtil.get("WEB72_API_DOMAIN")/> 
30 
31<#assign lr74CutoverCountryCode = propsUtil.get("LR74_CUTOVER_COUNTRY_CODE")/> 
32<#if lr74CutoverCountryCode??> 
33<#list lr74CutoverCountryCode?split(",") as countryCode> 
34 <#if countryCode = themeDisplay.getLocale()?keep_after_last("_") > 
35    <#assign apiUrl = propsUtil.get("API_DOMAIN")/> 
36 </#if> 
37</#list> 
38</#if> 
39 
40<#attempt> 
41 
42<#if httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)??> 
43<#assign response = httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)> 
44<#assign responseObj = jsonFactoryUtil.createJSONObject(response)> 
45<#assign getResponseResultArray = responseObj.getJSONArray("results")> 
46<div id="footer-bottom"> 
47 <#if getResponseResultArray.length() gt 0> 
48 <#assign siteUrl = getResponseResultArray.get(0).siteUrl> 
49  
50 <#if getResponseResultArray.get(0).getJSONArray("GroupHeading")?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length()?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length() gt 1> 
51  
52 <#assign groupHeadingArr = getResponseResultArray.get(0).getJSONArray("GroupHeading")> 
53 	<div class="row single-col gpHeading"> 
54	 <div class="col col-12">   
55		 <nav> 
56			<ul> 
57			<#list 0 ..< groupHeadingArr.length()?number as i> 
58			    <#if groupHeadingArr.get(i).Link?starts_with("/")> 
59			     <#assign linkUrl = siteUrl + groupHeadingArr.get(i).Link> 
60					<li> 
61						<a href="${linkUrl}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
62					</li> 
63				<#else> 
64				    <li> 
65						<a href="${groupHeadingArr.get(i).Link}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
66					</li> 
67				</#if> 
68			</#list> 
69			</ul> 
70		  </nav> 
71		 </div> 
72	  </div> 
73	 <#elseif getResponseResultArray.get(0).getJSONArray("FooterLink")??> 
74	 <#assign FooterLinkArr = getResponseResultArray.get(0).getJSONArray("FooterLink")> 
75	 <div class="row single-col"> 
76		<div class="col col-12">   
77		 <nav> 
78			<ul> 
79			<#list 0 ..< FooterLinkArr.length()?number as i> 
80			     <#assign linkUrl = FooterLinkArr.get(i).FooterLink?replace("href=\"/", "href=\""+siteUrl+"/" ) > 
81					<li> 
82						${linkUrl} 
83					</li> 
84			</#list> 
85			</ul> 
86		  </nav> 
87		 </div> 
88	  </div> 
89	  
90	 </#if> 
91		<div class="row single-col"> 
92			<div class="col col-12"> 
93	    	<p class="last">${getResponseResultArray.get(0).CopyrightHTML}</p> 
94			</div> 
95		</div> 
96	</#if> 
97</div> 
98</#if> 
99<#recover> 
100 
101</#attempt> 
102 
103					<div id="copyright-text"> 
104						 <#if CopyrightText?? && CopyrightText.getData()?? && CopyrightText.getData() != ""> 
105				${CopyrightText.getData()} 
106				</#if> 
107					</div> 
108	</div> 
109</div> 
110<script> 
111$(document).ready(function(){ 
112    if((Liferay.ThemeDisplay.getLanguageId() != "en_GB") && (location.href.indexOf("/web/") != -1)) { 
113	console.log("link update required on the site"); 
114	$('a').each(function(index) { 
115		var layoutRelativeUrl = Liferay.ThemeDisplay.getLayoutRelativeURL(); 
116        var getSiteUrl = layoutRelativeUrl.substring(0, layoutRelativeUrl.lastIndexOf("/")); 
117		var linkVal = $(this).attr("href"); 
118		if((typeof linkVal !== "undefined") && linkVal.indexOf("https") == -1 && linkVal.indexOf("/")!= -1 && (linkVal.indexOf("/") === linkVal.lastIndexOf("/"))){ 
119		var updatedLink = getSiteUrl + linkVal ; 
120		$(this).attr("href", updatedLink) 
121		console.log("link updated - " + updatedLink); 
122
123	}); 
124
125}); 
126</script>