a7e9417629e20afbf94aaeacc6a5d274ef23d743
[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 li span,
25 li em {
26     font-size: 1.6rem;
27 }
28
29 li em {
30     display: block;
31     line-height: 2rem;
32 }
33
34 article ul > li li {
35     position: absolute;
36     font-size: 1.6rem;
37     line-height: 2rem;
38     width: 100%;
39     box-sizing: border-box;
40     display: none;
41     z-index: 1;
42
43 }
44
45 .bodycopy > ul > li:hover {
46     background: #ffffff;
47     border: 1px solid #e7e7e7;
48     box-shadow: 0px 3px 20px 0px rgba(0, 0, 0, 0.10);
49 }
50
51 article ul > li:hover li {
52     background: #ffffff;
53     display: block;
54     box-shadow: none;
55 }
56
57 @media only screen and (max-width: 675px) {
58
59     article ul > li {
60         width: 100%;
61     }
62
63 }
64
65 </style>
66         <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
67
68         <article class="page" id="post-<?php the_ID(); ?>">
69                         <h1><a href="<?php echo get_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a></h1>
70
71                         <div id="team" class="bodycopy">
72                 <p><a href="#reviewers">Reviewers</a> | <a href="#committers">Committers</a> | <a href="#contributors">Contributors</a></p>
73
74                 <h2><a name="reviewers"></a>Reviewers</h2>
75                 <ul id="reviewers"></ul>
76
77                 <h2><a name="committers"></a>Committers</h2>
78                 <ul id="committers"></ul>
79
80                 <h2><a name="contributors"></a>Contributors</h2>
81                 <ul id="contributors"></ul>
82                         </div>
83         </article>
84
85         <?php //comments_template(); ?>
86
87         <?php endwhile; else: ?>
88
89                 <p>No posts.</p>
90
91         <?php endif; ?>
92
93 <script>
94
95 var svnTrunkUrl = 'https://svn.webkit.org/repository/webkit/trunk/';
96 var domainAffiliations = {
97     'apple.com': 'Apple',
98     'adobe.com': 'Adobe',
99     'basyskom.com': 'basysKom GmbH',
100     'cisco.com': 'Cisco Systems',
101     'collabora.co.uk': 'Collabora',
102     'company100.com': 'Company100',
103     'google.com': 'Google',
104     'igalia.com': 'Igalia',
105     'intel.com' : 'Intel',
106     'lge.com' : 'LG Electronics',
107     'motorola.com': 'Motorola Mobility',
108     'navercorp.com' : 'Naver',
109     'nokia.com': 'Nokia',
110     'openbossa.org': 'INdT / Nokia',
111     'profusion.mobi': 'ProFUSION',
112     'rim.com': 'Research In Motion',
113     'samsung.com': 'Samsung Electronics',
114     'sencha.com': 'Sencha',
115     'sisa.samsung.com': 'Samsung Electronics',
116     'sony.com': 'Sony',
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(); ?>