پروفایل استاد - دانشکده فنی و مهندسی
در حین انجام عملیات خطایی رخ داده است.
The following has evaluated to null or missing: ==> facultyListURL [in template "20097#20123#41972" at line 26, column 12] ---- 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: ${facultyListURL} [in template "20097#20123#41972" at line 26, column 10] ----
1<div class="edu-portlet-wrapper">
2<div class="container">
3<div class="page row" data-display-mode="page" id="page">
4<div class="iconsContainer">
5<div class="icons">
6
7<#-- <#if emailAddresses? has_content>-->
8
9<#-- <a-->
10
11<#-- class="email"-->
12
13<#-- data-end-color="21866a"-->
14
15<#-- data-start-color="38ef7d"-->
16
17<#-- data-theme="light"-->
18
19<#-- data-tippy-content=""-->
20
21<#-- >-->
22
23<#--<i class="icon-envelope-alt"></i>-->
24
25<#-- </a>-->
26<a href="${facultyListURL}">بازگشت</a>
27 <@portlet.resourceURL
28 id="/university_people/faculty_generate_resume"
29 var="generateResume"
30 >
31 <@liferay_portlet.param
32 name="universityPersonId"
33 value="${person.getUniversityPersonId()?string}"
34 />
35 </@>
36 <#if showResumeIcon>
37
38 <a
39 class="cv"
40 data-end-color="ecae38"
41 data-start-color="f4d95a"
42 data-theme="light"
43 data-tippy-content="دانلود رزومه"
44 href="${generateResume}"
45 >
46 <i class="icon-download-alt"></i>
47 </a>
48 </#if>
49
50<#-- </#if>-->
51
52 </div>
53 </div>
54
55<div class="card col-12">
56<header class="header">
57
58<div class="menu">
59<div class="right">
60<a class="menuBtn">
61<i class="icon-reorder"></i>
62
63 <span>${ languageUtil.get(resourceBundle,
64 "menu")
65 }</span>
66
67 </a>
68
69 <nav
70 class="items"
71 id="menuitems"
72 style="flex-wrap: wrap-reverse; align-items: end;">
73 <#list facultyProfileUtils
74 .getFacultyAvailableProfile(universityFaculty
75 .getUniversityFacultyId(), locale) as profile>
76
77 <#assign activeClass =""
78 />
79 <#if profile.portletName ==
80 currentTab>
81 <#assign activeClass ="active" />
82 </#if>
83
84 <@portlet.renderURL var="portlet2URL">
85 <@portlet.param
86 name="runtimePortletName"
87 value="${profile.getPortletName()}"
88 />
89
90 <@portlet.param
91 name="universityFacultyId"
92 value="${universityFaculty
93 .getUniversityFacultyId()}"
94 />
95 </@>
96 <a
97 class="${activeClass}"
98 href="<#if universityFaculty
99 .getFriendlyURL()
100 ?has_content>
101 ${facultyFriendlyURLPath+profile.getPath()}
102 <#else>portlet2URL </#if>"
103 >
104<i class="${profile.getIcon()}"></i>
105
106 <span>${profile.getTitle(locale)}</span>
107 </a>
108 </#list>
109 </nav>
110 </div>
111 </div>
112<div class="info">
113<div class="image">
114 <@portlet.resourceURL
115 id="/university_people/person_image"
116 var="imageResourceURL"
117 >
118 <@liferay_portlet.param
119 name="universityPersonImageId"
120 value="${person.imageId?string}"
121 />
122 </@>
123
124 <#if person.imageId gt 0>
125
126 <img alt="${person.getFirstName(locale)} ${person
127 .getLastName(locale)}"
128 src=${imageResourceURL}>
129 <#elseif person.getMale()>
130 <img
131 alt="${person.getFirstName(locale)} ${person.getLastName(locale)}"
132 src="/o/ir.sain.university.people/images/male.jpg"
133 />
134 <#else>
135
136 <img
137 alt="${person.getFirstName(locale)} ${person
138 .getLastName(locale)}"
139 src="/o/ir.sain.university.people/images/female.jpeg"
140 />
141 </#if>
142 </div>
143
144<div class="content">
145
146<div class="content_first-line">
147
148 <#-- code-->
149
150 <#if degree?has_content>
151 <h3 class="code">${languageUtil.get(resourceBundle, degree)}</h3>
152 </#if>
153
154 <h6 class="content_modification-date">${languageUtil.get(resourceBundle,"modification-date")}: ${modificationDateStr}</h6>
155
156 </div>
157
158<h1 class="title">
159 ${person.getFirstName(locale)} ${person.getLastName(locale)} <#if showActivityStatus><span>(${languageUtil.get(resourceBundle, activityStatusLabel, "elmi")})</span></#if>
160 </h1>
161<h3 class="subtitle">
162
163 ${universityDepartment.getName(locale)}
164 <#if showProgramTitle>
165 /
166 ${universityProgram.getName(locale)}
167 </#if>
168 </h3>
169 </div>
170 </div>
171 </header>
172
173 <@liferay_portlet.runtime
174 portletName=runtimePortletName
175 portletProviderAction=ActionView
176 />
177 </div> </div>
178 </div>
179</div>
180
181<script>
182 <#assign address = "" />
183 <#if emailAddresses?has_content>
184 <#assign address = emailAddresses[0].getAddress() />
185 AUI().ready(function() {
186
187 <#--var split = "${address}".split("@")-->
188
189 <#--var email = split[0]-->
190
191 <#--var prefix = split[1]-->
192
193 var elements = document.querySelectorAll("[data-start-color]");
194 elements.forEach((element) => {
195 element.style.backgroundImage =
196 "linear-gradient(147deg, #" + element.getAttribute("data-start-color") + " 0%, #" + element.getAttribute("data-end-color") + " 74%)";
197 });
198 // var emailicon = document.querySelector(".icons > .email");
199 // if (emailicon) {
200 // emailicon.setAttribute("href", "mailto: " + email + "@" + prefix);
201 // emailicon.setAttribute("data-tippy-content", email + "@" + prefix);
202 // }
203 // var emails = document.querySelectorAll("[data-email-fill]");
204 // emails.forEach((e) => (e.innerHTML = email + "@" + prefix));
205
206 tippy("[data-tippy-content]", {
207 allowHTML: true,
208 theme: "light",
209 });
210
211 tippy("[data-template]", {
212 content(reference) {
213 const id = reference.getAttribute("data-template");
214 const template = document.getElementById(id);
215 return template.innerHTML;
216 },
217 allowHTML: true,
218 theme: "light",
219 // delay: [0, 500],
220 duration: [200, 150],
221 placement: "bottom",
222 trigger: "click",
223 hideOnClick: true,
224 });
225 });
226 </#if>
227</script>