image_annotation/commit
lang pref
author | Jacco van Ossenbruggen |
---|---|
Tue May 29 09:52:15 2012 +0200 | |
committer | Jacco van Ossenbruggen |
Tue May 29 09:52:15 2012 +0200 | |
commit | 2d251f9a74d8bd88d155ee72176d1086fa0a78cc |
tree | e9c4f505405d095dd37716b95a5267dec60f6b56 |
parent | d4c1482abaaa1ef77e8d4a611de0843e32386780 |
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).