image_annotation/commit

lang pref

authorJacco van Ossenbruggen
Tue May 29 09:52:15 2012 +0200
committerJacco van Ossenbruggen
Tue May 29 09:52:15 2012 +0200
commit2d251f9a74d8bd88d155ee72176d1086fa0a78cc
treee9c4f505405d095dd37716b95a5267dec60f6b56
parentd4c1482abaaa1ef77e8d4a611de0843e32386780
Diff style: patch stat
diff --git a/config-available/DEFAULTS b/config-available/DEFAULTS
index 2715841..6e03729 100644
--- a/config-available/DEFAULTS
+++ b/config-available/DEFAULTS
@@ -1,3 +1,4 @@
 config(image_annotation,    link).
 config(load_rma_example,    link).
 config(enable_autocomplete, link).
+config(ann_preferences, link).
diff --git a/config-available/ann_preferences.pl b/config-available/ann_preferences.pl
new file mode 100644
index 0000000..c8f9cb2
--- /dev/null
+++ b/config-available/ann_preferences.pl
@@ -0,0 +1,50 @@
+:- module(ann_preferences, [
+			   set_user_preferences/2
+			  ]).
+
+:- use_module(library(http/http_session)).
+:- use_module(library(semweb/rdf_db)).
+:- use_module(library(settings)).
+:- use_module(cliopatria(hooks)).
+:- use_module(user(user_db)).
+
+:- rdf_meta
+	cliopatria:user_preference_db(r,o),
+	cliopatria:user_preference_default(r,o),
+	set_user_preferences(r,o).
+
+
+:- setting(user:lang, atom, en, 'Preferred language').
+
+                 /*******************************
+                 *   USER/SESSION PREFERENCES   *
+                 *******************************/
+
+%%      cliopatria:user_preference_db(?Property:atom, ?Value:rdf_object) is nondet.
+%
+%       Query properties for the current   user/session.  This mechanism
+%       allows code to access information about the user/session without
+%       committing to a particular  implementation.   The  predicate and
+%       values are compatible with RDF to   allow  implementing the user
+%       database in RDF, typically using the OpenID as subject.
+
+cliopatria:user_preferences_db(Property, Value) :-
+	logged_on(User, anonymous),
+	http_session_data(rdf(User, Property, Value)).
+
+set_user_preferences(Property, Value) :-
+	cliopatria:user_preferences_db(Property, Value), !.
+
+set_user_preferences(Property, Value) :-
+	logged_on(User, anonymous),
+	http_session_assert(rdf(User, Property, Value)).
+
+%%      cliopatria:user_preference_default(?Property:atom, ?Value:rdf_object) is nondet.
+%
+%       Provides defaults for the user_preference/2.
+%
+%       @see user_preference_db/2
+
+cliopatria:user_preference_default(Prop, literal(Value)) :-
+	rdf_equal(Prop, user:lang),
+	setting(user:lang, Value).