7f375ceb55362fc7e2f8d0d43b45bc84a8e65f59
[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     'tesla.com': 'Tesla',
118     'torchmobile.com.cn': 'Torch Mobile (Beijing) Co. Ltd.',
119     'digia.com': 'Digia',
120     'partner.samsung.com': 'Samsung Electronics',
121
122     // Universities
123     'inf.u-szeged.hu': 'University of Szeged',
124     'stud.u-szeged.hu': 'University of Szeged',
125
126     // Open source communities
127     'chromium.org': 'Chromium',
128     'codeaurora.org': 'Code Aurora Forum',
129     'gnome.org': 'GNOME',
130     'kde.org': 'KDE'
131 };
132
133 function parseContributorsJSON(text) {
134     var contributorsJSON = JSON.parse(text);
135     var contributors = [];
136
137     for (var contributor in contributorsJSON) {
138         var data = contributorsJSON[contributor];
139         if (data.class == "bot")
140             continue;
141         contributors.push({
142             name: contributor,
143             kind: data.status ? data.status : 'contributor',
144             emails: data.emails,
145             nicks: data.nicks,
146             expertise: data.expertise
147         });
148     }
149     return contributors;
150 }
151
152 function formatAffiliation(contributor) {
153     if (contributor.affiliation)
154         return contributor.affiliation;
155
156     if (!contributor.emails || !contributor.emails.length)
157         return null;
158
159     var affiliations = [];
160     for (var domain in domainAffiliations) {
161         for (var i = 0; i < contributor.emails.length; i++) {
162             if (contributor.emails[i].indexOf('@' + domain) > 0 && affiliations.indexOf(domainAffiliations[domain]) < 0)
163                 affiliations.push(domainAffiliations[domain]);
164         }
165     }
166     return affiliations.join(' / ');
167 }
168
169 function addText(container, text) { container.appendChild(document.createTextNode(text)); }
170
171 function addWrappedText(container, tagName, attributes, text) {
172     var element = document.createElement(tagName);
173     for (var name in attributes)
174         element.setAttribute(name, attributes[name]);
175     addText(element, text);
176     container.appendChild(element);
177 }
178
179 function populateContributorListItem(listItem, contributor) {
180     addWrappedText(listItem, 'strong', {'class': 'name'}, contributor.name);
181     if (contributor.nicks) {
182         addWrappedText(listItem, 'span', {'class': 'nicks'}, ' (' + contributor.nicks.join(', ') + ')');
183     }
184
185     var affiliation = formatAffiliation(contributor);
186     if (affiliation) {
187         addText(listItem, ' ');
188         addWrappedText(listItem, 'em', {'class': 'affiliation'}, affiliation);        
189     }
190
191     if (contributor.expertise) {
192         var expertiseList = document.createElement('ul');
193         addWrappedText(expertiseList, 'li', {'class': 'expertise'}, contributor.expertise);
194         listItem.appendChild(expertiseList);
195     }
196 }
197
198 function populateContributorList(contributors, kind) {
199     var contributorsOfKind = contributors.filter(function(contributor) { return contributor.kind == kind; });
200     var listElement = document.getElementById(kind + 's');
201     for (var i = 0; i < contributorsOfKind.length; i++) {
202         var listItem = document.createElement('li');
203         listElement.appendChild(listItem);
204         populateContributorListItem(listItem, contributorsOfKind[i]);
205     }
206 }
207
208 function nicksInListItem(listItem) {
209     var nicksContainer = listItem.querySelector('.nicks');
210     if (!nicksContainer || !nicksContainer.textContent)
211         return null;
212     return nicksContainer.textContent.split(/,\s*/);
213 }
214
215 function findListChildForContributor(contributor) {
216     var listChildren = document.getElementsByTagName('li');
217     for (var i = 0; i < listChildren.length; i++) {
218         var nameContainer = listChildren[i].querySelector('.name');
219         if (nameContainer && nameContainer.textContent.toLowerCase().indexOf(contributor.name.toLowerCase()) >= 0)
220             return listChildren[i];
221         var nicksInContainer = nicksInListItem(listChildren[i]);
222         if (nicksInContainer && contributor.nicks) {
223             for (var j = 0; j < contributor.nicks.length; j++) {
224                 if (nicksInContainer.indexOf(contributor.nicks[j]) >= 0)
225                     return listChildren[i];
226             }
227         }
228     }
229     return null;
230 }
231
232 var xhr = new XMLHttpRequest();
233 xhr.onload = function () {
234     if (this.status !== 200)
235         return this.onerror();
236     var contributors = parseContributorsJSON(this.responseText);
237
238     populateContributorList(contributors, 'reviewer');
239     populateContributorList(contributors, 'committer');
240     populateContributorList(contributors, 'contributor');
241 };
242 xhr.onerror = function () { document.getElementById('team').textContent = 'There was an issue loading data for the WebKit Team. not obtain contributors.json'; };
243 xhr.open('GET', svnTrunkUrl + 'Tools/Scripts/webkitpy/common/config/contributors.json');
244 xhr.send();
245
246 </script>
247
248 <?php get_footer(); ?>