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