Add Sony to domain affiliations on team page
[WebKit-https.git] / Websites / webkit.org / wp-content / themes / webkit / team.php
1 <?php
2 /**
3  * Template Name: Team Page
4  **/
5 ?>
6 <?php get_header(); ?>
7 <style>
8 article ul {
9     list-style: none;
10     padding-left: 0;
11     margin-left: -1rem;
12     margin-top: 0;
13 }
14
15 article ul > li {
16     position: relative;
17     display: inline-block;
18     vertical-align: top;
19     width: 30%;
20     padding: 1rem;
21     margin-bottom: 1rem;
22     border: 1px solid transparent;
23     
24 }
25 li span,
26 li em {
27     font-size: 1.6rem;
28 }
29
30 li em {
31     display: block;
32     line-height: 2rem;
33 }
34
35 article ul > li li {
36     position: absolute;
37     font-size: 1.6rem;
38     line-height: 2rem;
39     width: 100%;
40     box-sizing: border-box;
41     display: none;
42     z-index: 1;
43
44 }
45
46 .bodycopy > ul > li:hover {
47     background: #ffffff;
48     border: 1px solid #e7e7e7;
49     box-shadow: 0px 3px 20px 0px rgba(0, 0, 0, 0.10);
50 }
51
52 article ul > li:hover li {
53     background: #ffffff;
54     display: block;
55     box-shadow: none;
56 }
57
58 @media only screen and (max-width: 675px) {
59     
60     article ul > li {
61         width: 100%;
62     }
63
64 }
65
66 </style>
67         <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
68
69         <article class="page" id="post-<?php the_ID(); ?>">
70                         <h1><a href="<?php echo get_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a></h1>
71                         
72                         <div id="team" class="bodycopy">
73                 <p><a href="#reviewers">Reviewers</a> | <a href="#committers">Committers</a> | <a href="#contributors">Contributors</a></p>
74                 
75                 <h2><a name="reviewers"></a>Reviewers</h2>
76                 <ul id="reviewers"></ul>
77
78                 <h2><a name="committers"></a>Committers</h2>
79                 <ul id="committers"></ul>
80
81                 <h2><a name="contributors"></a>Contributors</h2>
82                 <ul id="contributors"></ul>
83                         </div>
84         </article>
85
86         <?php //comments_template(); ?>
87
88         <?php endwhile; else: ?>
89
90                 <p>No posts.</p>
91
92         <?php endif; ?>
93
94 <script>
95
96 var svnTrunkUrl = 'https://svn.webkit.org/repository/webkit/trunk/';
97 var domainAffiliations = {
98     'apple.com': 'Apple',
99     'adobe.com': 'Adobe',
100     'basyskom.com': 'basysKom GmbH',
101     'cisco.com': 'Cisco Systems',
102     'collabora.co.uk': 'Collabora',
103     'company100.com': 'Company100',
104     'google.com': 'Google',
105     'igalia.com': 'Igalia',
106     'intel.com' : 'Intel',
107     'lge.com' : 'LG Electronics',
108     'motorola.com': 'Motorola Mobility',
109     'navercorp.com' : 'Naver',
110     'nokia.com': 'Nokia',
111     'openbossa.org': 'INdT / Nokia',
112     'profusion.mobi': 'ProFUSION',
113     'rim.com': 'Research In Motion',
114     'samsung.com': 'Samsung Electronics',
115     'sencha.com': 'Sencha',
116     'sisa.samsung.com': 'Samsung Electronics',
117     'sony.com': 'Sony',
118     'tesla.com': 'Tesla',
119     'torchmobile.com.cn': 'Torch Mobile (Beijing) Co. Ltd.',
120     'digia.com': 'Digia',
121     'partner.samsung.com': 'Samsung Electronics',
122
123     // Universities
124     'inf.u-szeged.hu': 'University of Szeged',
125     'stud.u-szeged.hu': 'University of Szeged',
126
127     // Open source communities
128     'chromium.org': 'Chromium',
129     'codeaurora.org': 'Code Aurora Forum',
130     'gnome.org': 'GNOME',
131     'kde.org': 'KDE'
132 };
133
134 function parseContributorsJSON(text) {
135     var contributorsJSON = JSON.parse(text);
136     var contributors = [];
137
138     for (var contributor in contributorsJSON) {
139         var data = contributorsJSON[contributor];
140         if (data.class == "bot")
141             continue;
142         contributors.push({
143             name: contributor,
144             kind: data.status ? data.status : 'contributor',
145             emails: data.emails,
146             nicks: data.nicks,
147             expertise: data.expertise
148         });
149     }
150     return contributors;
151 }
152
153 function formatAffiliation(contributor) {
154     if (contributor.affiliation)
155         return contributor.affiliation;
156
157     if (!contributor.emails || !contributor.emails.length)
158         return null;
159
160     var affiliations = [];
161     for (var domain in domainAffiliations) {
162         for (var i = 0; i < contributor.emails.length; i++) {
163             if (contributor.emails[i].indexOf('@' + domain) > 0 && affiliations.indexOf(domainAffiliations[domain]) < 0)
164                 affiliations.push(domainAffiliations[domain]);
165         }
166     }
167     return affiliations.join(' / ');
168 }
169
170 function addText(container, text) { container.appendChild(document.createTextNode(text)); }
171
172 function addWrappedText(container, tagName, attributes, text) {
173     var element = document.createElement(tagName);
174     for (var name in attributes)
175         element.setAttribute(name, attributes[name]);
176     addText(element, text);
177     container.appendChild(element);
178 }
179
180 function populateContributorListItem(listItem, contributor) {
181     addWrappedText(listItem, 'strong', {'class': 'name'}, contributor.name);
182     if (contributor.nicks) {
183         addWrappedText(listItem, 'span', {'class': 'nicks'}, ' (' + contributor.nicks.join(', ') + ')');
184     }
185
186     var affiliation = formatAffiliation(contributor);
187     if (affiliation) {
188         addText(listItem, ' ');
189         addWrappedText(listItem, 'em', {'class': 'affiliation'}, affiliation);        
190     }
191
192     if (contributor.expertise) {
193         var expertiseList = document.createElement('ul');
194         addWrappedText(expertiseList, 'li', {'class': 'expertise'}, contributor.expertise);
195         listItem.appendChild(expertiseList);
196     }
197 }
198
199 function populateContributorList(contributors, kind) {
200     var contributorsOfKind = contributors.filter(function(contributor) { return contributor.kind == kind; });
201     var listElement = document.getElementById(kind + 's');
202     for (var i = 0; i < contributorsOfKind.length; i++) {
203         var listItem = document.createElement('li');
204         listElement.appendChild(listItem);
205         populateContributorListItem(listItem, contributorsOfKind[i]);
206     }
207 }
208
209 function nicksInListItem(listItem) {
210     var nicksContainer = listItem.querySelector('.nicks');
211     if (!nicksContainer || !nicksContainer.textContent)
212         return null;
213     return nicksContainer.textContent.split(/,\s*/);
214 }
215
216 function findListChildForContributor(contributor) {
217     var listChildren = document.getElementsByTagName('li');
218     for (var i = 0; i < listChildren.length; i++) {
219         var nameContainer = listChildren[i].querySelector('.name');
220         if (nameContainer && nameContainer.textContent.toLowerCase().indexOf(contributor.name.toLowerCase()) >= 0)
221             return listChildren[i];
222         var nicksInContainer = nicksInListItem(listChildren[i]);
223         if (nicksInContainer && contributor.nicks) {
224             for (var j = 0; j < contributor.nicks.length; j++) {
225                 if (nicksInContainer.indexOf(contributor.nicks[j]) >= 0)
226                     return listChildren[i];
227             }
228         }
229     }
230     return null;
231 }
232
233 var xhr = new XMLHttpRequest();
234 xhr.onload = function () {
235     if (this.status !== 200)
236         return this.onerror();
237     var contributors = parseContributorsJSON(this.responseText);
238
239     populateContributorList(contributors, 'reviewer');
240     populateContributorList(contributors, 'committer');
241     populateContributorList(contributors, 'contributor');
242 };
243 xhr.onerror = function () { document.getElementById('team').textContent = 'There was an issue loading data for the WebKit Team. not obtain contributors.json'; };
244 xhr.open('GET', svnTrunkUrl + 'Tools/Scripts/webkitpy/common/config/contributors.json');
245 xhr.send();
246
247 </script>
248
249 <?php get_footer(); ?>