القيادة
- الصفحة الرئيسية
- من نحن
- القيادة
فريق القيادة
يقود شركة البحر الأحمر الدولية نخبة فذة من الكفاءات ذوي الخبرات العالمية في مجالات الهندسة والاستثمار المالي والتطوير العقاري.
رئيس مجلس الإدارة
صاحب السمو الملكي، الأمير محمد بن سلمان بن عبدالعزيز آل سعود
ولي العهد، رئيس مجلس الوزراء، رئيس مجلس الشؤون الاقتصادية والتنمية، رئيس مجلس إدارة صندوق الاستثمارات العامة
Board Members
مجلس الإدارة
سمو الأمير بدر آل سعود
وزير الثقافة
معالي الدكتور ماجد القصبي
وزير التجارة
معالي الأستاذ أحمد الخطيب
وزير السياحة
معالي المهندس عبدالرحمن الفضلي
وزير البيئة والمياه والزراعة
معالي الأستاذ ماجد الحقيل
وزير البلديات والإسكان
معالي الأستاذ ياسر الرميان
محافظ صندوق الاستثمارات العامة
معالي الدكتور فهد تونسي
الأمين العام، والمستشار في الديوان الملكي السعودي
المهندس أيمن المديفر
الرئيس التنفيذي - نيوم
جون باغانو
الرئيس التنفيذي للمجموعة
Advisory Board Members
حصل خطأ عند معالجة القالب.
Java method "com.sun.proxy.$Proxy826.getLatestArticle(long)" threw an exception when invoked on com.sun.proxy.$Proxy826 object "hu.webtown.liferay.service.wrapper.redsea.journal.article.JournalArticleLocalServiceOverride@4a0eba8f"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign journalArticle = journalArtic... [in template "20097#20123#45335" in macro "getPersonCard" at line 93, column 9]
- Reached through: @getPersonCard webContentData.classPK... [in template "20097#20123#45335" at line 43, column 37]
----
1<#if serviceLocator??>
2 <#assign journalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
3 <#assign cssClass = "peopleSlider" />
4 <#if (theme.getData())??>
5 <#assign cssClass = cssClass + " peopleSlider--" + theme.getData() />
6 </#if>
7 <#if getterUtil.getBoolean(decorativeBackground.getData())>
8 <#assign cssClass = cssClass + " peopleSlider--bgOverflow peopleSlider--bgImage" />
9 </#if>
10 <!-- begin sections/peopleSlider -->
11 <section class="${cssClass}">
12 <#if getterUtil.getBoolean(decorativeBackground.getData())>
13 <img
14 class="peopleSlider__bg peopleSlider__bg--1"
15 src="${themeDisplay.getPathThemeImages()}/../crafton-frontend/public/images/bg-01-l.svg"
16 alt="background"
17 loading="lazy"
18 role="none" />
19 <img
20 class="peopleSlider__bg peopleSlider__bg--2"
21 src="${themeDisplay.getPathThemeImages()}/../crafton-frontend/public/images/bg-01-r.svg"
22 alt="background"
23 loading="lazy"
24 role="none" />
25 </#if>
26 <div class="peopleSlider__inner wrapper">
27 <!-- begin components/heading -->
28 <div
29 class="heading heading--large <#if (theme.getData())?? && theme.getData() == 'navy'>heading--white</#if> peopleSlider__heading">
30 <h1 class="heading__subtitle">${title.getData()}</h1>
31 </div>
32 <!-- end components/heading -->
33 <div class="peopleSlider__sliderWrapper" data-people-slider>
34 <div class="peopleSlider__slider swiper" data-people-slider-slider>
35 <div class="peopleSlider__items swiper-wrapper" data-people-slider-item>
36 <#if person.getSiblings()?has_content>
37 <#list person.getSiblings() as cur_person>
38 <#assign
39 webContentData = jsonFactoryUtil.createJSONObject(cur_person.getData())
40 />
41
42 <#if webContentData?? && webContentData.classPK??>
43 <@getPersonCard webContentData.classPK?number cur_person?index/>
44 </#if>
45 </#list>
46 </#if>
47 </div>
48 </div>
49 </div>
50 </div>
51 <script type="text/template" data-popup-id="${randomNamespace}board-members" data-popup-theme="full" data-popup-props="{"onMountEvents":[["PeoplePopupSliderCreateNew"]
52 ]}">
53 <!-- begin components/popup/peoplePopup -->
54 <div class="peoplePopup">
55 <div class="peoplePopup__sliderWrapper" data-people-popup-slider="${randomNamespace}board-members">
56 <div class="peoplePopup__slider swiper" data-people-popup-slider-slider>
57 <div class="peoplePopup__items swiper-wrapper">
58 <#if person.getSiblings()?has_content>
59 <#list person.getSiblings() as cur_person>
60 <#assign
61 webContentData = jsonFactoryUtil.createJSONObject(cur_person.getData())
62 />
63
64 <#if webContentData?? && webContentData.classPK??>
65 <@getPopup webContentData.classPK?number />
66 </#if>
67 </#list>
68 </#if>
69 </div>
70 </div>
71 <!-- begin components/sliderNav -->
72 <div class="sliderNav peoplePopup__nav" data-people-popup-slider-nav data-slider-nav>
73 <!-- begin components/arrowButton -->
74 <button class="arrowButton arrowButton--prev arrowButton--default sliderNav__arrow sliderNav__arrow--prev" data-slider-nav-prev>
75 <span class="arrowButton__arrow"></span>
76 </button>
77 <!-- end components/arrowButton -->
78 <!-- begin components/arrowButton -->
79 <button class="arrowButton arrowButton--next arrowButton--default sliderNav__arrow sliderNav__arrow--next" data-slider-nav-next>
80 <span class="arrowButton__arrow"></span>
81 </button>
82 <!-- end components/arrowButton -->
83 </div>
84 <!-- end components/sliderNav -->
85 </div>
86 </div>
87 <!-- end components/popup/peoplePopup -->
88 </script>
89 </section>
90 <!-- end sections/peopleSlider -->
91
92 <#macro getPersonCard classPK index>
93 <#assign journalArticle = journalArticleService.getLatestArticle(classPK) />
94 <#assign description = journalArticle.getDescription(themeDisplay.getLocale()) />
95 <#assign title = journalArticle.getTitle(themeDisplay.getLocale()) />
96
97 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) />
98 <#assign rootElement = document.getRootElement()>
99 <#assign contentXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='content']")>
100
101 <#assign hasContent = false />
102
103 <#if (contentXPathSelector.selectSingleNode(rootElement))?has_content>
104 <#assign hasContent = (htmlUtil.stripHtml(contentXPathSelector.selectSingleNode(rootElement).getStringValue())?trim?length > 0) />
105 </#if>
106
107 <#attempt>
108 <#assign imgUrl = journalArticle.getArticleImageURL(themeDisplay) />
109 <#recover>
110 <#assign imgUrl = "" />
111 </#attempt>
112
113 <#assign buttonColorCss = "moreButton--gold" />
114 <#if (theme.getData())?? && theme.getData() == 'navy'>
115 <#assign buttonColorCss = "moreButton--white" />
116 </#if>
117
118 <div class="peopleSlider__item swiper-slide" style="<#if (numberOfPersons.getData())?? && numberOfPersons.getData() == '4'> width:25%;</#if>">
119 <!-- begin components/personCard -->
120 <div class="personCard <#if (theme.getData())?? && theme.getData() == 'navy'>personCard--white</#if> peopleSlider__card">
121 <div class="personCard__avatar">
122 <img
123 class="personCard__avatarImg"
124 src="${imgUrl}"
125 loading="lazy"
126 alt="avatar" />
127 </div>
128 <div class="personCard__info">
129 <h4 class="personCard__name">${title}</h4>
130 <div class="personCard__role">${description}</div>
131 <#if hasContent?? && hasContent>
132 <!-- begin components/moreButton -->
133 <button class="moreButton ${buttonColorCss} personCard__more" target="_self" data-popup-target="${randomNamespace}board-members" data-popup-data="{"onMountEvents":[["PeoplePopupSliderSetSlide",{"id":"${randomNamespace}board-members","index":${index}}]]}">
134 <span class="moreButton__text"><@liferay.language key="buttons.read-more" /></span>
135 </button>
136 <!-- end components/moreButton -->
137 </#if>
138 </div>
139 </div>
140 <!-- end components/personCard -->
141 </div>
142 </#macro>
143
144 <#macro getPopup classPK>
145 <#assign journalArticle = journalArticleService.getLatestArticle(classPK) />
146 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) />
147 <#assign rootElement = document.getRootElement()>
148
149 <#assign contentXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='content']")>
150
151 <#assign content = "" />
152 <#if (contentXPathSelector.selectSingleNode(rootElement))?has_content>
153 <#assign content = contentXPathSelector.selectSingleNode(rootElement).getStringValue() />
154 </#if>
155
156 <#assign description = journalArticle.getDescription(themeDisplay.getLocale()) />
157 <#assign title = journalArticle.getTitle(themeDisplay.getLocale()) />
158
159 <#attempt>
160 <#assign imgUrl = journalArticle.getArticleImageURL(themeDisplay) />
161 <#recover>
162 <#assign imgUrl = "" />
163 </#attempt>
164
165 <div class="peoplePopup__item swiper-slide">
166 <!-- begin components/customScroll -->
167 <div
168 class="customScroll peoplePopup__scroll"
169 data-custom-scroll>
170 <div class="customScroll__scroll">
171 <div class="peoplePopup__person wrapper">
172 <div class="peoplePopup__avatar">
173 <img
174 class="peoplePopup__avatarImg"
175 src="${imgUrl}"
176 loading="lazy"
177 alt="avatar" />
178 </div>
179 <div class="peoplePopup__info">
180 <h4 class="peoplePopup__name">${title}</h4>
181 <div class="peoplePopup__role">${description}</div>
182 <div class="peoplePopup__description">${content}</div>
183 </div>
184 </div>
185 </div>
186 </div>
187 <!-- end components/customScroll -->
188 </div>
189 </#macro>
190</#if>
الإدارة التنفيذية
الإدارة التنفيذية
جون باغانو
الرئيس التنفيذي للمجموعة
أحمد غازي درويش
كبير الإداريين للمجموعة
د. مريم علي فيكتشلو
رئيس الحوكمة للمجموعة
رائد البسيط
رئيس البيئة والاستدامة للمجموعة
طارق مسملي
رئيس إدارة المراجعة الداخلية للمجموعة
غريغوري جيريجان
رئيس الإدارة القانونية والمدير التنفيذي لإدارة الاستثمارات للمجموعة
مارتن جرينسليد
رئيس المالية للمجموعة
بنجامين إدواردز
المدير التنفيذي لإدارة التكلفة والعمليات التجارية والمشتريات
جون دون
رئيس الصحة والسلامة للمجموعة
سيباستيان كاري
رئيس الضيافة للمجموعة
تواصل معنا
للمزيد حول البحر الأحمر الدولية، تواصل معنا
اتصل بنا الآن