<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rt-wiki.bestpractical.com/index.php?action=history&amp;feed=atom&amp;title=BasicVsAdvancedInterface</id>
	<title>BasicVsAdvancedInterface - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rt-wiki.bestpractical.com/index.php?action=history&amp;feed=atom&amp;title=BasicVsAdvancedInterface"/>
	<link rel="alternate" type="text/html" href="https://rt-wiki.bestpractical.com/index.php?title=BasicVsAdvancedInterface&amp;action=history"/>
	<updated>2026-08-22T20:04:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://rt-wiki.bestpractical.com/index.php?title=BasicVsAdvancedInterface&amp;diff=329&amp;oldid=prev</id>
		<title>Admin: 2 revisions imported</title>
		<link rel="alternate" type="text/html" href="https://rt-wiki.bestpractical.com/index.php?title=BasicVsAdvancedInterface&amp;diff=329&amp;oldid=prev"/>
		<updated>2016-04-06T20:03:19Z</updated>

		<summary type="html">&lt;p&gt;2 revisions imported&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This feature provides a simple way to offer privileged users a basic interface (i.e. the [[SelfService]] interface) or an advanced interface (the default RT at a Glance interface). Non-privileged users will still only ever see the [[SelfService]] screens. A cookie keeps track of the user&amp;#039;s preference. This patch was created against 3.6.3 source.&lt;br /&gt;
&lt;br /&gt;
There are two files to patch, Elements/Header and SelfService/Elements/Header, as well as two new files (Elements/UIPrefCookieCheck and Elements/UIPrefSwitchView). To install the feature:&lt;br /&gt;
&lt;br /&gt;
# create the directory &amp;amp;lt;rt-root&amp;amp;gt;/local/html/Elements, if needed&lt;br /&gt;
# copy the file &amp;amp;lt;rt-root&amp;amp;gt;/share/html/Elements/Header to &amp;amp;lt;rt-root&amp;amp;gt;/local/html/Elements, if it does not already exist&lt;br /&gt;
# create the directory &amp;amp;lt;rt-root&amp;amp;gt;/local/html/SelfService/Elements, if needed&lt;br /&gt;
# copy the file &amp;amp;lt;rt-root&amp;amp;gt;/share/html/SelfService/Elements/Header] to &amp;amp;lt;rt-root&amp;amp;gt;/local/html/SelfService/Elements, if it does not already exist&lt;br /&gt;
# create the file &amp;amp;lt;rt-root&amp;amp;gt;/local/html/Elements/UIPrefCookieCheck, with the contents shown below&lt;br /&gt;
# create the file &amp;amp;lt;rt-root&amp;amp;gt;/local/html/Elements/UIPrefSwitchView, with the contents shown below&lt;br /&gt;
# create the file &amp;amp;lt;rt-root&amp;amp;gt;/UIPref.diff, with the contents shown below&lt;br /&gt;
# apply the patch (assuming &amp;lt;code&amp;gt;&amp;amp;lt;rt-root&amp;amp;gt; == /opt/rt3&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
 $ cd /opt/rt3&lt;br /&gt;
 $ patch -p0 &amp;amp;lt;UIPref.diff&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;lt;rt-root&amp;amp;gt;/local/html/Elements/UIPrefCookieCheck ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;lt;%INIT&amp;amp;gt;&lt;br /&gt;
 #***** fetch the cookie *****&lt;br /&gt;
 my(%cookies) = CGI::Cookie-&amp;amp;gt;fetch();&lt;br /&gt;
 my($cookiename) = &amp;quot;RT_USER_UI_PREF_&amp;quot; . $RT::rtname . &amp;quot;.&amp;quot; . $ENV{&amp;#039;SERVER_PORT&amp;#039;};&lt;br /&gt;
 my($cookie) = $cookies{$cookiename};&lt;br /&gt;
 &lt;br /&gt;
 #***** default to basic mode *****&lt;br /&gt;
 my($mode) = &amp;#039;Basic&amp;#039;;&lt;br /&gt;
 $mode = $cookie-&amp;amp;gt;value() if $cookie;&lt;br /&gt;
 &lt;br /&gt;
 #***** if I have no cookie, set a cookie to the default *****&lt;br /&gt;
 if (! $cookie) {&lt;br /&gt;
     my($newcookie) = new CGI::Cookie(&lt;br /&gt;
         -name  =&amp;amp;gt; $cookiename,&lt;br /&gt;
         -value =&amp;amp;gt; $mode,&lt;br /&gt;
         -path  =&amp;amp;gt; $RT::WebPath,&lt;br /&gt;
         -secure =&amp;amp;gt; ($RT::WebSecureCookies ? 1 :0)&lt;br /&gt;
         -expires =&amp;amp;gt;  &amp;#039;+1M&amp;#039;,&lt;br /&gt;
     );&lt;br /&gt;
     $r-&amp;amp;gt;headers_out-&amp;amp;gt;{&amp;#039;Set-Cookie&amp;#039;} = $newcookie-&amp;amp;gt;as_string;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if (($mode eq &amp;#039;Basic&amp;#039;) &amp;amp;amp;&amp;amp;amp; (! $viaSelfService)) {&lt;br /&gt;
     #***** I want basic, but was called under advanced *****&lt;br /&gt;
     $m-&amp;amp;gt;comp(&amp;quot;/SelfService/index.html&amp;quot;, %ARGS, SkipUIPrefCookieCheck =&amp;amp;gt; !0);&lt;br /&gt;
     $m-&amp;amp;gt;abort();&lt;br /&gt;
 }&lt;br /&gt;
 elsif (($mode eq &amp;#039;Advanced&amp;#039;) &amp;amp;amp;&amp;amp;amp; ($viaSelfService)) {&lt;br /&gt;
     #***** I want advanced, but was called under basic *****&lt;br /&gt;
     $m-&amp;amp;gt;comp(&amp;quot;/index.html&amp;quot;, %ARGS, SkipUIPrefCookieCheck =&amp;amp;gt; !0);&lt;br /&gt;
     $m-&amp;amp;gt;abort();&lt;br /&gt;
 }&lt;br /&gt;
 &amp;amp;lt;/%INIT&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;%ARGS&amp;amp;gt;&lt;br /&gt;
 $viaSelfService =&amp;amp;gt; undef&lt;br /&gt;
 &amp;amp;lt;/%ARGS&amp;amp;gt;&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;lt;rt-root&amp;amp;gt;/local/html/Elements/UIPrefSwitchView ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;lt;%INIT&amp;amp;gt;&lt;br /&gt;
 #***** fetch the cookie *****&lt;br /&gt;
 my(%cookies) = CGI::Cookie-&amp;amp;gt;fetch();&lt;br /&gt;
 my($cookiename) = &amp;quot;RT_USER_UI_PREF_&amp;quot; . $RT::rtname . &amp;quot;.&amp;quot; . $ENV{&amp;#039;SERVER_PORT&amp;#039;};&lt;br /&gt;
 my($cookie) = $cookies{$cookiename};&lt;br /&gt;
 &lt;br /&gt;
 #***** default to basic mode *****&lt;br /&gt;
 my($mode) = &amp;#039;Basic&amp;#039;;&lt;br /&gt;
 $mode = $cookie-&amp;amp;gt;value() if $cookie;&lt;br /&gt;
 &lt;br /&gt;
 my($newmode) = ($mode eq &amp;#039;Basic&amp;#039; ? &amp;#039;Advanced&amp;#039; : &amp;#039;Basic&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 my($newcookie) = new CGI::Cookie(&lt;br /&gt;
     -name  =&amp;amp;gt; $cookiename,&lt;br /&gt;
     -value =&amp;amp;gt; $newmode,&lt;br /&gt;
     -path  =&amp;amp;gt; $RT::WebPath,&lt;br /&gt;
     -secure =&amp;amp;gt; ($RT::WebSecureCookies ? 1 :0),&lt;br /&gt;
     -expires =&amp;amp;gt;  &amp;#039;+1M&amp;#039;,&lt;br /&gt;
     );&lt;br /&gt;
 &lt;br /&gt;
 $r-&amp;amp;gt;headers_out-&amp;amp;gt;{&amp;#039;Set-Cookie&amp;#039;} = $newcookie-&amp;amp;gt;as_string;&lt;br /&gt;
 &lt;br /&gt;
 if ($newmode eq &amp;#039;Basic&amp;#039;) {&lt;br /&gt;
     RT::Interface::Web::Redirect($RT::WebURL . &amp;quot;SelfService/index.html&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
     RT::Interface::Web::Redirect($RT::WebURL . &amp;quot;index.html&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 $m-&amp;amp;gt;abort();&lt;br /&gt;
 &amp;amp;lt;/%INIT&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;%ARGS&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/%ARGS&amp;amp;gt;&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;lt;rt-root&amp;amp;gt;/UIPref.diff ==&lt;br /&gt;
&lt;br /&gt;
 --- share/html/Elements/Header	2007-02-14 13:10:35.000000000 -0500&lt;br /&gt;
 +++ local/html/Elements/Header	2007-02-14 13:12:43.000000000 -0500&lt;br /&gt;
 @@ -92,6 +92,14 @@&lt;br /&gt;
  %     if ($session{&amp;#039;CurrentUser&amp;#039;}-&amp;amp;gt;HasRight( Right =&amp;amp;gt; &amp;#039;ModifySelf&amp;#039;, Object =&amp;amp;gt; $RT::System )) {&lt;br /&gt;
      | &amp;amp;lt;a href=&amp;quot;&amp;amp;lt;%$RT::WebPath%&amp;amp;gt;&amp;amp;lt;%$Prefs%&amp;amp;gt;&amp;quot;&amp;amp;gt;&amp;amp;lt;&amp;amp;amp;|/l&amp;amp;amp;&amp;amp;gt;Preferences&amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
  %     }&lt;br /&gt;
 +%     if ($session{&amp;#039;CurrentUser&amp;#039;}-&amp;amp;gt;Privileged) {&lt;br /&gt;
 +%        if ($viaSelfService) {&lt;br /&gt;
 +    | &amp;amp;lt;a href=&amp;quot;&amp;amp;lt;%$RT::WebPath%&amp;amp;gt;/Elements/UIPrefSwitchView&amp;quot;&amp;amp;gt;&amp;amp;lt;&amp;amp;amp;|/l&amp;amp;amp;&amp;amp;gt;Advanced&amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
 +%        }&lt;br /&gt;
 +%        else {&lt;br /&gt;
 +    | &amp;amp;lt;a href=&amp;quot;&amp;amp;lt;%$RT::WebPath%&amp;amp;gt;/Elements/UIPrefSwitchView&amp;quot;&amp;amp;gt;&amp;amp;lt;&amp;amp;amp;|/l&amp;amp;amp;&amp;amp;gt;Basic&amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
 +%        }&lt;br /&gt;
 +%     }&lt;br /&gt;
  % } else {&lt;br /&gt;
      &amp;amp;lt;&amp;amp;amp;|/l&amp;amp;amp;&amp;amp;gt;Not logged in.&amp;amp;lt;/&amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 % }&lt;br /&gt;
 @@ -104,6 +112,11 @@&lt;br /&gt;
 % }&lt;br /&gt;
 &lt;br /&gt;
  &amp;amp;lt;%INIT&amp;amp;gt;&lt;br /&gt;
 +# check the UI Pref cookie unless we&amp;#039;ve done so already&lt;br /&gt;
 +if (($session{&amp;#039;CurrentUser&amp;#039;}) &amp;amp;amp;&amp;amp;amp; ($session{&amp;#039;CurrentUser&amp;#039;}-&amp;amp;gt;Privileged) &amp;amp;amp;&amp;amp;amp; (! $SkipUIPrefCookieCheck)) {&lt;br /&gt;
 +   $m-&amp;amp;gt;comp(&amp;quot;/Elements/UIPrefCookieCheck&amp;quot;, %ARGS);&lt;br /&gt;
 +}&lt;br /&gt;
 +&lt;br /&gt;
  $r-&amp;amp;gt;headers_out-&amp;amp;gt;{&amp;#039;Pragma&amp;#039;} = &amp;#039;no-cache&amp;#039;;&lt;br /&gt;
  $r-&amp;amp;gt;headers_out-&amp;amp;gt;{&amp;#039;Cache-control&amp;#039;} = &amp;#039;no-cache&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 @@ -128,4 +141,7 @@&lt;br /&gt;
  $URL =&amp;amp;gt; undef&lt;br /&gt;
  $RSSAutoDiscovery =&amp;amp;gt; undef&lt;br /&gt;
  $onload =&amp;amp;gt; undef&lt;br /&gt;
 +$viaSelfService =&amp;amp;gt; undef&lt;br /&gt;
 +$SkipUIPrefCookieCheck =&amp;amp;gt; undef&lt;br /&gt;
  &amp;amp;lt;/%ARGS&amp;amp;gt;&lt;br /&gt;
 --- share/html/SelfService/Elements/Header	2007-02-14 13:11:09.000000000 -0500&lt;br /&gt;
 +++ local/html/SelfService/Elements/Header	2007-02-14 13:12:03.000000000 -0500&lt;br /&gt;
 @@ -43,5 +43,5 @@&lt;br /&gt;
  %# those contributions and any derivatives thereof.&lt;br /&gt;
  %#&lt;br /&gt;
  %# END BPS TAGGED BLOCK }}}&lt;br /&gt;
 -&amp;amp;lt;&amp;amp;amp; /Elements/Header, %ARGS, Prefs =&amp;amp;gt; &amp;#039;/SelfService/Prefs.html&amp;#039; &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 +&amp;amp;lt;&amp;amp;amp; /Elements/Header, %ARGS, Prefs =&amp;amp;gt; &amp;#039;/SelfService/Prefs.html&amp;#039;, viaSelfService =&amp;amp;gt; !0 &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;&amp;amp;amp; /SelfService/Elements/Tabs, %ARGS &amp;amp;amp;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
If you find any problems with it, let me know -- [[JoeCasadonte]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>