1 |
<!doctype html> |
2 |
<html lang="en"> |
3 |
<head> |
4 |
<meta charset="utf-8"> |
5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
6 |
<title> CLink: Community Linked Open Cultuur Data </title> |
7 |
|
8 |
<meta name="description" content="Sweet Maker, Social, Semantic, Web, Decentralized, Makes Sweet, Sweet Swagger, Swtr, swtr"> |
9 |
<link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet"> |
10 |
<link href="{{ url_for('static', filename='css/bootstrap-theme.min.css') }}" rel="stylesheet"> |
11 |
<link href="{{ url_for('static', filename='css/annotorious.css') }}" rel="stylesheet"> |
12 |
<link href="{{ url_for('static', filename='css/swtmaker.css') }}" rel="stylesheet"> |
13 |
<link href="{{ url_for('static', filename='css/bootstrap-tags.css') }}" rel="stylesheet"> |
14 |
</head> |
15 |
|
16 |
<body> |
17 |
<!-- navigation and branding of the app --> |
18 |
<header id="header" class="navbar navbar-inverse" role="navigation"> |
19 |
<div class="container-fluid"> |
20 |
<!-- Brand and toggle get grouped for better mobile display --> |
21 |
<div class="navbar-header"> |
22 |
<button type="button" class="navbar-toggle" data-toggle="collapse" |
23 |
data-target="#swtr-navbar-collapse"> |
24 |
|
25 |
<span class="sr-only">Toggle navigation</span> |
26 |
<span class="icon-bar"></span> |
27 |
<span class="icon-bar"></span> |
28 |
<span class="icon-bar"></span> |
29 |
</button> |
30 |
<a class="navbar-brand" href="#/home"> |
31 |
CLink: Community Linked Open Cultuur Data |
32 |
</a> |
33 |
</div> |
34 |
<!-- Collect the nav links, forms, and other content for toggling --> |
35 |
<div class="collapse navbar-collapse" id="swtr-navbar-collapse"> |
36 |
<ul class="nav navbar-nav navbar-right"> |
37 |
<li class="active"> <a href="#/home" title="Home"> |
38 |
<span class="glyphicon glyphicon-home"></span> |
39 |
</a></li> |
40 |
<li> <a href="#/search" title="Search External Sources"> |
41 |
<span class="glyphicon glyphicon-search"></span> |
42 |
</a></li> |
43 |
<li> <a href="#/play" title="My Playarea"> |
44 |
<span class="glyphicon glyphicon-user"></span> |
45 |
</a></li> |
46 |
|
47 |
<li> <a href="#/linked-data" title="Linked Data"> |
48 |
<span class="glyphicon glyphicon-globe"></span> |
49 |
</a></li> |
50 |
<li> <a id="sign-in" href="#" title=""> |
51 |
<span id="signinview"> Sign In </span> |
52 |
</a></li> |
53 |
</ul> |
54 |
</div> |
55 |
</div> |
56 |
</header> |
57 |
|
58 |
<div id="swtr-root" class="container"> |
59 |
<div id="helpview-container"></div> |
60 |
|
61 |
<div id="home-page" class="page"> |
62 |
<div class="jumbotron"> |
63 |
<h1> CLink: Community Linked Open Cultuur Data </h1> |
64 |
<p> |
65 |
There are over 30 data sets in <a href="http://www.opencultuurdata.nl"> |
66 |
Open Cultuur Data.</a> Using CLink, one can |
67 |
bookmark, annotate, tag and discover the social enrichment of the data |
68 |
by a community of interest. |
69 |
</p> |
70 |
<p> |
71 |
CLink provides annotation and tagging of images that are searchable in |
72 |
the <a href="http://www.opencultuurdata.nl">OCD</a> dataset and also |
73 |
tagging and connecting to images that are outside the dataset. |
74 |
The annotations/tags of a person are announced and made available for |
75 |
other users who can further filter the users of interest and tags or |
76 |
datasets of interest. |
77 |
</p> |
78 |
<!-- <p> --> |
79 |
<!-- <a class="btn btn-info btn-lg" href="#/search">Start Searching and Tagging</a> --> |
80 |
<!-- </p> --> |
81 |
<div class="row home-links"> |
82 |
<div class="col-md-4"> |
83 |
<a href="#/search" class="btn btn-info btn-lg"> |
84 |
<span class="glyphicon glyphicon-search"></span> |
85 |
Search |
86 |
</a> |
87 |
</div> |
88 |
<div class="col-md-4"> |
89 |
<a href="#/play" class="btn btn-info btn-lg"> |
90 |
<span class="glyphicon glyphicon-user"></span> |
91 |
Personal PlayArea |
92 |
</a> |
93 |
</div> |
94 |
<div class="col-md-4"> |
95 |
<a href="#/linked-data" class="btn btn-info btn-lg"> |
96 |
<span class="glyphicon glyphicon-globe"></span> |
97 |
Linked Data |
98 |
</a> |
99 |
</div> |
100 |
</div> |
101 |
</div> |
102 |
<hr/> |
103 |
<p> |
104 |
<h3> |
105 |
<span class="glyphicon glyphicon-search"></span> |
106 |
Search |
107 |
</h3> |
108 |
<h4> |
109 |
Search uses <a href="opencultuurdata.nl">opencultuurdata.nl</a> |
110 |
APIs to look for images from the datases provided by OCD collection. |
111 |
One can then start annotating an image of interest. |
112 |
Such an image is marked and is available in the play |
113 |
area [<span class="glyphicon glyphicon-user"></span>] of the user. |
114 |
</h4> |
115 |
</p> |
116 |
<p> |
117 |
<h3> |
118 |
<span class="glyphicon glyphicon-user"></span> |
119 |
Personal PlayArea |
120 |
</h3> |
121 |
<h4> |
122 |
A user can view all annotated images. The tags used in |
123 |
annotations are also shown as a list and can be used for filtering the |
124 |
set of images. User can also choose to annotate an image outside the |
125 |
OCD collection by using the image URL. |
126 |
</h4> |
127 |
</p> |
128 |
<p> |
129 |
<h3> |
130 |
<span class="glyphicon glyphicon-globe"></span> |
131 |
Linked Data |
132 |
</h3> |
133 |
<h4> |
134 |
All images that are tagged by all users are available for browsing, |
135 |
filtering based on selecting or deselecting users (and their |
136 |
annotations); and also by selecting and deselecting tags of interest. |
137 |
</h4> |
138 |
</p> |
139 |
|
140 |
<hr/> |
141 |
|
142 |
<footer style="text-align: center; font-size: 0.9em;"> |
143 |
<!--p>This app is part of the <a href="http://www.opencultuurdata.nl/challenge-english/"> |
144 |
Open Cuultur Data challenge</a> |
145 |
</p--> |
146 |
<p> |
147 |
We use <a href="https://login.persona.org/about">Mozilla Persona</a> for identifying |
148 |
users, <a href="http://annotorious.github.io/">Annotorious</a> for image annotation and |
149 |
<a href="http://janastu.org/technoscience/index.php/Sweet_Web">SWeeT Web</a> |
150 |
for assimilating the linked open data announced by users. [opensource cc] |
151 |
</p> |
152 |
<p> |
153 |
[<b>Clink</b>: Middle English clinken, probably from Middle Dutch klinken, of |
154 |
imitative origin.] |
155 |
</p> |
156 |
</footer> |
157 |
</div> |
158 |
|
159 |
<div id="play-page" class="page"></div> |
160 |
|
161 |
<!-- the search page --> |
162 |
<div id="search-page" class="page"></div> |
163 |
|
164 |
<div id="linked-data-page" class="page"> |
165 |
<div id="tag-cloud"> |
166 |
<div class="col-md-5"> |
167 |
<label>Tags:</label> |
168 |
<ul class="list-group" id="tags-tag-cloud"></ul> |
169 |
</div> |
170 |
<div class="col-md-5"> |
171 |
<label>Users:</label> |
172 |
<ul class="list-group" id="user-tag-cloud"></ul> |
173 |
</div> |
174 |
</div> |
175 |
<div id="gallery"> |
176 |
</div> |
177 |
</div> |
178 |
|
179 |
</div> |
180 |
<div id="app-overlay"></div> |
181 |
|
182 |
<script> |
183 |
window.swtr = window.swtr || {}; |
184 |
swtr.swtstoreURL = function() { return '{{ config.swtstoreURL }}'; } |
185 |
swtr.endpoints = { |
186 |
'get': '/api/sweets/q', |
187 |
'post': '/api/sweets', |
188 |
'auth': '/oauth/authorize', |
189 |
'login': '/auth/login', |
190 |
'logout': '/auth/logout' |
191 |
}; |
192 |
swtr.access_token = '{{ access_token }}'; |
193 |
swtr.refresh_token = '{{ refresh_token }}'; |
194 |
swtr.app_id = '{{ config.app_id }}'; |
195 |
swtr.oauth_redirect_uri = '{{ config.redirect_uri }}'; |
196 |
window.onload = function() { |
197 |
swtr.init(); |
198 |
}; |
199 |
</script> |
200 |
<script src="{{ url_for('static', filename='js/lib/jquery-1.10.2.min.js') }}"></script> |
201 |
<script src="{{ url_for('static', filename='js/lib/d3.js') }}"></script> |
202 |
<script src="{{ url_for('static', filename='js/lib/d3.layout.cloud.js') }}"></script> |
203 |
<script src="{{ url_for('static', filename='js/lib/bootstrap.min.js') }}"></script> |
204 |
<script src="{{ url_for('static', filename='js/lib/underscore-1.5.2.min.js') }}"></script> |
205 |
<script src="{{ url_for('static', filename='js/lib/backbone-1.0.0.min.js') }}"></script> |
206 |
<script src="{{ url_for('static', filename='js/lib/annotorious.debug.js') }}"></script> |
207 |
<script src="{{ url_for('static', filename='js/lib/custom-fields-plugin.js') }}"></script> |
208 |
<script src="{{ url_for('static', filename='js/oauth.js') }}"></script> |
209 |
<script src="{{ url_for('static', filename='js/lib/bootstrap-tags.min.js') }}"></script> |
210 |
<script src="{{ url_for('static', filename='js/img_swtr.js') }}"></script> |
211 |
<script src="{{ url_for('static', filename='js/main.js') }}"></script> |
212 |
|
213 |
<!-- underscore.js templates --> |
214 |
<script type="text/template" id="helpview-template"> |
215 |
<div class="row"> |
216 |
<div class="col-md-8"> |
217 |
<div id="helpview" class="bg-info"> |
218 |
<span class="label label-primary">Tip</span> |
219 |
<span id="helpview-text"></span> |
220 |
<a class="close">×</a> |
221 |
</div> |
222 |
</div> |
223 |
<div class="col-md-4"></div> |
224 |
</div> |
225 |
</script> |
226 |
<script type="text/template" id="sweet-template"> |
227 |
<li class="sweet"> |
228 |
<a href="#">@<%= who %></a> <strong>#<%= what %></strong> |
229 |
/<a href="<%= where %>"><%= where.substr(0, 30) + '...' %></a> |
230 |
<p><%= how %></p> |
231 |
</li> |
232 |
</script> |
233 |
<script type="text/template" id="dropdown-template"> |
234 |
<div id="tags-input"></div> |
235 |
<select class="form-control" id="custom-dropdown"> |
236 |
<option value="comment" selected>Comment</option> |
237 |
<option value="title" >Title</option> |
238 |
<option value="tags">Tags</option> |
239 |
<option value="link">Link</option> |
240 |
</select> |
241 |
</script> |
242 |
<script type="text/template" id="popup-template"> |
243 |
<span class="annotorious-popup-text"> |
244 |
<ul class="custom-style-popup"> |
245 |
<li class="custom-popup-line" ><span>Title: </span><%= Label %></li> |
246 |
<li class="custom-popup-line"><span>Comment: </span><%= Comment %></li> |
247 |
<li class="custom-popup-line"><span>Tags: </span><%= Tags %></li> |
248 |
<li class="custom-popup-line"><span>Related Links: </span><%= Links %></li> |
249 |
</ul> |
250 |
</span> |
251 |
</script> |
252 |
<script type="text/template" id="play-page-template"> |
253 |
<!-- second row: image URL input box and Load button --> |
254 |
<div class="row" id="user-input-row"> |
255 |
<div class="col-md-8"> |
256 |
<form class="form-inline" role="form"> |
257 |
<div class="form-group col-md-11"> |
258 |
<label class="sr-only" for="user-input">Enter URL of an image or web page</label> |
259 |
<input class="form-control" type="text" |
260 |
placeholder="Enter URL of an image or web page" id="user-input"> |
261 |
</div> |
262 |
<button type="submit" class="btn btn-info" id="user-input-submit">Load</button> |
263 |
</form> |
264 |
</div> |
265 |
<div class="col-md-4"> |
266 |
</div> |
267 |
</div> <!-- end second row --> |
268 |
<!-- third row - control panel? --> |
269 |
<div class="row" id="control-panel"> |
270 |
<div class="col-md-8"> |
271 |
<form class="form-inline" role="form"> |
272 |
<div class="form-group"> |
273 |
<button class="btn btn-default" id="sweet">Sweet</button> |
274 |
</div> |
275 |
</form> |
276 |
</div> |
277 |
<div class="col-md-4"></div> |
278 |
</div> <!-- end third row -- > |
279 |
<!-- fourth row: the image annotation window --> |
280 |
<div class="row"> |
281 |
<div id="img-annotation-wrapper" class="col-md-12 col-xs-12 col-lg-12 col-sm-12 well"> |
282 |
<div id="img-anno-controls"> |
283 |
<form class="form-inline" role="form"> |
284 |
<div class="form-group"> |
285 |
<label class="checkbox-inline"> |
286 |
<input type="checkbox" id="toggle-anno-areas"> Show annotated areas |
287 |
</label> |
288 |
</div> |
289 |
</form> |
290 |
</div> |
291 |
{% if url %} |
292 |
<img src="{{ url }}" id="annotatable-img" class="img-responsive" alt="Annotation Workbench"> |
293 |
{% else %} |
294 |
<img src="" id="annotatable-img" class="img-responsive" alt="Annotation Workbench"> |
295 |
{% endif %} |
296 |
</div> |
297 |
</div> <!-- end fourth row --> |
298 |
|
299 |
<div id="sweet-list-wrapper"> |
300 |
<ul id="sweet-list"></ul> |
301 |
<div class="btn-grp"> |
302 |
<button class="btn btn-default" id="sweet-cancel">Cancel</button> |
303 |
<button class="btn btn-primary" id="post-sweet">Sweet</button> |
304 |
</div> |
305 |
</div> |
306 |
</script> |
307 |
<script type="text/template" id="search-page-template"> |
308 |
<div class="row" id="search-user-input-row"> |
309 |
<div class="col-md-8"> |
310 |
<form class="form-inline" role="form"> |
311 |
<div class="form-group col-md-11"> |
312 |
<label class="sr-only" for="search-user-input">Enter search query</label> |
313 |
<input class="form-control" type="text" |
314 |
placeholder="Enter search query" id="search-user-input"> |
315 |
</div> |
316 |
<button type="submit" class="btn btn-info" id="search-user-input-submit"> |
317 |
Go |
318 |
</button> |
319 |
</form> |
320 |
</div> |
321 |
<div class="col-md-4"> |
322 |
</div> |
323 |
</div> |
324 |
</script> |
325 |
<script type="text/template" id="ocd-view-base-template"> |
326 |
<div id="ocd-hud"> |
327 |
<span id="ocd-total-results"></span> |
328 |
</div> |
329 |
<div id="ocd-results"></div> |
330 |
<ul class="pager"> |
331 |
<li class="previous"> <a href="#">« Previous </a></li> |
332 |
<li class="next"> <a href="#"> Next » </a></li> |
333 |
</ul> |
334 |
</script> |
335 |
<script type="text/template" id="ocd-item-template"> |
336 |
<div class="col-sm-6 col-md-4 ocd-item"> |
337 |
<h4> <%= title %> </h4> |
338 |
<div class="media"> |
339 |
<a href="<%= media_url %>"> |
340 |
<img src="" class="responsive thumb-image"> |
341 |
</a> |
342 |
</div> |
343 |
<div class="text">Authors: <%= authors %> </div> |
344 |
<div class="text">Description: <%= description %> </div> |
345 |
</div> |
346 |
</script> |
347 |
<script type="text/template" id="ocd-item-cover-template"> |
348 |
<div class="ocd-item-cover"> |
349 |
Mark and load this image to annotate |
350 |
<button class="btn btn-xs btn-default pull-left ocd-item-mark">Mark</button> |
351 |
<a class="close">×</a> |
352 |
<div class="clearfix"></div> |
353 |
</div> |
354 |
</script> |
355 |
<script type="text/template" id="filter-users"> |
356 |
<ul> |
357 |
<label> |
358 |
<input type="checkbox" name="<%= who %>" checked="checked"> |
359 |
<%= who %> |
360 |
</label> |
361 |
</ul> |
362 |
</script> |
363 |
<script type="text/template" id="filter-tags"> |
364 |
<ul> |
365 |
<input type="checkbox" checked="checked" name=<%= tag %>> |
366 |
<label><%= tag %></label> |
367 |
</ul> |
368 |
</script> |
369 |
<script type="text/template" id="gallery-item-template"> |
370 |
<div class="col-md-4 col-sm-6 ocd-item"> |
371 |
<div class="media"> |
372 |
<img src="<%= how.src %>" class="responsive thumb-image"> |
373 |
</div> |
374 |
<div class="text">Author: <%= who %> </div> |
375 |
<div class="text">Tags: <%= how.tags %> </div> |
376 |
</div> |
377 |
</script> |
378 |
<script type="text/template" id="linked-data-list-template"> |
379 |
<li class="list-group-item"> |
380 |
<span class="badge"> <%= weight %> </span> |
381 |
<p><%= who %></p> |
382 |
</li> |
383 |
</script> |
384 |
</body> |
385 |
</html> |