[Rt-commit] rt branch, menu-redo, created. c40ee3c368a658bcac4d6b978ae6e285ec912c30

jesse jesse at bestpractical.com
Wed Oct 21 13:14:26 EDT 2009


The branch, menu-redo has been created
        at  c40ee3c368a658bcac4d6b978ae6e285ec912c30 (commit)

- Log -----------------------------------------------------------------
commit 826bc56e7f2f8541a0236bd550415b721f5e5ddb
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Oct 21 12:56:58 2009 -0400

    Step 1: remove all the old Tabs files, extracting their content into the dispatcher

diff --git a/lib/RT/Dispatcher.pm b/lib/RT/Dispatcher.pm
index 475e4c8..422cac5 100644
--- a/lib/RT/Dispatcher.pm
+++ b/lib/RT/Dispatcher.pm
@@ -178,6 +178,895 @@ on qr{^/Ticket/Graphs/(\d+)} => run {
     show( '/Ticket/Graphs/Render' );
 };
 
+
+
+
+
+# Navigation
+
+# Top level tabs /Elements/Tabs
+my $basetopactions = {
+	a => { html => $m->scomp('/Elements/CreateTicket')	
+		},
+	b => { html => $m->scomp('/Elements/SimpleSearch') 
+		}
+	};
+my $basetabs = {     a => { title => _('Homepage'),
+                           path => '',
+                         },
+                    ab => { title => _('Simple Search'),
+                        path => 'Search/Simple.html'
+                         },
+                    b => { title => _('Tickets'),
+                        path => 'Search/Build.html'
+                      },
+                    c => { title => _('Tools'),
+                           path => 'Tools/index.html'
+                         },
+                 };
+
+if (Jifty->web->current_user->has_right( right => 'ShowConfigTab', 
+				       object => RT->system )) {
+    $basetabs->{e} = { title => _('Configuration'),
+                       path => 'Admin/',
+		     };
+}
+
+if (Jifty->web->current_user->has_right( right => 'ModifySelf', 
+				       object => RT->system )) {
+    $basetabs->{k} = { title => _('Preferences'),
+                       path => 'Prefs/Other.html'
+		     };
+}
+
+if (Jifty->web->current_user->has_right( right => 'ShowApprovalsTab',
+                        object => RT->system )) {
+    $basetabs->{p} = { title => _('Approval'),
+                        path => 'Approvals/'
+            };
+}
+
+if (!defined $toptabs) {
+   $toptabs = $basetabs;
+}
+if (!defined $topactions) {
+   $topactions = $basetopactions;
+}
+                    
+# Now let callbacks add their extra tabs
+$m->callback(
+    topactions => $topactions, 
+    toptabs    => $toptabs,
+    %ARGS
+);
+
+#/Tools tabs
+my $tabs = {
+    a => {
+        title => _('Dashboards'),
+        path  => 'Dashboards/index.html',
+    },
+    c => {
+        title => _('Reports'),
+        path  => 'Tools/Reports/index.html',
+    },
+    d => {
+        title => _('My Day'),
+        path  => 'Tools/MyDay.html',
+    },
+};
+
+#/Tools/Reports tabs
+my $tabs = {
+    a => {
+        title => _('Resolved by owner'),
+        path  => 'Tools/Reports/ResolvedByOwner.html',
+    },
+    b => {
+        title => _('Resolved in date range'),
+        path  => 'Tools/Reports/ResolvedByDates.html',
+    },
+    c => {
+        title => _('Created in a date range'),
+        path  => 'Tools/Reports/CreatedByDates.html',
+    },
+};
+
+
+
+
+# /Tools/Dashboards tabs
+my $tabs;
+my $real_subtab = $current_subtab;
+if ( $dashboard_obj and $dashboard_obj->id ) {
+
+    my $name = $dashboard_obj->name;
+
+    my $modify  = "Dashboards/Modify.html?id=" . $dashboard_obj->id;
+    my $queries = "Dashboards/Queries.html?id=" . $dashboard_obj->id;
+    my $render  = "Dashboards/" . $dashboard_obj->id . "/$name";
+
+    $tabs->{"this"} = {
+        title   => $dashboard_obj->name,
+        path    => $modify,
+        current_subtab  => $current_subtab,
+        subtabs => {
+            a_Basics => { title => _('Basics'),
+                          path  => $modify,
+            },
+
+            b_Queries => { title => _('Queries'),
+                           path  => $queries,
+            },
+
+            c_Subscription => { title => _('Subscription'),
+                                path  =>
+                                    "Dashboards/Subscription.html?dashboard_id=" . $dashboard_obj->id
+            },
+
+
+            z_Preview => { title => _('Show'),
+                           path  => $render,
+            },
+        }
+    };
+
+    delete $tabs->{"this"}{"subtabs"}{"c_Subscription"}
+        unless $dashboard_obj->current_user_can_subscribe;
+
+    $tabs->{"this"}{"subtabs"}{"z_Preview"}{path} = $real_subtab
+        if $real_subtab =~ /Render/
+        || $real_subtab =~ /Dashboard\/\d+/;
+
+    $current_subtab = $modify;
+}
+
+$tabs->{"A"} = { title => _('Select dashboard'),
+                 path  => "Dashboards/index.html" };
+
+my $dashboard = RT::Dashboard->new( current_user => Jifty->web->current_user );
+my @objects = $dashboard->_privacy_objects(create => 1);
+
+if (@objects) {
+    $tabs->{"B"} = { title     => _('New dashboard'),
+                     path      => "Dashboards/Modify.html?create=1",
+                     separator => 1 };
+}
+
+
+
+
+# /SelfService Tabs
+
+<a name="skipnav" id="skipnav" accesskey="8"></a>
+<%INIT>
+my $queues = RT::Model::QueueCollection->new( current_user => Jifty->web->current_user );
+$queues->find_all_rows;
+
+my $queue_count = 0;
+my $queue_id = 1;
+
+while (my $queue = $queues->next) {
+  next unless $queue->current_user_has_right('CreateTicket');
+  $queue_id = $queue->id;
+  $queue_count++;
+  last if ($queue_count > 1);
+}
+
+if ($title) {
+$title = _("RT Self Service") . " / " . $title;
+} else {
+$title = _("RT Self Service");
+
+}
+my ($tab);
+my $tabs = { A  => { title => _('Open tickets'),
+                        path => 'SelfService/',
+                      },
+             B => { title => _('Closed tickets'),
+                         path => 'SelfService/Closed.html',
+                       },
+           };
+
+if ($queue_count > 1) {
+        $tabs->{C} = { title => _('New ticket'),
+                       path => 'SelfService/CreateTicketInQueue.html'
+                       };
+} else {
+        $tabs->{C} = { title => _('New ticket'),
+                       path => 'SelfService/Create.html?queue=' . $queue_id
+                       };
+}
+
+if (Jifty->web->current_user->has_right( right => 'ModifySelf',
+				       object => RT->system )) {
+	$tabs->{Z} = { title => _('Preferences'),
+		       path => 'SelfService/Prefs.html'
+		       };
+}
+
+my $actions = {
+	B => { html => $m->scomp('GotoTicket') 
+		}
+	};
+
+
+
+
+# /Admin/CustomFields tabs
+
+if ($id) {
+    my $cf = RT::Model::CustomField->new( current_user => Jifty->web->current_user );
+    $cf->load($id);
+    $tabs = {
+        this => {
+            title => $cf->name,
+            path  => "Admin/CustomFields/Modify.html?id=" . $id,
+            current_subtab => $current_tab,
+
+            subtabs => {
+
+                C => { title => _('Basics'),
+                       path  => "Admin/CustomFields/Modify.html?id=" . $id,
+                },
+                F => { title => _('Group rights'),
+                       path  => "Admin/CustomFields/GroupRights.html?id="
+                         . $id, },
+                G => {
+                    title => _('User rights'),
+                    path => "Admin/CustomFields/UserRights.html?id=" . $id,
+                },
+
+            } }
+
+    };
+
+
+    if ($cf->lookup_type =~ /^RT::Model::Queue-/io) {
+	$tabs->{'this'}->{subtabs}->{D} = {
+	title => _('Applies to'),
+	    path  => "Admin/CustomFields/Objects.html?id=" . $id,
+	};
+    }
+}
+
+if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminCustomField')) {
+  $tabs->{"A"} = { title => _('Select'),
+                        path => "Admin/CustomFields/",
+                           };
+  $tabs->{"B"} = { title => _('Create'),
+                        path => "Admin/CustomFields/Modify.html?create=1",
+                        separator => 1,
+                           };
+}
+
+  # Now let callbacks add their extra tabs
+  $m->callback( %ARGS, tabs => $tabs );
+
+foreach my $tab (sort keys %{$tabs->{'this'}->{'subtabs'}}) {
+    if ($tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab) {
+	$tabs->{'this'}->{'subtabs'}->{$tab}->{'subtabs'} = $subtabs;
+	$tabs->{'this'}->{'subtabs'}->{$tab}->{'current_subtab'} = $current_subtab;
+    }
+}
+if( $id ) { $current_tab = "Admin/CustomFields/Modify.html?id=" . $id }
+
+# /Admin tabs
+
+
+  my $tabs = { A => { title => _('Users'),
+			  path => 'Admin/Users/',
+			},
+	       B => { title => _('Groups'),
+			   path => 'Admin/Groups/',
+			 },
+	       C => { title => _('Queues'),
+			   path => 'Admin/Queues/',
+			 },
+	       D => { 'title' => _('Custom Fields'),
+			   path => 'Admin/CustomFields/',
+			 },
+	       E => { 'title' => _('Rules'),
+			   path => 'admin/rules/',
+			 },
+	       F => { 'title' => _('Global'),
+			   path => 'Admin/Global/',
+			 },
+	       G => { 'title' => _('Tools'),
+			   path => 'Admin/Tools/',
+			 },
+	     };
+
+# /Admin/Global tabs
+  my $tabs = {
+               B => { title => _('Templates'),
+                        path => 'Admin/Global/Templates.html',
+                      },
+                C => { title => _('Workflows'),
+                        path => 'Admin/Global/Workflows/index.html',
+                        },
+              
+                F => { title => _('Custom Fields'),
+                        path => 'Admin/Global/CustomFields/index.html',
+                        },
+
+                G => { title => _('Group rights'),
+                                path => 'Admin/Global/GroupRights.html',
+                      },
+                H => { title => _('User rights'),
+                                path => 'Admin/Global/UserRights.html',
+                      },
+                I => { title => _('RT at a glance'),
+                                path => 'Admin/Global/MyRT.html',
+                      },
+                Y => { title => _('Jifty'),
+                                path => 'Admin/Global/Jifty.html',
+                      },
+                Z => { title => _('System'),
+                                path => 'Admin/Global/System.html',
+                      },
+
+};
+
+
+#/Admin/Global/Workflows tabs
+#
+my $base = "Admin/Global/Workflows";
+my $parent_subtab;
+my $parent_subtabs = {
+    A => {
+        title => _('Select') .'/'. _('Create'),
+        path => "$base/index.html",
+    },
+    B => {
+        title => _('Localization'),
+        path => "$base/Localization.html",
+    },
+    C => {
+        title => _('Mappings'),
+        path => "$base/Mappings.html",
+    },
+};
+
+if ( $schema ) {
+    my $qs_name = $m->comp( '/Elements/QueryString', name => $schema->name );
+    $current_tab .= "?$qs_name";
+
+    $parent_subtab = "$base/Summary.html?$qs_name";
+    $parent_subtabs->{'E'} = {
+        title          => $schema->name,
+        path           => $parent_subtab,
+        separator      => 1,
+        current_subtab => $current_tab,
+        subtabs => {
+            A => {
+                title => _("Summary"),
+                path  => "$base/Summary.html?$qs_name",
+            },
+            B => {
+                title => _("Statuses"),
+                path  => "$base/Statuses.html?$qs_name",
+            },
+            C => {
+                title => _("Transitions"),
+                path  => "$base/Transitions.html?$qs_name",
+            },
+            D => {
+                title => _("Interface"),
+                path  => "$base/Interface.html?$qs_name",
+            },
+        },
+    };
+}
+else {
+    $parent_subtab = $current_tab;
+}
+
+
+# /Ticket/Elements/Tabs
+my $tabs = {};
+my $actions;
+
+my $current_toptab = "Search/Build.html", my $searchtabs = {};
+
+if ($ticket) {
+
+    my $id = $ticket->id();
+
+    if ( defined Jifty->web->session->get('tickets') ) {
+
+        # we have to update session data if we get new ItemMap
+        my $updatesession = 1 unless ( Jifty->web->session->get('tickets')->{'item_map'} );
+
+        my $item_map = Jifty->web->session->get('tickets')->item_map;
+
+        if ($updatesession) {
+            Jifty->web->session->get('tickets')->prep_for_serialization();
+        }
+
+        # Don't display prev links if we're on the first ticket
+        if ( $item_map->{ $ticket->id }->{prev} ) {
+            $searchtabs->{'_a'} = {
+                class => "nav",
+                path  => "Ticket/Display.html?id=" . $item_map->{first},
+                title => '<< ' . _('First')
+            };
+            $searchtabs->{"_b"} = {
+                class => "nav",
+                path  => "Ticket/Display.html?id="
+                    . $item_map->{ $ticket->id }->{prev},
+                title => '< ' . _('Prev')
+            };
+        }
+  
+        # Don't display next links if we're on the last ticket
+        if ( $item_map->{ $ticket->id }->{next} ) {
+            $searchtabs->{'d'} = {
+                class => "nav",
+                path  => "Ticket/Display.html?id="
+                    . $item_map->{ $ticket->id }->{next},
+                title => _('next') . ' >'
+            };
+            $searchtabs->{'e'} = {
+                class => "nav",
+                path  => "Ticket/Display.html?id=" . $item_map->{last},
+                title => _('Last') . ' >>'
+            };
+        }
+    }
+
+    $tabs->{"this"} = {
+        class          => "currentnav",
+        path           => "Ticket/Display.html?id=" . $ticket->id,
+        title          => "#" . $id,
+        current_subtab => $current_subtab
+    };
+
+    my $ticket_page_tabs = {
+        _A => {
+            title => _('Display'),
+            path  => "Ticket/Display.html?id=" . $id,
+        },
+
+        _Ab => {
+            title => _('History'),
+            path  => "Ticket/History.html?id=" . $id,
+        },
+        _B => {
+            title => _('Basics'),
+            path  => "Ticket/Modify.html?id=" . $id,
+        },
+
+        _C => {
+            title => _('Dates'),
+            path  => "Ticket/ModifyDates.html?id=" . $id,
+        },
+        _D => {
+            title => _('People'),
+            path  => "Ticket/ModifyPeople.html?id=" . $id,
+        },
+        _E => {
+            title => _('Links'),
+            path  => "Ticket/ModifyLinks.html?id=" . $id,
+        },
+        _X => {
+            title => _('Jumbo'),
+            path  => "Ticket/ModifyAll.html?id=" . $id,
+        },
+
+    };
+
+    if ( RT->config->get('enable_reminders') ) {
+        $ticket_page_tabs->{_F} = {
+            title     => _('Reminders'),
+            path      => "Ticket/Reminders.html?id=" . $id,
+            separator => 1,
+        };
+    }
+
+    foreach my $tab ( sort keys %{$ticket_page_tabs} ) {
+        if ( $ticket_page_tabs->{$tab}->{'path'} eq $current_tab ) {
+            $ticket_page_tabs->{$tab}->{"subtabs"} = $subtabs;
+            $tabs->{'this'}->{"current_subtab"}
+                = $ticket_page_tabs->{$tab}->{"path"};
+        }
+    }
+    $tabs->{'this'}->{"subtabs"} = $ticket_page_tabs;
+    $current_tab = "Ticket/Display.html?id=" . $id;
+
+    my %can = ( ModifyTicket => $ticket->current_user_has_right('ModifyTicket'), );
+
+    if ( $can{'ModifyTicket'} or $ticket->current_user_has_right('ReplyToTicket') )
+    {
+        $actions->{'F'} = {
+            title => _('Reply'),
+            path  => "Ticket/Update.html?action=respond&id=" . $id,
+        };
+    }
+
+    if ( $can{'ModifyTicket'} ) {
+        my $current = $ticket->status;
+        my $schema = $ticket->queue->status_schema;
+        my $i = 1;
+        foreach my $next ( $schema->transitions( $current ) ) {
+            my $action = $schema->transition_action( $current => $next );
+            next if $action eq 'hide';
+
+            my $path = 'Ticket/';
+            if ( $action ) {
+                $path .= "Update.html?". $m->comp(
+                    '/Elements/QueryString',
+                    action => $action,
+                    default_status => $next,
+                    id => $id
+                );
+            } else {
+                $path .= "Display.html?". $m->comp(
+                    '/Elements/QueryString',
+                    Status => $next,
+                    id => $id
+                );
+            }
+            $actions->{'G'. $i++} = {
+                path => $path,
+                title => _( $schema->transition_label( $current => $next ) ),
+            };
+        }
+    }
+
+    if ( $ticket->current_user_has_right('OwnTicket') ) {
+        if ( $ticket->owner_obj->id == RT->nobody->id ) {
+            $actions->{'B'} = {
+                path  => "Ticket/Display.html?action=take&id=" . $id,
+                title => _('Take'),
+                }
+                if $can{'ModifyTicket'}
+                    or $ticket->current_user_has_right('TakeTicket');
+        } elsif ( $ticket->owner_obj->id != Jifty->web->current_user->id ) {
+            $actions->{'C'} = {
+                path  => "Ticket/Display.html?action=steal&id=" . $id,
+                title => _('Steal'),
+                }
+                if $can{'ModifyTicket'}
+                    or $ticket->current_user_has_right('StealTicket');
+        }
+    }
+
+    if (   $can{'ModifyTicket'}
+        or $ticket->current_user_has_right('CommentOnTicket') )
+    {
+        $actions->{'E'} = {
+            title => _('Comment'),
+            path  => "Ticket/Update.html?action=comment&id=" . $id,
+        };
+    }
+
+    $actions->{'_ZZ'}
+        = { html => $m->scomp( '/Ticket/Elements/Bookmark', id => $ticket->id ),
+        };
+
+}
+
+if ( ( defined $actions->{A} || defined $actions->{B} || defined $actions->{C} )
+    && (   defined $actions->{E}
+        || defined $actions->{F}
+        || defined $actions->{G} ) )
+{
+
+    if    ( defined $actions->{C} ) { $actions->{C}->{separator} = 1 }
+    elsif ( defined $actions->{B} ) { $actions->{B}->{separator} = 1 }
+    elsif ( defined $actions->{A} ) { $actions->{A}->{separator} = 1 }
+}
+
+my $args = '';
+my $has_query = '';
+my %query_args;
+my $search_id = $ARGS{'saved_search_id'}
+            || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'searchid'} || '';
+
+$has_query = 1 if ( $ARGS{'query'} or Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'query'} );
+  
+%query_args = (
+
+        saved_search_id => ($search_id eq 'new') ? undef : $search_id,
+        query  => $ARGS{'query'}  || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'query'},
+        format => $ARGS{'format'} || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'format'},
+        order_by => $ARGS{'order_by'}
+            || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'order_by'},
+        order => $ARGS{'order'} || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'order'},
+        page  => $ARGS{'page'}  || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'page'},
+        rows_per_page  => $ARGS{'rows_per_page'}  || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'rows_per_page'},
+    );
+
+    $args = "?" . $m->comp( '/Elements/QueryString', %query_args );
+
+$tabs->{"f"} = {
+    path  => "Search/Build.html?NewQuery=1",
+    title => _('New Search')
+};
+$tabs->{"g"} = {
+    path  => "Search/Build.html" . (($has_query) ? $args : ''),
+    title => _('Edit Search')
+};
+$tabs->{"h"} = {
+    path      => "Search/Edit.html$args",
+    title     => _('Advanced'),
+    separator => 1
+};
+if ($has_query) {
+
+    if ( $current_tab =~ m{Search/Results.html} ) {
+        $current_tab = "Search/Results.html$args";
+
+        if ( Jifty->web->current_user
+            ->has_right( right => 'SuperUser', object => RT->system ) )
+        {
+            my $shred_args = $m->comp(
+                '/Elements/QueryString',
+                search          => 1,
+                plugin          => 'Tickets',
+                'Tickets:query' => $query_args{'query'},
+                'Tickets:limit' => $query_args{'rows'}
+            );
+
+            $tabs->{"shredder"} = {
+                path  => 'Admin/Tools/Shredder/?' . $shred_args,
+                title => _('Shredder')
+            };
+
+        }
+    }
+    if ( $current_tab =~ m{Search/(Bulk|Build|Edit)\.html} ) {
+        $current_tab = "Search/$1.html$args";
+    }
+
+    $tabs->{"i"} = {
+        path  => "Search/Results.html$args",
+        title => _('Show Results'),
+    };
+
+    $tabs->{"j"} = {
+        path  => "Search/Bulk.html$args",
+        title => _('Bulk Update'),
+    };
+
+}
+
+foreach my $searchtab ( keys %{$searchtabs} ) {
+    ( $searchtab =~ /^_/ )
+        ? $tabs->{ "s" . $searchtab } = $searchtabs->{$searchtab}
+        : $tabs->{ "z_" . $searchtab } = $searchtabs->{$searchtab};
+
+}
+
+# /Admin/tools
+    my $tabs = {
+        A => { title => _('System Configuration'),
+               path => 'Admin/Tools/Configuration.html',
+        },
+        E => { title => _('Shredder'),
+               path  => 'Admin/Tools/Shredder',
+        },
+    };
+
+# /Admin/Rules
+    my $tabs = {
+        A => { title => _('Select'),
+               path  => "Admin/Rules/", },
+        E => { title => _('Create'),
+               path  => 'Admin/Rules/Modify.html?create=1',
+        },
+    };
+
+# /Admin/Users tabs
+		path => "Admin/Users/Modify.html?id=".$id,
+subtabs => {
+	       Basics => { title => _('Basics'),
+				path => "Admin/Users/Modify.html?id=".$id
+			},
+	       Memberships => { title => _('Memberships'),
+			   path => "Admin/Users/Memberships.html?id=".$id
+			 },
+	       History => { title => _('History'),
+			   path => "Admin/Users/History.html?id=".$id
+			 },
+	       'MyRT' => { title => _('RT at a glance'),
+			   path => "Admin/Users/MyRT.html?id=".$id
+			 },
+	}
+};
+    if ( RT->config->get('gnupg')->{'enable'} ) {
+        $tabs->{'this'}{'subtabs'}{'GnuPG'} = {
+            title => _('GnuPG'),
+            path  => "Admin/Users/GnuPG.html?id=".$id,
+        };
+    }
+}
+
+if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminUsers')) {
+  $tabs->{"A"} = { title => _('Select'),
+  		     	path => "Admin/Users/",
+			   };
+  $tabs->{"B"} = { title => _('Create'),
+  		     	path => "Admin/Users/Modify.html?create=1",
+		separator => 1,
+	};
+}
+
+# Admin/Queues
+#
+my $tabs;
+if ($id) {
+  $tabs->{'this'}  = {
+                title => $queue_obj->name,
+  		     	path => "Admin/Queues/Modify.html?id=".$id,
+                    current_subtab => $current_tab,     
+                subtabs => {
+		 C => { title => _('Basics'),
+  		     	path => "Admin/Queues/Modify.html?id=".$id,
+			   },
+		 D => { title => _('Watchers'),
+		 	path => "Admin/Queues/People.html?id=".$id,
+		      },
+		 F => { title => _('Templates'),
+				path => "Admin/Queues/Templates.html?id=".$id,
+			      },
+
+                 G1 => { title => _('Ticket Custom Fields'),
+                        path => 'Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket&id='.$id,
+                        },
+
+                 G2 => { title => _('Transaction Custom Fields'),
+                        path => 'Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket-RT::Model::Transaction&id='.$id,
+                        },
+
+		 H => { title => _('Group rights'),
+			  path => "Admin/Queues/GroupRights.html?id=".$id,
+			},	
+		 I => { title => _('User rights'),
+			  path => "Admin/Queues/UserRights.html?id=".$id,
+			}
+        }
+        };
+}
+if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminQueue')) {
+  $tabs->{"A"} = { title => _('Select'),
+  		     	path => "Admin/Queues/",
+			   };
+  $tabs->{"B"} = { title => _('Create'),
+  		     	path => "Admin/Queues/Modify.html?create=1",
+		 separator => 1, };
+}
+
+
+# Admin/GlobalCustomFields
+
+my $tabs = {
+
+    A => {
+        title => _('Users'),
+        text  => _('Select custom fields for all users'),
+        path  => 'Admin/Global/CustomFields/Users.html',
+    },
+
+    B => {
+        title => _('Groups'),
+        text  => _('Select custom fields for all user groups'),
+        path  => 'Admin/Global/CustomFields/Groups.html',
+    },
+
+    C => {
+        title => _('Queues'),
+        text  => _('Select custom fields for all queues'),
+        path  => 'Admin/Global/CustomFields/Queues.html',
+    },
+
+    F => {
+        title => _('Tickets'),
+        text  => _('Select custom fields for tickets in all queues'),
+        path  => 'Admin/Global/CustomFields/Queue-Tickets.html',
+    },
+
+    G => {
+        title => _('Ticket Transactions'),
+        text  => _('Select custom fields for transactions on tickets in all queues'),
+        path  => 'Admin/Global/CustomFields/Queue-Transactions.html',
+    },
+
+};
+
+# Admin/Groups
+
+if ( $group_obj and $group_obj->id ) {
+$tabs->{"this"} = { class => "currentnav",                                                           
+                    path  => "Admin/Groups/Modify.html?id=" . $group_obj->id,
+                    title => $group_obj->name,
+                    current_subtab => $current_subtab,
+        subtabs => {
+        C => { title => _('Basics'),
+               path  => "Admin/Groups/Modify.html?id=" . $group_obj->id },
+
+        D => { title => _('Members'),
+               path  => "Admin/Groups/Members.html?id=" . $group_obj->id },
+
+        F => { title => _('Group rights'),
+               path  => "Admin/Groups/GroupRights.html?id=" . $group_obj->id, },
+        G => { title => _('User rights'),
+               path  => "Admin/Groups/UserRights.html?id=" . $group_obj->id, },
+        H => { title => _('History'),
+               path  => "Admin/Groups/History.html?id=" . $group_obj->id },
+    }
+}
+}
+$tabs->{"A"} = { title => _('Select'),
+                 path  => "Admin/Groups/", };
+$tabs->{"B"} = { title     => _('Create'),
+                 path      => "Admin/Groups/Modify.html?create=1",
+		 separator => 1, };
+
+# Prefs/
+my $tabs;
+$searches ||= [$m->comp("/Search/Elements/SearchesForObject", object => RT::System->new())];
+
+$tabs->{a} = {
+    title => _('Quick search'),
+	path => 'Prefs/Quicksearch.html',
+};
+
+for my $search (@$searches) {
+    $tabs->{ $search->[0] } = {
+        title => $search->[0],
+        path  => "Prefs/Search.html?"
+                 .$m->comp('/Elements/QueryString', name => ref($search->[1]).'-'.$search->[1]->id),
+    };
+}
+
+
+# User/
+
+	       a => { title => _('Settings'),
+			   path => 'Prefs/Other.html',
+			 },
+  
+             b => { title => _('About me'),
+			  path => 'User/Prefs.html',
+			},
+	       f => { title => _('Search options'),
+			   path => 'Prefs/SearchOptions.html',
+			 },
+	       r => { title => _('RT at a glance'),
+			   path => 'Prefs/MyRT.html',
+			 },
+	     };
+
+# User/Groups
+if ( $group_obj and $group_obj->id ) {
+    $tabs->{"this"} = {
+        title   => $group_obj->name,
+        path    => "User/Groups/Modify.html?id=" . $group_obj->id,
+        subtabs => {
+            Basics => { title => _('Basics'),
+                        path  => "User/Groups/Modify.html?id=" . $group_obj->id
+            },
+
+            Members => { title => _('Members'),
+                         path  => "User/Groups/Members.html?id=" . $group_obj->id
+            },
+
+        } };
+        $tabs->{'this'}->{'current_subtab'} = $current_subtab;
+         $current_subtab = "User/Groups/Modify.html?id=" . $group_obj->id,
+}
+$tabs->{"A"} = { title => _('Select group'),
+                 path  => "User/Groups/index.html" };
+$tabs->{"B"} = { title     => _('New group'),
+                 path      => "User/Groups/Modify.html?create=1",
+                 separator => 1 };
+
+
+
+# Now let callbacks add their extra tabs
+
 # Backward compatibility with old RT URLs
 
 before '/NoAuth/Logout.html' => run { redirect '/logout' };
diff --git a/share/html/Admin/Elements/CustomFieldTabs b/share/html/Admin/Elements/CustomFieldTabs
deleted file mode 100644
index b16ceac..0000000
--- a/share/html/Admin/Elements/CustomFieldTabs
+++ /dev/null
@@ -1,118 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs, 
-    current_tab => 'Admin/CustomFields/',
-    subtabs => $tabs, 
-    current_subtab => $current_tab, 
-    title => $title &>
-<%INIT>
-my $tabs;
-
-if ($id) {
-    my $cf = RT::Model::CustomField->new( current_user => Jifty->web->current_user );
-    $cf->load($id);
-    $tabs = {
-        this => {
-            title => $cf->name,
-            path  => "Admin/CustomFields/Modify.html?id=" . $id,
-            current_subtab => $current_tab,
-
-            subtabs => {
-
-                C => { title => _('Basics'),
-                       path  => "Admin/CustomFields/Modify.html?id=" . $id,
-                },
-                F => { title => _('Group rights'),
-                       path  => "Admin/CustomFields/GroupRights.html?id="
-                         . $id, },
-                G => {
-                    title => _('User rights'),
-                    path => "Admin/CustomFields/UserRights.html?id=" . $id,
-                },
-
-            } }
-
-    };
-
-
-    if ($cf->lookup_type =~ /^RT::Model::Queue-/io) {
-	$tabs->{'this'}->{subtabs}->{D} = {
-	title => _('Applies to'),
-	    path  => "Admin/CustomFields/Objects.html?id=" . $id,
-	};
-    }
-}
-
-if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminCustomField')) {
-  $tabs->{"A"} = { title => _('Select'),
-                        path => "Admin/CustomFields/",
-                           };
-  $tabs->{"B"} = { title => _('Create'),
-                        path => "Admin/CustomFields/Modify.html?create=1",
-                        separator => 1,
-                           };
-}
-
-  # Now let callbacks add their extra tabs
-  $m->callback( %ARGS, tabs => $tabs );
-
-foreach my $tab (sort keys %{$tabs->{'this'}->{'subtabs'}}) {
-    if ($tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab) {
-	$tabs->{'this'}->{'subtabs'}->{$tab}->{'subtabs'} = $subtabs;
-	$tabs->{'this'}->{'subtabs'}->{$tab}->{'current_subtab'} = $current_subtab;
-    }
-}
-if( $id ) { $current_tab = "Admin/CustomFields/Modify.html?id=" . $id }
-</%INIT>
-<%ARGS>
-$title => undef
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-</%ARGS>
diff --git a/share/html/Admin/Elements/GlobalCustomFieldTabs b/share/html/Admin/Elements/GlobalCustomFieldTabs
deleted file mode 100755
index 447707c..0000000
--- a/share/html/Admin/Elements/GlobalCustomFieldTabs
+++ /dev/null
@@ -1,105 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/SystemTabs, subtabs => $tabs, 
-    current_tab => 'Admin/Global/CustomFields/index.html', 
-    current_subtab => $current_tab, 
-    title => $title &>
-<%INIT>
-
-my $tabs = {
-
-    A => {
-        title => _('Users'),
-        text => _('Select custom fields for all users'),
-        path => 'Admin/Global/CustomFields/Users.html',
-    },
-
-    B => {
-        title => _('Groups'),
-        text => _('Select custom fields for all user groups'),
-        path => 'Admin/Global/CustomFields/Groups.html',
-    },
-
-    C => {
-        title => _('Queues'),
-        text => _('Select custom fields for all queues'),
-        path => 'Admin/Global/CustomFields/Queues.html',
-    },
-
-    F => {
-        title => _('Tickets'),
-        text => _('Select custom fields for tickets in all queues'),
-        path => 'Admin/Global/CustomFields/Queue-Tickets.html',
-    },
-
-    G => {
-        title => _('Ticket Transactions'),
-        text => _('Select custom fields for transactions on tickets in all queues'),
-        path => 'Admin/Global/CustomFields/Queue-Transactions.html',
-    },
-
-};
-  # Now let callbacks add their extra tabs
-  $m->callback( %ARGS, tabs => $tabs );
-
-  foreach my $tab (sort keys %{$tabs}) {
-    if ($tabs->{$tab}->{'path'} eq $current_tab) {
-      $tabs->{$tab}->{"subtabs"} = $subtabs;
-      $tabs->{$tab}->{"current_subtab"} = $current_subtab;
-    }
-  }
-</%INIT>
-
-  
-<%ARGS>
-$id => undef
-$current_tab => ''
-$subtabs => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Admin/Elements/GroupTabs b/share/html/Admin/Elements/GroupTabs
deleted file mode 100755
index e5cdb49..0000000
--- a/share/html/Admin/Elements/GroupTabs
+++ /dev/null
@@ -1,102 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs, 
-    subtabs => $tabs, 
-    current_tab => 'Admin/Groups/', 
-    current_subtab => $current_tab, 
-    title => $title &>
-<%INIT>
-my $tabs;
-
-if ( $group_obj and $group_obj->id ) {
-$tabs->{"this"} = { class => "currentnav",                                                           
-                    path  => "Admin/Groups/Modify.html?id=" . $group_obj->id,
-                    title => $group_obj->name,
-                    current_subtab => $current_subtab,
-        subtabs => {
-        C => { title => _('Basics'),
-               path  => "Admin/Groups/Modify.html?id=" . $group_obj->id },
-
-        D => { title => _('Members'),
-               path  => "Admin/Groups/Members.html?id=" . $group_obj->id },
-
-        F => { title => _('Group rights'),
-               path  => "Admin/Groups/GroupRights.html?id=" . $group_obj->id, },
-        G => { title => _('User rights'),
-               path  => "Admin/Groups/UserRights.html?id=" . $group_obj->id, },
-        H => { title => _('History'),
-               path  => "Admin/Groups/History.html?id=" . $group_obj->id },
-    }
-}
-}
-$tabs->{"A"} = { title => _('Select'),
-                 path  => "Admin/Groups/", };
-$tabs->{"B"} = { title     => _('Create'),
-                 path      => "Admin/Groups/Modify.html?create=1",
-		 separator => 1, };
-
-# Now let callbacks add their extra tabs
-$m->callback( %ARGS, tabs => $tabs );
-foreach my $tab ( sort keys %{$tabs->{'this'}->{'subtabs'}} ) {  
-    if ( $tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab ) {
-        $tabs->{'this'}->{'subtabs'}->{$tab}->{"subtabs"}        = $subtabs; 
-        $tabs->{'this'}->{'subtabs'}->{$tab}->{"current_subtab"} = $current_subtab; 
-    }                                                                           
-}   
-        $tabs->{'this'}->{"current_subtab"} = $current_tab; 
-        $current_tab = "Admin/Groups/Modify.html?id=".$group_obj->id if $group_obj;
-
-</%INIT>
-<%ARGS>
-$group_obj => undef
-$subtabs => undef
-$current_subtab => undef
-$current_tab => undef
-$title => undef
-</%ARGS>
-
diff --git a/share/html/Admin/Elements/QueueTabs b/share/html/Admin/Elements/QueueTabs
deleted file mode 100755
index 5e7e255..0000000
--- a/share/html/Admin/Elements/QueueTabs
+++ /dev/null
@@ -1,116 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs, 
-    subtabs => $tabs, 
-    current_tab => 'Admin/Queues/', 
-    current_subtab => $current_tab, 
-    title => $title &>
-
-<%INIT>
-my $tabs;
-if ($id) {
-  $tabs->{'this'}  = {
-                title => $queue_obj->name,
-  		     	path => "Admin/Queues/Modify.html?id=".$id,
-                    current_subtab => $current_tab,     
-                subtabs => {
-		 C => { title => _('Basics'),
-  		     	path => "Admin/Queues/Modify.html?id=".$id,
-			   },
-		 D => { title => _('Watchers'),
-		 	path => "Admin/Queues/People.html?id=".$id,
-		      },
-		 F => { title => _('Templates'),
-				path => "Admin/Queues/Templates.html?id=".$id,
-			      },
-
-                 G1 => { title => _('Ticket Custom Fields'),
-                        path => 'Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket&id='.$id,
-                        },
-
-                 G2 => { title => _('Transaction Custom Fields'),
-                        path => 'Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket-RT::Model::Transaction&id='.$id,
-                        },
-
-		 H => { title => _('Group rights'),
-			  path => "Admin/Queues/GroupRights.html?id=".$id,
-			},	
-		 I => { title => _('User rights'),
-			  path => "Admin/Queues/UserRights.html?id=".$id,
-			}
-        }
-        };
-}
-if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminQueue')) {
-  $tabs->{"A"} = { title => _('Select'),
-  		     	path => "Admin/Queues/",
-			   };
-  $tabs->{"B"} = { title => _('Create'),
-  		     	path => "Admin/Queues/Modify.html?create=1",
-		 separator => 1, };
-}
-
-  # Now let callbacks add their extra tabs
-  $m->callback( %ARGS, tabs => $tabs );
-foreach my $tab ( sort keys %{$tabs->{'this'}->{'subtabs'}} ) {  
-    if ( $tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab ) {
-        $tabs->{'this'}->{'subtabs'}->{$tab}->{"subtabs"}        = $subtabs; 
-        $tabs->{'this'}->{'subtabs'}->{$tab}->{"current_subtab"} = $current_subtab; 
-    }                                                                           
-}   
-  		     	$current_tab = "Admin/Queues/Modify.html?id=".$id if $id;
-</%INIT>
-  
-<%ARGS>
-$queue_obj => undef
-$id => undef
-$subtabs => undef
-$current_subtab => undef
-$current_tab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Admin/Elements/RuleTabs b/share/html/Admin/Elements/RuleTabs
deleted file mode 100644
index 80c2871..0000000
--- a/share/html/Admin/Elements/RuleTabs
+++ /dev/null
@@ -1,81 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs,
-    title          => $title,
-    current_tab    => 'Admin/Rules/',
-    subtabs        => $tabs,
-    current_subtab => $current_tab,
-&>
-
-<%INIT>
-    my $tabs = {
-        A => { title => _('Select'),
-               path  => "Admin/Rules/", },
-        E => { title => _('Create'),
-               path  => 'Admin/Rules/Modify.html?create=1',
-        },
-    };
-
-    # Now let callbacks add their extra tabs
-    $m->callback( %ARGS, tabs => $tabs );
-
-    foreach my $tab ( values %{$tabs} ) {
-        next unless $tab->{'path'} eq $current_tab;
-
-        $tab->{"subtabs"} = $subtabs;
-        $tab->{"current_subtab"} = $current_subtab;
-    }
-</%INIT>
-
-<%ARGS>
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Admin/Elements/SystemTabs b/share/html/Admin/Elements/SystemTabs
deleted file mode 100755
index 1363e06..0000000
--- a/share/html/Admin/Elements/SystemTabs
+++ /dev/null
@@ -1,104 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs, subtabs => $tabs, 
-    current_tab => 'Admin/Global/', 
-    current_subtab => $current_tab, 
-    title => $title &>
-
-<%INIT>
-  my $tabs = {
-               B => { title => _('Templates'),
-                        path => 'Admin/Global/Templates.html',
-                      },
-                C => { title => _('Workflows'),
-                        path => 'Admin/Global/Workflows/index.html',
-                        },
-              
-                F => { title => _('Custom Fields'),
-                        path => 'Admin/Global/CustomFields/index.html',
-                        },
-
-                G => { title => _('Group rights'),
-                                path => 'Admin/Global/GroupRights.html',
-                      },
-                H => { title => _('User rights'),
-                                path => 'Admin/Global/UserRights.html',
-                      },
-                I => { title => _('RT at a glance'),
-                                path => 'Admin/Global/MyRT.html',
-                      },
-                Y => { title => _('Jifty'),
-                                path => 'Admin/Global/Jifty.html',
-                      },
-                Z => { title => _('System'),
-                                path => 'Admin/Global/System.html',
-                      },
-
-};
-
-  # Now let callbacks add their extra tabs
-  $m->callback( %ARGS, tabs => $tabs );
-
-  if ($current_tab) {
-    foreach my $tab (sort keys %{$tabs}) {
-      if ($tabs->{$tab}->{'path'} eq $current_tab) {
-        $tabs->{$tab}->{"subtabs"} = $subtabs;
-        $tabs->{$tab}->{"current_subtab"} = $current_subtab;
-      }
-    }
-  }
-</%INIT>
-
-  
-<%ARGS>
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Admin/Elements/Tabs b/share/html/Admin/Elements/Tabs
deleted file mode 100755
index 1391baf..0000000
--- a/share/html/Admin/Elements/Tabs
+++ /dev/null
@@ -1,98 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs, 
-    tabs => $tabs, 
-    current_toptab => 'Admin/', 
-    current_tab => $current_tab, 
-    title => $title &>
-
-<%INIT>
-  my $tabs = { A => { title => _('Users'),
-			  path => 'Admin/Users/',
-			},
-	       B => { title => _('Groups'),
-			   path => 'Admin/Groups/',
-			 },
-	       C => { title => _('Queues'),
-			   path => 'Admin/Queues/',
-			 },
-	       D => { 'title' => _('Custom Fields'),
-			   path => 'Admin/CustomFields/',
-			 },
-	       E => { 'title' => _('Rules'),
-			   path => 'admin/rules/',
-			 },
-	       F => { 'title' => _('Global'),
-			   path => 'Admin/Global/',
-			 },
-	       G => { 'title' => _('Tools'),
-			   path => 'Admin/Tools/',
-			 },
-	     };
-
-  # Now let callbacks add their extra tabs
-  $m->callback( %ARGS, tabs => $tabs );
-
-  if( defined $current_tab ) {
-    foreach my $tab (keys %{$tabs}) {
-      if ($tabs->{$tab}->{'path'} eq $current_tab) {
-        $tabs->{$tab}->{"subtabs"}        = $subtabs;
-        $tabs->{$tab}->{"current_subtab"} = $current_subtab;
-      }
-    }
-  }
-
-</%INIT>
-
-
-<%ARGS>
-$subtabs => undef
-$current_tab => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Admin/Elements/ToolTabs b/share/html/Admin/Elements/ToolTabs
deleted file mode 100755
index 84b9c0f..0000000
--- a/share/html/Admin/Elements/ToolTabs
+++ /dev/null
@@ -1,82 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs,
-    title          => $title,
-    current_tab    => 'Admin/Tools/',
-    subtabs        => $tabs,
-    current_subtab => $current_tab,
-&>
-
-<%INIT>
-    my $tabs = {
-        A => { title => _('System Configuration'),
-               path => 'Admin/Tools/Configuration.html',
-        },
-        E => { title => _('Shredder'),
-               path  => 'Admin/Tools/Shredder',
-        },
-    };
-
-    # Now let callbacks add their extra tabs
-    $m->callback( %ARGS, tabs => $tabs );
-
-    foreach my $tab ( values %{$tabs} ) {
-        next unless $tab->{'path'} eq $current_tab;
-
-        $tab->{"subtabs"} = $subtabs;
-        $tab->{"current_subtab"} = $current_subtab;
-    }
-</%INIT>
-
-<%ARGS>
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Admin/Elements/UserTabs b/share/html/Admin/Elements/UserTabs
deleted file mode 100755
index dc21135..0000000
--- a/share/html/Admin/Elements/UserTabs
+++ /dev/null
@@ -1,116 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs, 
-    subtabs => $tabs,
-    current_tab => 'Admin/Users/', 
-    current_subtab => $current_tab, 
-    title => $title &>
-<%INIT>
-my $tabs;
-if ($id) {
-$tabs->{'this'} = { title => eval { $user_object->name },
-
-		path => "Admin/Users/Modify.html?id=".$id,
-subtabs => {
-	       Basics => { title => _('Basics'),
-				path => "Admin/Users/Modify.html?id=".$id
-			},
-	       Memberships => { title => _('Memberships'),
-			   path => "Admin/Users/Memberships.html?id=".$id
-			 },
-	       History => { title => _('History'),
-			   path => "Admin/Users/History.html?id=".$id
-			 },
-	       'MyRT' => { title => _('RT at a glance'),
-			   path => "Admin/Users/MyRT.html?id=".$id
-			 },
-	}
-};
-    if ( RT->config->get('gnupg')->{'enable'} ) {
-        $tabs->{'this'}{'subtabs'}{'GnuPG'} = {
-            title => _('GnuPG'),
-            path  => "Admin/Users/GnuPG.html?id=".$id,
-        };
-    }
-}
-
-if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminUsers')) {
-  $tabs->{"A"} = { title => _('Select'),
-  		     	path => "Admin/Users/",
-			   };
-  $tabs->{"B"} = { title => _('Create'),
-  		     	path => "Admin/Users/Modify.html?create=1",
-		separator => 1,
-	};
-}
-
-  # Now let callbacks add their extra tabs
-  $m->callback( %ARGS, tabs => $tabs );
-                                                                                
-#foreach my $tab ( sort keys %{$tabs} ) {                                        
-#    if ( $tabs->{$tab}->{'path'} eq $current_subtab ) {                         
-#        $tabs->{$tab}->{"current_subtab"} = $current_subtab;                    
-#    }                                                                           
-#}                                                                               
-foreach my $tab ( sort keys %{$tabs->{'this'}->{'subtabs'}} ) {  
-    if ( $tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab ) {
-        $tabs->{'this'}->{'subtabs'}->{$tab}->{"subtabs"}        = $subtabs; 
-        $tabs->{'this'}->{'subtabs'}->{$tab}->{"current_subtab"} = $current_subtab; 
-    }                                                                           
-}   
-$tabs->{'this'}->{"current_subtab"} = $current_tab; 
-$current_tab = "Admin/Users/Modify.html?id=".$id if $id;
-</%INIT>
-<%ARGS>
-$user_object => undef
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Admin/Global/Workflows/Elements/Tabs b/share/html/Admin/Global/Workflows/Elements/Tabs
deleted file mode 100644
index 9df2cce..0000000
--- a/share/html/Admin/Global/Workflows/Elements/Tabs
+++ /dev/null
@@ -1,64 +0,0 @@
-<& /Admin/Elements/SystemTabs,
-    title          => $title,
-    current_tab    => "$base/index.html",
-    subtabs        => $parent_subtabs,
-    current_subtab => $parent_subtab,
-&>
-<%INIT>
-my $base = "Admin/Global/Workflows";
-my $parent_subtab;
-my $parent_subtabs = {
-    A => {
-        title => _('Select') .'/'. _('Create'),
-        path => "$base/index.html",
-    },
-    B => {
-        title => _('Localization'),
-        path => "$base/Localization.html",
-    },
-    C => {
-        title => _('Mappings'),
-        path => "$base/Mappings.html",
-    },
-};
-
-if ( $schema ) {
-    my $qs_name = $m->comp( '/Elements/QueryString', name => $schema->name );
-    $current_tab .= "?$qs_name";
-
-    $parent_subtab = "$base/Summary.html?$qs_name";
-    $parent_subtabs->{'E'} = {
-        title          => $schema->name,
-        path           => $parent_subtab,
-        separator      => 1,
-        current_subtab => $current_tab,
-        subtabs => {
-            A => {
-                title => _("Summary"),
-                path  => "$base/Summary.html?$qs_name",
-            },
-            B => {
-                title => _("Statuses"),
-                path  => "$base/Statuses.html?$qs_name",
-            },
-            C => {
-                title => _("Transitions"),
-                path  => "$base/Transitions.html?$qs_name",
-            },
-            D => {
-                title => _("Interface"),
-                path  => "$base/Interface.html?$qs_name",
-            },
-        },
-    };
-}
-else {
-    $parent_subtab = $current_tab;
-}
-
-</%INIT>
-<%ARGS>
-$schema      => undef
-$title       => undef
-$current_tab => undef
-</%ARGS>
diff --git a/share/html/Approvals/Elements/Tabs b/share/html/Approvals/Elements/Tabs
deleted file mode 100755
index 6441faf..0000000
--- a/share/html/Approvals/Elements/Tabs
+++ /dev/null
@@ -1,58 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs,
-    tabs => $tabs, 
-    current_toptab => 'Approvals/', 
-    current_tab => $current_tab, 
-    title => $title &>
-
-<%ARGS>
-$tabs => undef
-$current_tab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Dashboards/Elements/Tabs b/share/html/Dashboards/Elements/Tabs
deleted file mode 100644
index c82fb16..0000000
--- a/share/html/Dashboards/Elements/Tabs
+++ /dev/null
@@ -1,117 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Tools/Elements/Tabs,
-    subtabs => $tabs,
-    current_tab => 'Dashboards/index.html',
-    current_subtab => $current_subtab,
-    title => $title &>
-
-<%INIT>
-my $tabs;
-my $real_subtab = $current_subtab;
-if ( $dashboard_obj and $dashboard_obj->id ) {
-
-    my $name = $dashboard_obj->name;
-
-    my $modify  = "Dashboards/Modify.html?id=" . $dashboard_obj->id;
-    my $queries = "Dashboards/Queries.html?id=" . $dashboard_obj->id;
-    my $render  = "Dashboards/" . $dashboard_obj->id . "/$name";
-
-    $tabs->{"this"} = {
-        title   => $dashboard_obj->name,
-        path    => $modify,
-        current_subtab  => $current_subtab,
-        subtabs => {
-            a_Basics => { title => _('Basics'),
-                          path  => $modify,
-            },
-
-            b_Queries => { title => _('Queries'),
-                           path  => $queries,
-            },
-
-            c_Subscription => { title => _('Subscription'),
-                                path  =>
-                                    "Dashboards/Subscription.html?dashboard_id=" . $dashboard_obj->id
-            },
-
-
-            z_Preview => { title => _('Show'),
-                           path  => $render,
-            },
-        }
-    };
-
-    delete $tabs->{"this"}{"subtabs"}{"c_Subscription"}
-        unless $dashboard_obj->current_user_can_subscribe;
-
-    $tabs->{"this"}{"subtabs"}{"z_Preview"}{path} = $real_subtab
-        if $real_subtab =~ /Render/
-        || $real_subtab =~ /Dashboard\/\d+/;
-
-    $current_subtab = $modify;
-}
-
-$tabs->{"A"} = { title => _('Select dashboard'),
-                 path  => "Dashboards/index.html" };
-
-my $dashboard = RT::Dashboard->new( current_user => Jifty->web->current_user );
-my @objects = $dashboard->_privacy_objects(create => 1);
-
-if (@objects) {
-    $tabs->{"B"} = { title     => _('New dashboard'),
-                     path      => "Dashboards/Modify.html?create=1",
-                     separator => 1 };
-}
-
-</%INIT>
-<%ARGS>
-$dashboard_obj => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Elements/Tabs b/share/html/Elements/Tabs
deleted file mode 100755
index 1b9f2ac..0000000
--- a/share/html/Elements/Tabs
+++ /dev/null
@@ -1,128 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/PageLayout,
-    current_toptab => $current_toptab,
-    current_tab => $current_tab,
-    toptabs => $toptabs,
-    topactions => $topactions,
-    tabs => $tabs,
-    actions => $actions,
-    subactions => $subactions,
-    title => $title,
-    show_menu => $show_menu,
-&>
-<a name="skipnav" id="skipnav" accesskey="8"></a>
-<%INIT>
-my $action;
-my $basetopactions = {
-	a => { html => $m->scomp('/Elements/CreateTicket')	
-		},
-	b => { html => $m->scomp('/Elements/SimpleSearch') 
-		}
-	};
-my $basetabs = {     a => { title => _('Homepage'),
-                           path => '',
-                         },
-                    ab => { title => _('Simple Search'),
-                        path => 'Search/Simple.html'
-                         },
-                    b => { title => _('Tickets'),
-                        path => 'Search/Build.html'
-                      },
-                    c => { title => _('Tools'),
-                           path => 'Tools/index.html'
-                         },
-                 };
-
-if (Jifty->web->current_user->has_right( right => 'ShowConfigTab', 
-				       object => RT->system )) {
-    $basetabs->{e} = { title => _('Configuration'),
-                       path => 'Admin/',
-		     };
-}
-
-if (Jifty->web->current_user->has_right( right => 'ModifySelf', 
-				       object => RT->system )) {
-    $basetabs->{k} = { title => _('Preferences'),
-                       path => 'Prefs/Other.html'
-		     };
-}
-
-if (Jifty->web->current_user->has_right( right => 'ShowApprovalsTab',
-                        object => RT->system )) {
-    $basetabs->{p} = { title => _('Approval'),
-                        path => 'Approvals/'
-            };
-}
-
-if (!defined $toptabs) {
-   $toptabs = $basetabs;
-}
-if (!defined $topactions) {
-   $topactions = $basetopactions;
-}
-                    
-# Now let callbacks add their extra tabs
-$m->callback(
-    topactions => $topactions, 
-    toptabs    => $toptabs,
-    %ARGS
-);
-
-</%INIT>
-<%ARGS>
-$current_toptab => undef
-$current_tab => undef
-$toptabs => undef
-$topactions => undef
-$tabs => undef
-$actions => undef
-$subactions => undef
-$title => undef
-$show_menu => 1
-</%ARGS>
diff --git a/share/html/Prefs/Elements/Tabs b/share/html/Prefs/Elements/Tabs
deleted file mode 100644
index 8ba5499..0000000
--- a/share/html/Prefs/Elements/Tabs
+++ /dev/null
@@ -1,76 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /User/Elements/Tabs,
-    subtabs => $tabs,
-    current_tab => 'Prefs/Other.html',
-    current_subtab => $current_subtab,
-    title => $title &>
-
-<%INIT>
-my $tabs;
-$searches ||= [$m->comp("/Search/Elements/SearchesForObject", object => RT::System->new())];
-
-$tabs->{a} = {
-    title => _('Quick search'),
-	path => 'Prefs/Quicksearch.html',
-};
-
-for my $search (@$searches) {
-    $tabs->{ $search->[0] } = {
-        title => $search->[0],
-        path  => "Prefs/Search.html?"
-                 .$m->comp('/Elements/QueryString', name => ref($search->[1]).'-'.$search->[1]->id),
-    };
-}
-</%INIT>
-<%ARGS>
-$group_obj => undef
-$current_subtab => undef
-$title => undef
-$searches => undef
-</%ARGS>
diff --git a/share/html/SelfService/Elements/Tabs b/share/html/SelfService/Elements/Tabs
deleted file mode 100755
index 486d900..0000000
--- a/share/html/SelfService/Elements/Tabs
+++ /dev/null
@@ -1,113 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-% $m->callback( %ARGS, tabs => $tabs );
-<& /Elements/PageLayout,
-    current_toptab => $current_toptab,
-    current_tab => $current_tab,
-    toptabs => $tabs,
-    topactions => $actions,
-    title => $title
-&>
-<a name="skipnav" id="skipnav" accesskey="8"></a>
-<%INIT>
-my $queues = RT::Model::QueueCollection->new( current_user => Jifty->web->current_user );
-$queues->find_all_rows;
-
-my $queue_count = 0;
-my $queue_id = 1;
-
-while (my $queue = $queues->next) {
-  next unless $queue->current_user_has_right('CreateTicket');
-  $queue_id = $queue->id;
-  $queue_count++;
-  last if ($queue_count > 1);
-}
-
-if ($title) {
-$title = _("RT Self Service") . " / " . $title;
-} else {
-$title = _("RT Self Service");
-
-}
-my ($tab);
-my $tabs = { A  => { title => _('Open tickets'),
-                        path => 'SelfService/',
-                      },
-             B => { title => _('Closed tickets'),
-                         path => 'SelfService/Closed.html',
-                       },
-           };
-
-if ($queue_count > 1) {
-        $tabs->{C} = { title => _('New ticket'),
-                       path => 'SelfService/CreateTicketInQueue.html'
-                       };
-} else {
-        $tabs->{C} = { title => _('New ticket'),
-                       path => 'SelfService/Create.html?queue=' . $queue_id
-                       };
-}
-
-if (Jifty->web->current_user->has_right( right => 'ModifySelf',
-				       object => RT->system )) {
-	$tabs->{Z} = { title => _('Preferences'),
-		       path => 'SelfService/Prefs.html'
-		       };
-}
-
-my $actions = {
-	B => { html => $m->scomp('GotoTicket') 
-		}
-	};
-</%INIT>
-<%ARGS>
-$title => undef
-$current_toptab => undef
-$current_tab => undef
-</%ARGS>
-
diff --git a/share/html/Ticket/Elements/Tabs b/share/html/Ticket/Elements/Tabs
deleted file mode 100755
index 0f21125..0000000
--- a/share/html/Ticket/Elements/Tabs
+++ /dev/null
@@ -1,340 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-% $m->callback( Ticket => $ticket, actions=> $actions, tabs => $tabs, %ARGS );
-<& /Elements/Tabs, 
-    tabs => $tabs, 
-    actions => $actions, 
-    current_tab => $current_tab, 
-    current_toptab => $current_toptab,
-    title => $title &> 
-<%INIT>
-my $tabs = {};
-my $actions;
-
-my $current_toptab = "Search/Build.html", my $searchtabs = {};
-
-if ($ticket) {
-
-    my $id = $ticket->id();
-
-    if ( defined Jifty->web->session->get('tickets') ) {
-
-        # we have to update session data if we get new ItemMap
-        my $updatesession = 1 unless ( Jifty->web->session->get('tickets')->{'item_map'} );
-
-        my $item_map = Jifty->web->session->get('tickets')->item_map;
-
-        if ($updatesession) {
-            Jifty->web->session->get('tickets')->prep_for_serialization();
-        }
-
-        # Don't display prev links if we're on the first ticket
-        if ( $item_map->{ $ticket->id }->{prev} ) {
-            $searchtabs->{'_a'} = {
-                class => "nav",
-                path  => "Ticket/Display.html?id=" . $item_map->{first},
-                title => '<< ' . _('First')
-            };
-            $searchtabs->{"_b"} = {
-                class => "nav",
-                path  => "Ticket/Display.html?id="
-                    . $item_map->{ $ticket->id }->{prev},
-                title => '< ' . _('Prev')
-            };
-        }
-  
-        # Don't display next links if we're on the last ticket
-        if ( $item_map->{ $ticket->id }->{next} ) {
-            $searchtabs->{'d'} = {
-                class => "nav",
-                path  => "Ticket/Display.html?id="
-                    . $item_map->{ $ticket->id }->{next},
-                title => _('next') . ' >'
-            };
-            $searchtabs->{'e'} = {
-                class => "nav",
-                path  => "Ticket/Display.html?id=" . $item_map->{last},
-                title => _('Last') . ' >>'
-            };
-        }
-    }
-
-    $tabs->{"this"} = {
-        class          => "currentnav",
-        path           => "Ticket/Display.html?id=" . $ticket->id,
-        title          => "#" . $id,
-        current_subtab => $current_subtab
-    };
-
-    my $ticket_page_tabs = {
-        _A => {
-            title => _('Display'),
-            path  => "Ticket/Display.html?id=" . $id,
-        },
-
-        _Ab => {
-            title => _('History'),
-            path  => "Ticket/History.html?id=" . $id,
-        },
-        _B => {
-            title => _('Basics'),
-            path  => "Ticket/Modify.html?id=" . $id,
-        },
-
-        _C => {
-            title => _('Dates'),
-            path  => "Ticket/ModifyDates.html?id=" . $id,
-        },
-        _D => {
-            title => _('People'),
-            path  => "Ticket/ModifyPeople.html?id=" . $id,
-        },
-        _E => {
-            title => _('Links'),
-            path  => "Ticket/ModifyLinks.html?id=" . $id,
-        },
-        _X => {
-            title => _('Jumbo'),
-            path  => "Ticket/ModifyAll.html?id=" . $id,
-        },
-
-    };
-
-    if ( RT->config->get('enable_reminders') ) {
-        $ticket_page_tabs->{_F} = {
-            title     => _('Reminders'),
-            path      => "Ticket/Reminders.html?id=" . $id,
-            separator => 1,
-        };
-    }
-
-    foreach my $tab ( sort keys %{$ticket_page_tabs} ) {
-        if ( $ticket_page_tabs->{$tab}->{'path'} eq $current_tab ) {
-            $ticket_page_tabs->{$tab}->{"subtabs"} = $subtabs;
-            $tabs->{'this'}->{"current_subtab"}
-                = $ticket_page_tabs->{$tab}->{"path"};
-        }
-    }
-    $tabs->{'this'}->{"subtabs"} = $ticket_page_tabs;
-    $current_tab = "Ticket/Display.html?id=" . $id;
-
-    my %can = ( ModifyTicket => $ticket->current_user_has_right('ModifyTicket'), );
-
-    if ( $can{'ModifyTicket'} or $ticket->current_user_has_right('ReplyToTicket') )
-    {
-        $actions->{'F'} = {
-            title => _('Reply'),
-            path  => "Ticket/Update.html?action=respond&id=" . $id,
-        };
-    }
-
-    if ( $can{'ModifyTicket'} ) {
-        my $current = $ticket->status;
-        my $schema = $ticket->queue->status_schema;
-        my $i = 1;
-        foreach my $next ( $schema->transitions( $current ) ) {
-            my $action = $schema->transition_action( $current => $next );
-            next if $action eq 'hide';
-
-            my $path = 'Ticket/';
-            if ( $action ) {
-                $path .= "Update.html?". $m->comp(
-                    '/Elements/QueryString',
-                    action => $action,
-                    default_status => $next,
-                    id => $id
-                );
-            } else {
-                $path .= "Display.html?". $m->comp(
-                    '/Elements/QueryString',
-                    Status => $next,
-                    id => $id
-                );
-            }
-            $actions->{'G'. $i++} = {
-                path => $path,
-                title => _( $schema->transition_label( $current => $next ) ),
-            };
-        }
-    }
-
-    if ( $ticket->current_user_has_right('OwnTicket') ) {
-        if ( $ticket->owner_obj->id == RT->nobody->id ) {
-            $actions->{'B'} = {
-                path  => "Ticket/Display.html?action=take&id=" . $id,
-                title => _('Take'),
-                }
-                if $can{'ModifyTicket'}
-                    or $ticket->current_user_has_right('TakeTicket');
-        } elsif ( $ticket->owner_obj->id != Jifty->web->current_user->id ) {
-            $actions->{'C'} = {
-                path  => "Ticket/Display.html?action=steal&id=" . $id,
-                title => _('Steal'),
-                }
-                if $can{'ModifyTicket'}
-                    or $ticket->current_user_has_right('StealTicket');
-        }
-    }
-
-    if (   $can{'ModifyTicket'}
-        or $ticket->current_user_has_right('CommentOnTicket') )
-    {
-        $actions->{'E'} = {
-            title => _('Comment'),
-            path  => "Ticket/Update.html?action=comment&id=" . $id,
-        };
-    }
-
-    $actions->{'_ZZ'}
-        = { html => $m->scomp( '/Ticket/Elements/Bookmark', id => $ticket->id ),
-        };
-
-}
-
-if ( ( defined $actions->{A} || defined $actions->{B} || defined $actions->{C} )
-    && (   defined $actions->{E}
-        || defined $actions->{F}
-        || defined $actions->{G} ) )
-{
-
-    if    ( defined $actions->{C} ) { $actions->{C}->{separator} = 1 }
-    elsif ( defined $actions->{B} ) { $actions->{B}->{separator} = 1 }
-    elsif ( defined $actions->{A} ) { $actions->{A}->{separator} = 1 }
-}
-
-my $args = '';
-my $has_query = '';
-my %query_args;
-my $search_id = $ARGS{'saved_search_id'}
-            || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'searchid'} || '';
-
-$has_query = 1 if ( $ARGS{'query'} or Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'query'} );
-  
-%query_args = (
-
-        saved_search_id => ($search_id eq 'new') ? undef : $search_id,
-        query  => $ARGS{'query'}  || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'query'},
-        format => $ARGS{'format'} || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'format'},
-        order_by => $ARGS{'order_by'}
-            || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'order_by'},
-        order => $ARGS{'order'} || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'order'},
-        page  => $ARGS{'page'}  || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'page'},
-        rows_per_page  => $ARGS{'rows_per_page'}  || Jifty->web->session->get('CurrentSearchHash') && Jifty->web->session->get('CurrentSearchHash')->{'rows_per_page'},
-    );
-
-    $args = "?" . $m->comp( '/Elements/QueryString', %query_args );
-
-$tabs->{"f"} = {
-    path  => "Search/Build.html?NewQuery=1",
-    title => _('New Search')
-};
-$tabs->{"g"} = {
-    path  => "Search/Build.html" . (($has_query) ? $args : ''),
-    title => _('Edit Search')
-};
-$tabs->{"h"} = {
-    path      => "Search/Edit.html$args",
-    title     => _('Advanced'),
-    separator => 1
-};
-if ($has_query) {
-
-    if ( $current_tab =~ m{Search/Results.html} ) {
-        $current_tab = "Search/Results.html$args";
-
-        if ( Jifty->web->current_user
-            ->has_right( right => 'SuperUser', object => RT->system ) )
-        {
-            my $shred_args = $m->comp(
-                '/Elements/QueryString',
-                search          => 1,
-                plugin          => 'Tickets',
-                'Tickets:query' => $query_args{'query'},
-                'Tickets:limit' => $query_args{'rows'}
-            );
-
-            $tabs->{"shredder"} = {
-                path  => 'Admin/Tools/Shredder/?' . $shred_args,
-                title => _('Shredder')
-            };
-
-        }
-    }
-    if ( $current_tab =~ m{Search/(Bulk|Build|Edit)\.html} ) {
-        $current_tab = "Search/$1.html$args";
-    }
-
-    $tabs->{"i"} = {
-        path  => "Search/Results.html$args",
-        title => _('Show Results'),
-    };
-
-    $tabs->{"j"} = {
-        path  => "Search/Bulk.html$args",
-        title => _('Bulk Update'),
-    };
-
-}
-
-foreach my $searchtab ( keys %{$searchtabs} ) {
-    ( $searchtab =~ /^_/ )
-        ? $tabs->{ "s" . $searchtab } = $searchtabs->{$searchtab}
-        : $tabs->{ "z_" . $searchtab } = $searchtabs->{$searchtab};
-
-}
-</%INIT>
-
-  
-<%ARGS>
-$ticket => undef
-$subtabs => undef
-$current_tab => ''
-$current_subtab => ''
-$title => undef
-$rows_per_page => undef
-</%ARGS>
diff --git a/share/html/Tools/Elements/Tabs b/share/html/Tools/Elements/Tabs
deleted file mode 100644
index 6259dc8..0000000
--- a/share/html/Tools/Elements/Tabs
+++ /dev/null
@@ -1,84 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs, 
-    tabs => $tabs, 
-    current_toptab => 'Tools/index.html', 
-    current_tab => $current_tab, 
-    title => $title &>
-
-<%INIT>
-my $tabs = {
-    a => {
-        title => _('Dashboards'),
-        path  => 'Dashboards/index.html',
-    },
-    c => {
-        title => _('Reports'),
-        path  => 'Tools/Reports/index.html',
-    },
-    d => {
-        title => _('My Day'),
-        path  => 'Tools/MyDay.html',
-    },
-};
-
-$m->callback( %ARGS, tabs => $tabs );
-
-foreach my $tab ( sort keys %{$tabs} ) {
-    if ( $tabs->{$tab}->{'path'} eq $current_tab ) {
-        $tabs->{$tab}->{"subtabs"}        = $subtabs;
-        $tabs->{$tab}->{"current_subtab"} = $current_subtab;
-    }
-}
-</%INIT>
-<%ARGS>
-$subtabs => undef
-$current_tab => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/Tools/Reports/Elements/Tabs b/share/html/Tools/Reports/Elements/Tabs
deleted file mode 100644
index c8ca553..0000000
--- a/share/html/Tools/Reports/Elements/Tabs
+++ /dev/null
@@ -1,89 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Tools/Elements/Tabs, 
-    subtabs => $tabs, 
-    current_tab => 'Tools/Reports/index.html', 
-    current_subtab => $current_tab, 
-    title => $title &>
-
-<%INIT>
-my $tabs = {
-    a => {
-        title => _('Resolved by owner'),
-        path  => 'Tools/Reports/ResolvedByOwner.html',
-    },
-    b => {
-        title => _('Resolved in date range'),
-        path  => 'Tools/Reports/ResolvedByDates.html',
-    },
-    c => {
-        title => _('Created in a date range'),
-        path  => 'Tools/Reports/CreatedByDates.html',
-    },
-};
-
-
-
-
-$m->callback( %ARGS, tabs => $tabs );
-
-foreach my $tab ( sort keys %{$tabs} ) {
-    if ( $tabs->{$tab}->{'path'} eq $current_tab ) {
-        $tabs->{$tab}->{"subtabs"}        = $subtabs;
-        $tabs->{$tab}->{"current_subtab"} = $current_subtab;
-    }
-}
-</%INIT>
-
-
-<%ARGS>
-$subtabs => undef
-$current_tab => ''
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/User/Elements/GroupTabs b/share/html/User/Elements/GroupTabs
deleted file mode 100755
index f759838..0000000
--- a/share/html/User/Elements/GroupTabs
+++ /dev/null
@@ -1,84 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /User/Elements/Tabs, 
-    subtabs => $tabs, 
-    current_tab => 'User/Groups/', 
-    current_subtab => $current_subtab, 
-    title => $title &>
-
-<%INIT>
-my $tabs;
-if ( $group_obj and $group_obj->id ) {
-    $tabs->{"this"} = {
-        title   => $group_obj->name,
-        path    => "User/Groups/Modify.html?id=" . $group_obj->id,
-        subtabs => {
-            Basics => { title => _('Basics'),
-                        path  => "User/Groups/Modify.html?id=" . $group_obj->id
-            },
-
-            Members => { title => _('Members'),
-                         path  => "User/Groups/Members.html?id=" . $group_obj->id
-            },
-
-        } };
-        $tabs->{'this'}->{'current_subtab'} = $current_subtab;
-         $current_subtab = "User/Groups/Modify.html?id=" . $group_obj->id,
-}
-$tabs->{"A"} = { title => _('Select group'),
-                 path  => "User/Groups/index.html" };
-$tabs->{"B"} = { title     => _('New group'),
-                 path      => "User/Groups/Modify.html?create=1",
-                 separator => 1 };
-
-</%INIT>
-<%ARGS>
-$group_obj => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>
diff --git a/share/html/User/Elements/Tabs b/share/html/User/Elements/Tabs
deleted file mode 100755
index 399fee6..0000000
--- a/share/html/User/Elements/Tabs
+++ /dev/null
@@ -1,89 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%# 
-%# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%#                                          <jesse at bestpractical.com>
-%# 
-%# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
-%# LICENSE:
-%# 
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%# 
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%# 
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
-%# CONTRIBUTION SUBMISSION POLICY:
-%# 
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%# 
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%# 
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs, 
-    tabs => $tabs, 
-    current_toptab => 'Prefs/Other.html', 
-    current_tab => $current_tab, 
-    title => $title &>
-
-<%INIT>
-  my $tabs = {
-  
-	       a => { title => _('Settings'),
-			   path => 'Prefs/Other.html',
-			 },
-  
-             b => { title => _('About me'),
-			  path => 'User/Prefs.html',
-			},
-	       f => { title => _('Search options'),
-			   path => 'Prefs/SearchOptions.html',
-			 },
-	       r => { title => _('RT at a glance'),
-			   path => 'Prefs/MyRT.html',
-			 },
-	     };
-
-  # Now let callbacks add their extra tabs
-  $m->callback( %ARGS, tabs => $tabs );
-
-  foreach my $tab (sort keys %{$tabs}) {
-    if ($tabs->{$tab}->{'path'} eq $current_tab) {
-      $tabs->{$tab}->{"subtabs"} = $subtabs;
-      $tabs->{$tab}->{"current_subtab"} = $current_subtab;
-    }
-  }
-</%INIT>
-
-
-<%ARGS>
-$subtabs => undef
-$current_tab => undef
-$current_subtab => undef
-$title => undef
-</%ARGS>

commit c40ee3c368a658bcac4d6b978ae6e285ec912c30
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Wed Oct 21 13:02:33 2009 -0400

    Step 2: All of the nav that's moved into the dispatcher is now commented out.
    
    It compiles! Ship it!

diff --git a/lib/RT/Dispatcher.pm b/lib/RT/Dispatcher.pm
index 422cac5..373c4c1 100644
--- a/lib/RT/Dispatcher.pm
+++ b/lib/RT/Dispatcher.pm
@@ -182,7 +182,7 @@ on qr{^/Ticket/Graphs/(\d+)} => run {
 
 
 
-# Navigation
+=for later Navigation
 
 # Top level tabs /Elements/Tabs
 my $basetopactions = {
@@ -1064,6 +1064,8 @@ $tabs->{"B"} = { title     => _('New group'),
                  separator => 1 };
 
 
+=cut
+
 
 # Now let callbacks add their extra tabs
 

-----------------------------------------------------------------------


More information about the Rt-commit mailing list