yaz/commit

add support to add new user

authorMichiel Hildebrand
Sun Nov 6 16:33:49 2011 +0100
committerMichiel Hildebrand
Sun Nov 6 16:33:49 2011 +0100
commit498180940e966e4fe3341cf7d5b52164346ddb89
tree796e1c31a88f4cf21069b0b4f2c82b97542d408b
parentd5c47160eca72a3f4113cc95d8059e444fa25b7c
Diff style: patch stat
diff --git a/api/edm_export.pl b/api/edm_export.pl
index d9b20af..44dd40f 100644
--- a/api/edm_export.pl
+++ b/api/edm_export.pl
@@ -55,8 +55,7 @@ http_yaz_sip_update(Request) :-
 	%convert_annotations(Annotations, _XMLString),
 	%submit_mpeg(Id, XMLString),
 	% end TagGarden process
-	(   rdf(Process, opmv:used, Video),
-	    rdf(Process, rdf:type, pprime:'TagGarden')
+	(   current_user_process(Process)
 	->  end_user_process(Process)
 	;   true
 	),
diff --git a/applications/yaz_garden.pl b/applications/yaz_garden.pl
index 20a2087..982f608 100644
--- a/applications/yaz_garden.pl
+++ b/applications/yaz_garden.pl
@@ -29,8 +29,10 @@
 
 :- http_handler(yaz(garden), http_yaz_garden, []).
 :- http_handler(yaz(gardenaccept), http_yaz_garden_accept, []).
+:- http_handler(yaz(gardenremove), http_yaz_garden_remove, []).
 :- http_handler(yaz(data/reconcileentries), http_data_reconcile_entries, []).
 
+
 reconcile_source(gtaa,
 		 'GTAA',
 		 Server,
@@ -73,6 +75,7 @@ http_yaz_garden_accept(Request) :-
 				[description('Current video')])
 			]),
 	user_property(User0, url(User)),
+	%User = pprime_test, % hack for testbed
 	(   current_user_process(Process),
 	    rdf(Process, rdf:type, pprime:'TagGarden'),
 	    rdf(Process, opmv:used, Video)
@@ -94,6 +97,32 @@ http_yaz_garden_accept(Request) :-
 			]).
 
 
+%%	http_yaz_garden_remove(+Request)
+%
+%	Emit an HTML page to link tags to concepts.
+
+http_yaz_garden_remove(Request) :-
+	http_parameters(Request,
+			[ video(Video,
+				[description('Current video')])
+			]),
+	rdf_transaction(forall(visible_garden_process(Video, Process),
+			       rdf_assert(Process, rdf:type, pprime:'Hidden', Process))),
+	reply_html_page(yaz,
+			[ title(['YAZ accept - ', Video])
+			],
+			[ div(['You hide the previous gardening sessions for ', Video]),
+			  div(['go back to ',
+			       a(href(location_by_id(http_yaz_home)), 'your videos')
+			      ])
+			]).
+
+visible_garden_process(Video, Process) :-
+	rdf(Process, opmv:used, Video),
+	rdf(Process, rdf:type, pprime:'TagGarden'),
+	\+ rdf(Process, rdf:type, pprime:'Hidden').
+
+
 %%	http_yaz_garden(+Request)
 %
 %	Emit an HTML page to link tags to concepts.
diff --git a/applications/yaz_home.pl b/applications/yaz_home.pl
index 46f9021..ca1ab43 100644
--- a/applications/yaz_home.pl
+++ b/applications/yaz_home.pl
@@ -1,5 +1,6 @@
 :- module(yaz_home,
-	  [http_yaz_home/1
+	  [http_yaz_home/1,
+	   http_yaz_new_user/1
 	  ]).
 
 :- use_module(library(http/http_dispatch)).
@@ -39,6 +40,46 @@ http_yaz_home(Request) :-
 	;   html_home_page
 	).
 
+%%	testbed home page
+%
+%
+
+http_yaz_new_user(Request) :-
+	http_parameters(Request,
+			[  user(User,
+				[optional(true),
+				 descritpion('Name of new user')])
+			]),
+	(   var(User)
+	->  html_new_user_page(http_yaz_new_user, [])
+	;   current_user(User)
+	->  html_new_user_page(http_yaz_new_user,
+		      [user(User),
+		       message('name already exists')])
+	;   password_hash(presto, PW),
+	    user_add(User, [realname(User),password(PW),allow([read(_,_),write(_,_)])]),
+	    login(User),
+	    http_location_by_id(http_yaz_home, Home),
+	    throw(http_reply(moved_temporary(Home)))
+	).
+
+html_new_user_page(F, Options) :-
+	option(user(User), Options, ''),
+	option(message(Message), Options, ''),
+	reply_html_page([ title(['YAZ - new user'])
+			],
+			[ \html_requires(css('yaz.css')),
+			  div('style="text-align:center;margin-top:20%"',
+			      [ h3('Enter your name:'),
+				form(action(location_by_id(F)),
+				     [ input([type(text),name(user),value(User)])
+				     ]),
+				div([style='color:red;size:smalller'],
+				    Message)
+			      ])
+			]).
+
+
 
 		 /*******************************
 		 *               html		*
@@ -71,18 +112,18 @@ html_user_home_page(User) :-
 	video_queue(Queue0),
 	active_videos(User, Active0),
 	moderated_videos(User, Moderated0),
-	suggested_videos(User, Suggested0),
+	%suggested_videos(User, Suggested0),
 	list_limit(Queue0, 5, Queue, _),
 	list_limit(Active0, 5, Active, _),
 	list_limit(Moderated0, 5, Moderated, _),
-	list_limit(Suggested0, 5, Suggested, _),
+	%list_limit(Suggested0, 5, Suggested, _),
 	reply_html_page(yaz,
 			[ title(['YAZ - ', User])
 			],
-			[ \html_topic(Active, active, true, User),
-			  \html_topic(Suggested, suggested, false, User),
-			  \html_topic(Queue, queue, false, User),
-			  \html_topic(Moderated, moderated, true, User)
+			[ \html_topic(Queue, queue, false, User),
+			  \html_topic(Active, active, false, User),
+			  %\html_topic(Suggested, suggested, false, User),
+			  \html_topic(Moderated, moderated, false, User)
 			]).
 
 
diff --git a/config-available/yaz.pl b/config-available/yaz.pl
index 76e825d..bf78663 100644
--- a/config-available/yaz.pl
+++ b/config-available/yaz.pl
@@ -32,7 +32,8 @@
 % http path and handlers
 http:location(yaz, cliopatria(yaz), []).
 
-:- http_handler(cliopatria(home), http_yaz_home, []).
+%:- http_handler(cliopatria(home), http_yaz_home, []).
+:- http_handler(cliopatria(home), http_yaz_new_user, []).
 
 % lod
 
diff --git a/lib/user_process.pl b/lib/user_process.pl
index ac9b7ca..14a34f2 100644
--- a/lib/user_process.pl
+++ b/lib/user_process.pl
@@ -93,11 +93,11 @@ start_user_process(Process) :-
 	rdfs_individual_of(Process, opmv:'Process'),
 	get_time(StartTime0),
 	format_iso_dateTime(StartTime0, StartTime),
-	(   rdf(Process, opmv:wasStartedAt, _)
-	->  true
-	;   rdf_transaction(rdf_assert(Process, opmv:wasStartedAt, literal(type(xsd:date, StartTime)), Process))
-	),
-	debug(user_process, 'Process ~w started at ~w', [Process, StartTime]).
+	(   rdf(Process, opmv:wasStartedAt, literal(type(xsd:date, OldTime)))
+	->  debug(user_process, 'Process ~w was already start at ~w', [Process, OldTime])
+	;   rdf_transaction(rdf_assert(Process, opmv:wasStartedAt, literal(type(xsd:date, StartTime)), Process)),
+	    debug(user_process, 'Process ~w started at ~w', [Process, StartTime])
+	).
 
 %%	end_user_process(+Process)
 %
@@ -105,10 +105,13 @@ start_user_process(Process) :-
 
 end_user_process(Process) :-
 	rdfs_individual_of(Process, opmv:'Process'),
-	get_time(EndTime0),
-	format_iso_dateTime(EndTime0, EndTime),
-	rdf_transaction(rdf_assert(Process, opmv:wasEndedAt, literal(type(xsd:date, EndTime)), Process)),
-	debug(user_process, 'Process ~w ended at ~w', [Process, EndTime]).
+	(   rdf(Process, opmv:wasEndedAt, literal(type(xsd:date, OldTime)))
+	->  debug(user_process, 'Process ~w was already ended at ~w', [Process, OldTime])
+	;   get_time(EndTime0),
+	    format_iso_dateTime(EndTime0, EndTime),
+	    rdf_transaction(rdf_assert(Process, opmv:wasEndedAt, literal(type(xsd:date, EndTime)), Process)),
+	    debug(user_process, 'Process ~w ended at ~w', [Process, EndTime])
+	).
 
 %%	join_user_process(+Process, +User)
 %
diff --git a/lib/videos.pl b/lib/videos.pl
index 40f73ea..eb26fbf 100644
--- a/lib/videos.pl
+++ b/lib/videos.pl
@@ -122,7 +122,8 @@ active_video(User, Video, Process, Time) :-
 	rdf(Process, opmv:wasControlledBy, User),
 	rdf(Process, rdf:type, pprime:'TagGarden'),
 	rdf(Process, opmv:wasStartedAt, literal(Time)),
-	\+ rdf(Process, opmv:wasEndedAt, _).
+	\+ rdf(Process, opmv:wasEndedAt, _),
+	\+ rdf(Process, rdf:type, pprime:'Hidden').
 
 %%	moderated_video(?User, ?Video, ?Process, -StartTime, -EndTime)
 %
@@ -133,7 +134,8 @@ moderated_video(User, Video, Process, StartTime, EndTime) :-
 	rdf(Process, opmv:wasControlledBy, User),
 	rdf(Process, rdf:type, pprime:'TagGarden'),
 	rdf(Process, opmv:wasStartedAt, literal(StartTime)),
-	rdf(Process, opmv:wasEndedAt, literal(EndTime)).
+	rdf(Process, opmv:wasEndedAt, literal(EndTime)),
+	\+ rdf(Process, rdf:type, pprime:'Hidden').
 
 %%	suggested_video(?User, ?Video, ?Process)
 %
@@ -147,7 +149,8 @@ suggested_video(User, Video) :-
 
 in_moderation(Video, Process) :-
 	rdf(Process, opmv:used, Video),
-	rdf(Process, rdf:type, pprime:'TagGarden').
+	rdf(Process, rdf:type, pprime:'TagGarden'),
+	\+ rdf(Process, rdf:type, pprime:'Hidden').
 
 video_label(1) -->
 	html(video).