vumix/commit
fixes for first user test at BandG
author | Michiel Hildebrand |
---|---|
Tue Mar 27 00:37:29 2012 +0200 | |
committer | Michiel Hildebrand |
Tue Mar 27 00:37:29 2012 +0200 | |
commit | ca6a7113156237577e3981a57d081ce81cddd7f0 |
tree | c6e74d0dc8f4287c24cfaf55a6cf39fd2550cbb6 |
parent | 0f2b59769a54c176c20aae9ae3c105fb7cf5e2cd |
Diff style: patch stat
diff --git a/applications/vumix.pl b/applications/vumix.pl index 41ad3ff..15b817d 100644 --- a/applications/vumix.pl +++ b/applications/vumix.pl @@ -22,13 +22,16 @@ :- use_module(library(graph_version)). :- use_module(applications(annotation)). +:- use_module(library(user_process)). /*************************************************** * http handlers ***************************************************/ +:- http_handler(cliopatria(vumix/annotate), http_vumix_annotate, []). :- http_handler(cliopatria(vumix), http_vumix, []). +:- http_handler(cliopatria(vumix/session/finish), http_vumix_finish, []). /*************************************************** @@ -44,27 +47,93 @@ * http replies ***************************************************/ -%% http_vumix(+Request) +%% http_vumix_annotate(+Request) % % Generate page to annotate a vumix. -http_vumix(Request) :- +http_vumix_annotate(Request) :- http_parameters(Request, [ target(Target, [uri, description('URI of the object to be annotated') ]), - field(Fields, + field(Fields0, [zero_or_more, description('URI of annotation field') ]) ]), + ( Fields0 = [] + -> Fields = ['http://semanticweb.cs.vu.nl/prestoprime/personAnnotation', + 'http://semanticweb.cs.vu.nl/prestoprime/placeAnnotation', + 'http://semanticweb.cs.vu.nl/prestoprime/nameAnnotation', + 'http://semanticweb.cs.vu.nl/prestoprime/subjectAnnotation'] + ; Fields = Fields0 + ), ( setting(login, true) - -> authorized(write(_,_)) - ; true + -> authorized(write(_,_)), + logged_on(User) + ; logged_on(User, anonymous) ), + user_process(User, Target, _), html_page(Target, Fields). +user_process(User, Target, Process) :- + ( current_user_process(Process), + rdf(Process, rdf:type, pprime:'Annotation'), + rdf(Process, opmv:used, Target) + -> true + ; create_user_process(User, [rdf:type=pprime:'Annotation', + opmv:used=Target + ], Process) + ), + start_user_process(Process). + + +http_vumix_finish(Request) :- + ( current_user_process(Process) + -> end_user_process(Process) + ; true + ), + http_redirect(see_other, location_by_id(http_vumix), Request). + + +http_vumix(_Request) :- + ensure_logged_on(User), + findall(URI, rdf(URI, rdf:type, pprime:'TestFragment'), Fragments), + reply_html_page( + [ title(['Fragments']) + ], + [table(tbody(\html_fragments(Fragments, User)))]). + +html_fragments([], _) --> !. +html_fragments([F|Fs], User) --> + { fragment_label(F, Label), + findall(Time, annotated_fragment(F, User, _Process, Time), Times), + http_link_to_id(http_vumix_annotate, [target(F)], Link) + }, + html(tr([td(a(href(Link), Label)), + td(\html_times(Times)) + ])), + html_fragments(Fs, User). + +html_times([]) --> !. +html_times([T|Ts]) --> + html(div(T)), + html_times(Ts). + +fragment_label(Fragment, Label) :- + ( rdf(Fragment, dcterms:title, literal(Title)) + -> Label = Title + ; rdf(Fragment, dcterms:id, literal(Id)) + -> Label = Id + ; rdf_global_id(_:Label, Fragment) + ). + +annotated_fragment(Fragment, User, Process, EndTime) :- + rdf(Process, opmv:used, Fragment), + rdf(Process, opmv:wasControlledBy, User), + rdf(Process, opmv:wasEndedAt, literal(type(xsd:date, EndTime))). + /*************************************************** * annotation page ***************************************************/ @@ -86,7 +155,11 @@ html_page(Target, Fields) :- div(id(bd), div([id(layout), class('yui3-g')], [ div([id(fields), class('yui3-u')], - \html_annotation_fields(Fields)), + [ div(class(bd), + \html_annotation_fields(Fields)), + div(class(ft), + a(href(location_by_id(http_vumix_finish)), done)) + ]), div([id(media), class('yui3-u')], [ div(id(title), []), div(id(video), []), @@ -103,8 +176,9 @@ html_page(Target, Fields) :- % hack for mbh demo video_source(R, Video) :- rdf_has(R, pprime:source, FragmentId), + !, concat_atom(['http://eculture2.cs.vu.nl/pprime/videos/',FragmentId,'.mp4'], Video). - +video_source(_R, @null). %% html_annotation_fields(+FieldURIs) % diff --git a/config-available/load_mbh_example.pl b/config-available/load_mbh_example.pl index 0abe1c9..76928c2 100644 --- a/config-available/load_mbh_example.pl +++ b/config-available/load_mbh_example.pl @@ -6,15 +6,16 @@ load_mbh_example :- rdf_load(rdf('mbh_example.ttl')), % load example video and config file - rdf_attach_library(vocs), - rdf_load_library(gtaa), - http_link_to_id(http_vumix, [target('http://semanticweb.cs.vu.nl/prestoprime/video18702'), - field('http://semanticweb.cs.vu.nl/prestoprime/personAnnotation'), - field('http://semanticweb.cs.vu.nl/prestoprime/placeAnnotation'), - field('http://semanticweb.cs.vu.nl/prestoprime/nameAnnotation'), - field('http://semanticweb.cs.vu.nl/prestoprime/subjectAnnotation') + http_link_to_id(http_vumix_annotate, [target('http://semanticweb.cs.vu.nl/prestoprime/video18702'), + field('http://semanticweb.cs.vu.nl/prestoprime/personAnnotation'), + field('http://semanticweb.cs.vu.nl/prestoprime/placeAnnotation'), + field('http://semanticweb.cs.vu.nl/prestoprime/nameAnnotation'), + field('http://semanticweb.cs.vu.nl/prestoprime/subjectAnnotation') ], Location), http_handler(cliopatria(p0), http_redirect(moved, Location), []). + +:- load_mbh_example. +:- rdf_load(rdf('mbh_test_fragments.ttl')). diff --git a/rdf/mbh_example.ttl b/rdf/mbh_example.ttl index a5e724a..23fadfe 100644 --- a/rdf/mbh_example.ttl +++ b/rdf/mbh_example.ttl @@ -5,18 +5,14 @@ @prefix dc: <http://purl.org/dc/terms/> . @prefix skos: <http://www.w3.org/2004/02/skos/core#> . -pprime:video18702 - a pprime:Video ; - dc:id "18702" ; - dc:title "Appie op de bus" ; - dc:description "Ouder worden is lang niet altijd gemakkelijk. Eenzaam -heid en een geisoleerd leven liggen op de loer. De 91- jarige Appie Beukers uit -Den Haag kijkt er wel voor uit dat hij achter de geraniums terechtkomt. Hij heef -t de manier gevonden om nog volop aan het sociale leven deel te nemen. Hij rijdt - namelijk vijf dagen per week mee op een taxibusje om te helpen" ; - pprime:duration "34300" ; - pprime:slug "appie-bus" ; - pprime:source <http://eculture2.cs.vu.nl/pprime/videos/18702.mp4> . + +#pprime:video18702 +# a pprime:Video ; +# dc:id "18702" ; +# dc:title "Appie op de bus" ; +# pprime:duration "34300" ; +# pprime:slug "appie-bus" ; +# pprime:source <http://eculture2.cs.vu.nl/pprime/videos/18702.mp4> . pprime:personAnnotation @@ -42,3 +38,4 @@ pprime:subjectAnnotation rdfs:label "Onderwerp"@nl ; dc:comment "voeg subject termen toe toe"@nl ; :source "/api/autocomplete?q={query}&filter={\"scheme\":\"http://data.beeldengeluid.nl/gtaa/OnderwerpenBenG\"}" . + diff --git a/rdf/mbh_test_fragments.ttl b/rdf/mbh_test_fragments.ttl new file mode 100644 index 0000000..844d348 --- /dev/null +++ b/rdf/mbh_test_fragments.ttl @@ -0,0 +1,199 @@ +@prefix : <http://semanticweb.cs.vu.nl/prestoprime/> . + +:video18701 a :TestFragment . +:video18702 a :TestFragment . +:video18704 a :TestFragment . +:video18705 a :TestFragment . +:video18732 a :TestFragment . +:video18733 a :TestFragment . +:video18770 a :TestFragment . +:video18794 a :TestFragment . +:video18859 a :TestFragment . +:video18867 a :TestFragment . +:video18876 a :TestFragment . +:video18902 a :TestFragment . +:video18903 a :TestFragment . +:video18920 a :TestFragment . +:video18947 a :TestFragment . +:video18952 a :TestFragment . +:video18989 a :TestFragment . +:video19053 a :TestFragment . +:video19054 a :TestFragment . +:video19088 a :TestFragment . +:video19143 a :TestFragment . +:video19146 a :TestFragment . +:video19188 a :TestFragment . +:video19190 a :TestFragment . +:video19192 a :TestFragment . +:video19194 a :TestFragment . +:video19207 a :TestFragment . +:video19211 a :TestFragment . +:video19254 a :TestFragment . +:video19260 a :TestFragment . +:video19263 a :TestFragment . +:video19330 a :TestFragment . +:video19332 a :TestFragment . +:video19364 a :TestFragment . +:video19366 a :TestFragment . +:video19371 a :TestFragment . +:video19387 a :TestFragment . +:video19389 a :TestFragment . +:video19390 a :TestFragment . +:video27305 a :TestFragment . +:video27307 a :TestFragment . +:video27317 a :TestFragment . +:video27320 a :TestFragment . +:video27321 a :TestFragment . +:video27382 a :TestFragment . +:video27384 a :TestFragment . +:video27399 a :TestFragment . +:video27564 a :TestFragment . +:video27569 a :TestFragment . +:video27573 a :TestFragment . +:video27609 a :TestFragment . +:video27610 a :TestFragment . +:video27611 a :TestFragment . +:video27629 a :TestFragment . +:video27630 a :TestFragment . +:video27653 a :TestFragment . +:video27679 a :TestFragment . +:video27763 a :TestFragment . +:video27765 a :TestFragment . +:video27935 a :TestFragment . +:video28049 a :TestFragment . +:video28145 a :TestFragment . +:video28206 a :TestFragment . +:video28208 a :TestFragment . +:video28297 a :TestFragment . +:video28299 a :TestFragment . +:video28355 a :TestFragment . +:video28356 a :TestFragment . +:video28412 a :TestFragment . +:video28415 a :TestFragment . +:video28416 a :TestFragment . +:video28437 a :TestFragment . +:video28444 a :TestFragment . +:video28496 a :TestFragment . +:video28502 a :TestFragment . +:video28600 a :TestFragment . +:video28602 a :TestFragment . +:video28749 a :TestFragment . +:video28828 a :TestFragment . +:video28845 a :TestFragment . +:video28878 a :TestFragment . +:video28881 a :TestFragment . +:video28882 a :TestFragment . +:video28899 a :TestFragment . +:video28928 a :TestFragment . +:video28929 a :TestFragment . +:video28954 a :TestFragment . +:video29007 a :TestFragment . +:video29012 a :TestFragment . +:video29038 a :TestFragment . +:video29204 a :TestFragment . +:video29208 a :TestFragment . +:video29343 a :TestFragment . +:video29469 a :TestFragment . +:video29470 a :TestFragment . +:video29471 a :TestFragment . +:video29512 a :TestFragment . +:video29551 a :TestFragment . +:video29552 a :TestFragment . +:video29571 a :TestFragment . +:video29572 a :TestFragment . +:video29574 a :TestFragment . +:video29575 a :TestFragment . +:video29616 a :TestFragment . +:video29622 a :TestFragment . +:video29640 a :TestFragment . +:video29645 a :TestFragment . +:video29662 a :TestFragment . +:video29669 a :TestFragment . +:video29701 a :TestFragment . +:video29724 a :TestFragment . +:video29757 a :TestFragment . +:video29760 a :TestFragment . +:video29761 a :TestFragment . +:video29762 a :TestFragment . +:video29827 a :TestFragment . +:video29828 a :TestFragment . +:video29829 a :TestFragment . +:video29832 a :TestFragment . +:video29861 a :TestFragment . +:video29862 a :TestFragment . +:video29863 a :TestFragment . +:video29864 a :TestFragment . +:video29865 a :TestFragment . +:video29895 a :TestFragment . +:video29932 a :TestFragment . +:video29934 a :TestFragment . +:video29963 a :TestFragment . +:video29965 a :TestFragment . +:video29966 a :TestFragment . +:video30002 a :TestFragment . +:video30004 a :TestFragment . +:video30005 a :TestFragment . +:video30035 a :TestFragment . +:video30073 a :TestFragment . +:video30074 a :TestFragment . +:video30075 a :TestFragment . +:video30107 a :TestFragment . +:video30124 a :TestFragment . +:video30144 a :TestFragment . +:video30145 a :TestFragment . +:video30158 a :TestFragment . +:video30177 a :TestFragment . +:video30178 a :TestFragment . +:video30249 a :TestFragment . +:video30250 a :TestFragment . +:video30252 a :TestFragment . +:video30302 a :TestFragment . +:video30303 a :TestFragment . +:video30307 a :TestFragment . +:video30322 a :TestFragment . +:video30332 a :TestFragment . +:video30379 a :TestFragment . +:video30380 a :TestFragment . +:video30448 a :TestFragment . +:video30524 a :TestFragment . +:video30547 a :TestFragment . +:video30580 a :TestFragment . +:video30584 a :TestFragment . +:video30660 a :TestFragment . +:video30662 a :TestFragment . +:video30674 a :TestFragment . +:video30726 a :TestFragment . +:video30757 a :TestFragment . +:video30761 a :TestFragment . +:video30791 a :TestFragment . +:video30819 a :TestFragment . +:video30854 a :TestFragment . +:video30856 a :TestFragment . +:video30857 a :TestFragment . +:video30859 a :TestFragment . +:video30885 a :TestFragment . +:video30917 a :TestFragment . +:video30919 a :TestFragment . +:video30951 a :TestFragment . +:video30956 a :TestFragment . +:video30957 a :TestFragment . +:video31046 a :TestFragment . +:video31196 a :TestFragment . +:video31256 a :TestFragment . +:video31295 a :TestFragment . +:video31303 a :TestFragment . +:video31310 a :TestFragment . +:video31375 a :TestFragment . +:video31376 a :TestFragment . +:video31377 a :TestFragment . +:video31379 a :TestFragment . +:video31422 a :TestFragment . +:video31425 a :TestFragment . +:video31426 a :TestFragment . +:video31454 a :TestFragment . +:video31491 a :TestFragment . +:video31496 a :TestFragment . +:video31497 a :TestFragment . +:video31569 a :TestFragment . +:video31571 a :TestFragment . +:video31572 a :TestFragment . diff --git a/web/css/vumix.css b/web/css/vumix.css index cd5f8cd..86df8ba 100644 --- a/web/css/vumix.css +++ b/web/css/vumix.css @@ -2,9 +2,16 @@ #layout { height: 100%; } -#fields { +#fields .bd { height: 490px; } +#fields .ft { + border-top: 2px solid white; + padding-top: 5px; +} +#fields .ft button { + width: 100%; +} /* editable title field */ #title {