-
Notifications
You must be signed in to change notification settings - Fork 26
/
validate-h-card.html.php
186 lines (154 loc) · 6.94 KB
/
validate-h-card.html.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?php
use BarnabyWalters\Mf2;
$optional_properties = [
'honorific-prefix' => 'Honorific prefix',
'given-name' => 'Given (often first) name',
'additional-name' => 'Other/middle name',
'family-name' => 'Family (often last) name',
'sort-string' => 'String to sort by',
'honorific-suffix' => 'Honorific suffix',
'nickname' => 'Nickname',
'email' => 'Email address',
'logo' => 'Logo',
'uid' => 'Unique identifier',
'category' => 'Category/tag',
'adr' => 'Postal Address',
'post-office-box' => 'Post Office Box',
'street-address' => 'Street number and name',
'extended-address' => 'Extended address',
'locality' => 'City/town/village',
'region' => 'State/province/county',
'postal-code' => 'Postal code',
'country-name' => 'Country',
'label' => 'Label',
'geo' => 'Geo',
'latitude' => 'Latitude',
'longitude' => 'Longitude',
'altitude' => 'Altitude',
'tel' => 'Telephone',
'bday' => 'Birth Date',
'key' => 'Cryptographic public key',
'org' => 'Organization',
'job-title' => 'Job title',
'role' => 'Description of role',
'impp' => 'Instant Messaging and Presence Protocol',
'sex' => 'Biological sex',
'gender-identity' => 'Gender identity',
'anniversary' => 'Anniversary',
];
# default h-card to show properties for
$hCard = null;
?>
<div class="row demo-row">
<div class="span12">
<h1><span class="fui-new"></span> Publishing on the IndieWeb <small>Level 2</small></h1>
<h2>1. Mark up your content (Profile, Notes, Articles, etc…) with <a href="https://microformats.org/" target="_blank">microformats2</a></h2>
<p>Other humans can already understand your profile information and the things you post on your site. By adding a few simple class names to your HTML, other people’s software can understand it and use it for things like <a href="https://indieweb.org/reply-context">reply contexts</a>, <a href="https://indieweb.org/comment">cross-site comments</a>, <a href="https://indieweb.org/rsvp">event RSVPs</a>, and more.</p>
<h3>Check your <b>homepage <a href="https://microformats.org/wiki/h-card" target="_blank">h-card</a></b>:</h3>
<label for="validate-h-card-url">Enter your URL:</label>
<form class="row" action="/validate-h-card/" method="get">
<div class="span4">
<input type="text" id="validate-h-card-url" name="url" value="<?= $url ?? '' ?>" placeholder="https://example.com/" class="span4" required />
</div>
<div class="span3">
<button type="submit" id="validate-h-card" class="btn btn-large btn-block btn-primary">Validate h-card</button>
</div>
</form>
<?php if (isset($error)): ?>
<div class="result alert alert-warning">
<h3> Something Went Wrong! </h3>
<p> When fetching <code><?= $url ?></code>, we got this problem: </p>
<p> <?= $error['message'] ?> </p>
</div>
<?php endif; ?>
<?php if ($showResult): ?>
<div class="result alert alert-success">
<?php if ($representativeHCard): $hCard = $representativeHCard; ?>
<h3> Success! </h3>
<p> This representative h-card was found on your site: </p>
<?php elseif (count($allHCards) > 0):
$hCard = $allHCards[0];
$intro_phrase = 'An h-card was found on your site! Consider ';
if (count($allHCards) > 1) {
$intro_phrase = 'Multiple h-cards were found on your site! Consider only having one and ';
}
?>
<h3> Almost there! </h3>
<p> <?=$intro_phrase?> marking it up as the <a href="https://microformats.org/wiki/representative-h-card-authoring">representative h-card</a>. </p>
<p> To identify the h-card that <em>represents</em> the page, you can: </p>
<ul>
<li> Add <code>class="u-url u-uid"</code> on the h-card’s link to <?=htmlspecialchars($url);?> </li>
<li> <b>Or:</b> add <code>class="u-url" rel="me"</code> on the h-card’s link to <?=htmlspecialchars($url);?> </li>
</ul>
<p> Here is the first h-card found: </p>
<?php else: ?>
<h3> No h-cards found </h3>
<p> No h-cards were found on your site! Adding one can be as simple as this: </p>
<pre><code><a href="<?= $url ?>" class="h-card" rel="me">Your Name</a></code></pre>
<p> You can also add other properties for a more detailed profile — see <a href="https://microformats.org/wiki/h-card">h-card on the microformats wiki</a> for a full list. </p>
<?php endif; ?>
<?php if ($hCard): ?>
<div class="preview-h-card preview-block">
<?php if (Mf2\hasProp($hCard, 'photo')): ?>
<img class="photo-block" src="<?= Mf2\getProp($hCard, 'photo')?>" alt="" />
<?php elseif (Mf2\hasProp($hCard, 'logo')): ?>
<img class="logo-block" src="<?= Mf2\getProp($hCard, 'logo')?>" alt="" />
<?php else: ?>
<div class="empty-property-block photo-block">
<p>Add a photo!</p>
<p><code><img class="u-photo" src="…" /></code></p>
</div>
<?php endif ?>
<p class="p-name"><?= Mf2\getProp($hCard, 'name') ?></p>
<p class="property-block-name">URL</p>
<?php if (Mf2\hasProp($hCard, 'url')): $urls = Mf2\getPlaintextArray($hCard, 'url'); ?>
<ul>
<?php foreach ($urls as $pUrl): ?>
<li><a href="<?= $pUrl ?>"><?= $pUrl ?></a></li>
<?php endforeach ?>
</ul>
<?php else: ?>
<div class="empty-property-block">
<p>Add your URLs! <code class="pull-right"><a rel="me" class="u-url">…</a></code></p>
</div>
<?php endif ?>
<?php if (Mf2\hasProp($hCard, 'email')): $emails = Mf2\getPlaintextArray($hCard, 'email'); ?>
<p class="property-block-name">Email</p>
<ul>
<?php foreach ($emails as $email): ?>
<li><a href="<?= $email ?>"><?= $email ?></a></li>
<?php endforeach ?>
</ul>
<?php endif ?>
<?php if (Mf2\hasProp($hCard, 'note')): ?>
<p class="property-block-name">Note</p>
<p><?= Mf2\getProp($hCard, 'note') ?></p>
<?php else: ?>
<div class="empty-property-block">
<p>Got a brief bio like a Twitter/Instagram bio? Add it to your own h-card as a note property! <code class="pull-right"><p class="p-note">…</p></code></p>
</div>
<?php endif ?>
<?php
foreach ($optional_properties as $name => $label) {
if (Mf2\hasProp($hCard, $name)) {
echo sprintf('<p class="property-block-name">%s</p> <ul>', $label);
foreach (Mf2\getPlaintextArray($hCard, $name) as $value) {
echo sprintf('<li>%s</li>', $value);
}
echo '</ul>';
}
}
?>
<p> <a href="https://microformats.org/wiki/h-card#Properties">See the full list of h-card properties</a>. </p>
</div>
<?php endif ?>
<?= $render('silo-hint.html', array('url' => $url)) ?>
</div>
<?php endif; ?>
<small>Want to be able to use h-card data in your code? Check out the open-source <a href="https://microformats.org/wiki/parsers">implementations</a>.</small>
<?php if (empty($composite_view)): ?>
<hr />
<p> <a href="/validate-rel-me/">Previous Step</a> | <a href="/">Home</a> | <a href="/validate-h-entry/">Next Step</a> </p>
<?php endif ?>
</div><!--/.span-->
</div>