buildrelease
[openafs-wiki.git] / TWiki / TWikiPrefsDotPm.mdwn
1 # <a name="Package &lt;code&gt;TWiki::Prefs="></a> Package =TWiki::Prefs
2
3 The Prefs class is a singleton that implements management of preferences. It uses a stack of TWiki::Prefs::PrefsCache objects to store the preferences for global, web, user and topic contexts, and provides the means to look up preferences in these.
4
5 Preferences from different places stack on top of each other, so there are global preferences, then site, then web (and subweb and subsubweb), then topic, included topic and so on. Each level of the stack is tagged with a type identifier.
6
7 The module also maintains a separate of the preferences found in every topic and web it reads. This supports the lookup of preferences for webs and topics that are not on the stack, and must not be chained in (you can't allow a user to override protections from their home topic!)
8
9 <div>
10   <ul>
11     <li><a href="#Package =TWiki::Prefs="> Package TWiki::Prefs</a><ul>
12         <li><a href="#ClassMethod <strong>new</strong> ($session[,$ca"> ClassMethod new <tt>($session[,$cache])</tt></a></li>
13         <li><a href="#ObjectMethod *push_GlobalPrefere"> ObjectMethod pushGlobalPreferences <tt>()</tt></a></li>
14         <li><a href="#ObjectMethod <strong>pushPreferences</strong> ("> ObjectMethod pushPreferences <tt>($web,$topic,$type)</tt></a></li>
15         <li><a href="#ObjectMethod *push_WebPreference"> ObjectMethod pushWebPreferences <tt>($web)</tt></a></li>
16         <li><a href="#ObjectMethod *push_PreferencesVa"> ObjectMethod pushPreferencesValues <tt>($type,\%values)</tt></a></li>
17         <li><a href="#ObjectMethod <strong>mark</strong> ()"> ObjectMethod mark <tt>()</tt></a></li>
18         <li><a href="#ObjectMethod <strong>resetTo</strong> ($mark)"> ObjectMethod resetTo <tt>($mark)</tt></a></li>
19         <li><a href="#ObjectMethod *get_PreferencesVal"> ObjectMethod getPreferencesValue <tt>($key) -&gt; $value</tt></a></li>
20         <li><a href="#ObjectMethod <strong>isFinalised</strong> ($key"> ObjectMethod isFinalised <tt>($key)</tt></a></li>
21         <li><a href="#ObjectMethod *get_TopicPreferenc"> ObjectMethod getTopicPreferencesValue <tt>($key,$web,$topic) -&gt; $value</tt></a></li>
22         <li><a href="#get_TextPreferencesValue( $key,"> getTextPreferencesValue( $key, $text, $web, $topic ) -&gt; $value</a></li>
23         <li><a href="#ObjectMethod *get_WebPreferences"> ObjectMethod getWebPreferencesValue <tt>($key,$web) -&gt; $value</tt></a></li>
24         <li><a href="#ObjectMethod stringify() -> $tex">ObjectMethod stringify() -&gt; $text</a></li>
25       </ul>
26     </li>
27   </ul>
28 </div>
29
30 ## <a name="ClassMethod &lt;strong&gt;new&lt;/strong&gt; ($session[,$ca"></a> [[ClassMethod]] **new** `($session[,$cache])`
31
32 Creates a new Prefs object. If $cache is defined, it will be pushed onto the stack.
33
34 ## <a name="ObjectMethod &lt;strong&gt;push_GlobalPrefere"></a> [[ObjectMethod]] \*pushGlobalPreferences `()`
35
36 Add global preferences to this preferences stack.
37
38 ## <a name="ObjectMethod &lt;strong&gt;pushPreferences&lt;/strong&gt; ("></a> [[ObjectMethod]] **pushPreferences** `($web,$topic,$type)`
39
40 - `$web` - web to read from
41 - `$topic` - topic to read
42 - `$type` - DEFAULT, SITE, USER, SESSION, WEB, TOPIC or PLUGIN
43 - `$prefix` - key prefix for all preferences (used for plugins)
44
45 Reads preferences from the given topic, and pushes them onto the preferences stack.
46
47 ## <a name="ObjectMethod &lt;strong&gt;push_WebPreference"></a> [[ObjectMethod]] \*pushWebPreferences `($web)`
48
49 Pushes web preferences. Web preferences for a particular web depend on the preferences of all containing webs.
50
51 ## <a name="ObjectMethod &lt;strong&gt;push_PreferencesVa"></a> [[ObjectMethod]] \*pushPreferencesValues `($type,\%values)`
52
53 Push a new preference level using type and values given
54
55 ## <a name="ObjectMethod &lt;strong&gt;mark&lt;/strong&gt; ()"></a> [[ObjectMethod]] **mark** `()`
56
57 Return a marker representing the current top of the preferences stack. Used to remember the stack when new web and topic preferences are pushed during a topic include.
58
59 ## <a name="ObjectMethod &lt;strong&gt;resetTo&lt;/strong&gt; ($mark)"></a> [[ObjectMethod]] **resetTo** `($mark)`
60
61 Resets the preferences stack to the given mark, to recover after a topic include.
62
63 ## <a name="ObjectMethod &lt;strong&gt;get_PreferencesVal"></a> [[ObjectMethod]] \*getPreferencesValue `($key) -> $value`
64
65 - =$key - key to look up
66
67 Returns the value of the preference `$key`, or undef.
68
69 Looks up local preferences when the level topic is the same as the current web,topic in the session.
70
71 ## <a name="ObjectMethod &lt;strong&gt;isFinalised&lt;/strong&gt; ($key"></a> [[ObjectMethod]] **isFinalised** `($key)`
72
73 Return true if $key is finalised somewhere in the prefs stack
74
75 ## <a name="ObjectMethod &lt;strong&gt;get_TopicPreferenc"></a> [[ObjectMethod]] \*getTopicPreferencesValue `($key,$web,$topic) -> $value`
76
77 Recover a preferences value that is defined in a specific topic. Does not recover web, user or global settings.
78
79 Intended for use in protections mechanisms, where the order doesn't match the prefs stack.
80
81 ## <a name="get_TextPreferencesValue( $key,"></a><a name="get_TextPreferencesValue( $key, "></a> getTextPreferencesValue( $key, $text, $web, $topic ) -&gt; $value
82
83 Get a preference value from the settings in the text. The values are **not** cached.
84
85 ## <a name="ObjectMethod &lt;strong&gt;get_WebPreferences"></a> [[ObjectMethod]] \*getWebPreferencesValue `($key,$web) -> $value`
86
87 Recover a preferences value that is defined in the webhome topic of a specific web.. Does not recover user or global settings, but does recover settings from containing webs.
88
89 Intended for use in protections mechanisms, where the order doesn't match the prefs stack.
90
91 ## <a name="ObjectMethod stringify() - $text"></a> [[ObjectMethod]] stringify() -&gt; $text
92
93 Generate a TML-formatted version of the current preferences