[Rt-commit] rt branch, menu-redo, updated. 3ac5a89f38d5290f9ad3abb52b493789ee688bbf

jesse jesse at bestpractical.com
Mon Oct 26 16:13:39 EDT 2009


The branch, menu-redo has been updated
       via  3ac5a89f38d5290f9ad3abb52b493789ee688bbf (commit)
       via  e08dc621269385219d2db3c5cab7d9a50e912b5e (commit)
       via  a4ab4653d8fad0694c696f19fd6643e83b48a047 (commit)
       via  a18487877781057cb3fe24c6a95ec7e7cc4eda9f (commit)
       via  9440b8dd08b421f029f074f2735bee3d5b660845 (commit)
       via  c0d594d14aed12b11e786170d3dd47dc3cee78f6 (commit)
       via  9d536fda8fd78655d990d6ea6fc40c05306e40b4 (commit)
      from  32b2508a5bae55521077623b22d18abb85a2011c (commit)

Summary of changes:
 lib/RT/Dispatcher.pm              |  425 ++++++++++++++++++-------------------
 lib/RT/Record.pm                  |   28 ---
 share/html/Dashboards/Modify.html |    2 +-
 share/html/Dashboards/Render.html |    4 +-
 share/html/Elements/Header        |    3 +-
 5 files changed, 210 insertions(+), 252 deletions(-)

- Log -----------------------------------------------------------------
commit 9d536fda8fd78655d990d6ea6fc40c05306e40b4
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 26 12:28:18 2009 -0400

    Add page navigation. Convert RT nav to a menu

diff --git a/share/html/Elements/Header b/share/html/Elements/Header
index 2cbf5ff..5859f3c 100755
--- a/share/html/Elements/Header
+++ b/share/html/Elements/Header
@@ -105,7 +105,8 @@
 </div>
 
 
-% Jifty->web->navigation->render_as_menu();
+% Jifty->web->navigation->render_as_yui_menubar();
+% Jifty->web->page_navigation->render_as_menu();
 %# template login already has div with id "body"
 % unless ( Jifty->web->request->path =~ m{^/login} ) {
 <div id="body">

commit c0d594d14aed12b11e786170d3dd47dc3cee78f6
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 26 12:28:43 2009 -0400

    remove long-dead code from RT::Record

diff --git a/lib/RT/Record.pm b/lib/RT/Record.pm
index 1646fae..14ec55f 100755
--- a/lib/RT/Record.pm
+++ b/lib/RT/Record.pm
@@ -317,34 +317,6 @@ DB is case sensitive
 
 sub load_by_id { shift->load_by_cols( id => shift ) }
 
-sub load_by_cols {
-    my $self = shift;
-    my %hash = (@_);
-
-    # We don't want to hang onto this
-    delete $self->{'attributes'};
-
-    return $self->SUPER::load_by_cols(@_);    # unless $self->_handle->case_sensitive;
-
-    # If this database is case sensitive we need to uncase objects for
-    # explicit loading
-    foreach my $key ( keys %hash ) {
-
-        # If we've been passed an empty value, we can't do the lookup.
-        # We don't need to explicitly downcase integers or an id.
-        if ( $key ne 'id' && defined $hash{$key} && $hash{$key} !~ /^\d+$/ ) {
-            my ( $op, $val, $func );
-            ( $key, $op, $val, $func ) = Jifty->handle->_make_clause_case_insensitive( $key, '=', delete $hash{$key} );
-            $hash{$key}->{operator} = $op;
-            $hash{$key}->{value}    = $val;
-            $hash{$key}->{function} = $func;
-        }
-    }
-    return $self->SUPER::load_by_cols(%hash);
-}
-
-
-#
 sub _set {
     my $self = shift;
 

commit 9440b8dd08b421f029f074f2735bee3d5b660845
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 26 12:28:57 2009 -0400

    Admin/Queues now has working nav

diff --git a/lib/RT/Dispatcher.pm b/lib/RT/Dispatcher.pm
index 21611f8..6599699 100644
--- a/lib/RT/Dispatcher.pm
+++ b/lib/RT/Dispatcher.pm
@@ -295,16 +295,24 @@ before '/SelfService' => sub {
 };
 
 before 'Admin/Queues' => sub {
-
-    #
-    my $id = 'MUST DEAL';
-	my $queue_obj = "must deal!";
     my $tabs;
-    if ($id) {
-        my $queue = Jifty->web->page_navigation->child( $queue_obj->name => url => "Admin/Queues/Modify.html?id=" . $id );
-        $queue->child( _('Basics'),    url => "Admin/Queues/Modify.html?id=" . $id );
-        $queue->child( _('Watchers'),  url => "Admin/Queues/People.html?id=" . $id );
-        $queue->child( _('Templates'), url => "Admin/Queues/Templates.html?id=" . $id );
+    if ( my $id = Jifty->web->request->argument('id') ) {
+        my $queue_obj = RT::Model::Queue->new();
+        $queue_obj->load($id);
+
+        if ( Jifty->web->current_user->has_right( object => RT->system, right => 'AdminQueue' ) ) {
+            Jifty->web->page_navigation->child( _('Select'), url => "/Admin/Queues/" );
+            Jifty->web->page_navigation->child(
+                _('Create'),
+                url       => "/Admin/Queues/Modify.html?create=1",
+                separator => 1
+            );
+        }
+        my $queue
+            = Jifty->web->page_navigation->child( $queue_obj->name => url => "/Admin/Queues/Modify.html?id=" . $id );
+        $queue->child( _('Basics'),    url => "/Admin/Queues/Modify.html?id=" . $id );
+        $queue->child( _('Watchers'),  url => "/Admin/Queues/People.html?id=" . $id );
+        $queue->child( _('Templates'), url => "/Admin/Queues/Templates.html?id=" . $id );
 
         $queue->child( _('Ticket Custom Fields'),
             url => '/Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket&id=' . $id );
@@ -312,12 +320,8 @@ before 'Admin/Queues' => sub {
         $queue->child( _('Transaction Custom Fields'),
             url => '/Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket-RT::Model::Transaction&id=' . $id );
 
-        $queue->child( _('Group rights'), url => "Admin/Queues/GroupRights.html?id=" . $id );
-        $queue->child( _('User rights'),  url => "Admin/Queues/UserRights.html?id=" . $id );
-    }
-    if ( Jifty->web->current_user->has_right( object => RT->system, right => 'AdminQueue' ) ) {
-        Jifty->web->page_navigation->child( _('Select'), url => "Admin/Queues/" );
-        Jifty->web->page_navigation->child( _('Create'), url => "Admin/Queues/Modify.html?create=1", separator => 1 );
+        $queue->child( _('Group rights'), url => "/Admin/Queues/GroupRights.html?id=" . $id );
+        $queue->child( _('User rights'),  url => "/Admin/Queues/UserRights.html?id=" . $id );
     }
 };
 
@@ -326,13 +330,13 @@ before 'User/Group' => sub {
 
     # User/Groups
     if ( $group_obj and $group_obj->id ) {
-        my $group = Jifty->web->navigation->child( url => "User/Groups/Modify.html?id=" . $group_obj->id );
-        $group->child( _('Basics'),  url => "User/Groups/Modify.html?id=" . $group_obj->id );
-        $group->child( _('Members'), url => "User/Groups/Members.html?id=" . $group_obj->id );
+        my $group = Jifty->web->navigation->child( url => "/User/Groups/Modify.html?id=" . $group_obj->id );
+        $group->child( _('Basics'),  url => "/User/Groups/Modify.html?id=" . $group_obj->id );
+        $group->child( _('Members'), url => "/User/Groups/Members.html?id=" . $group_obj->id );
 
     }
-    Jifty->web->page_navigation( _('Select group') => url => "User/Groups/index.html" );
-    Jifty->web->page_navigation( _('New group') => url => "User/Groups/Modify.html?create=1", separator => 1 );
+    Jifty->web->page_navigation( _('Select group') => url => "/User/Groups/index.html" );
+    Jifty->web->page_navigation( _('New group') => url => "/User/Groups/Modify.html?create=1", separator => 1 );
 
 };
 =for later Navigation
@@ -374,8 +378,8 @@ if ( $dashboard_obj and $dashboard_obj->id ) {
 # /Admin/CustomFields tabs
 
 if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminCustomField')) {
-Jifty->web->page_navigation->child(_('Select'), url => "Admin/CustomFields/");
-Jifty->web->page_navigation->child(_('Create'), url => "Admin/CustomFields/Modify.html?create=1", separator => 1,);
+Jifty->web->page_navigation->child(_('Select'), url => "/Admin/CustomFields/");
+Jifty->web->page_navigation->child(_('Create'), url => "/Admin/CustomFields/Modify.html?create=1", separator => 1,);
 if ($id) {
     my $cf = RT::Model::CustomField->new();
     $cf->load($id);
@@ -384,7 +388,7 @@ if ($id) {
 
                 $cftabs->child(_('Basics') => url  => "Admin/CustomFields/Modify.html?id=" . $id);
                 $cftabs->child( _('Group rights') => url  => "Admin/CustomFields/GroupRights.html?id=" . $id);
-                $cftabs->child( _('User rights') => url => "Admin/CustomFields/UserRights.html?id=" . $id);
+                $cftabs->child( _('User rights') => url => "/Admin/CustomFields/UserRights.html?id=" . $id);
 
 
 
@@ -564,11 +568,11 @@ Jifty->web->page_navigation->child( _('Bulk Update') => url  => "Search/Bulk.htm
     };
 
 # /Admin/Users tabs
-		my $user = $user_admin->child(url => "Admin/Users/Modify.html?id=".$id,);
-	       $user->child(_('Basics'), url => "Admin/Users/Modify.html?id=".$id);
-	       $user->child(_('Memberships'), url => "Admin/Users/Memberships.html?id=".$id);
-	       $user->child(_('History'), url => "Admin/Users/History.html?id=".$id);
-	       $user->child(_('RT at a glance'), url => "Admin/Users/MyRT.html?id=".$id);
+		my $user = $user_admin->child(url => "/Admin/Users/Modify.html?id=".$id,);
+	       $user->child(_('Basics'), url => "/Admin/Users/Modify.html?id=".$id);
+	       $user->child(_('Memberships'), url => "/Admin/Users/Memberships.html?id=".$id);
+	       $user->child(_('History'), url => "/Admin/Users/History.html?id=".$id);
+	       $user->child(_('RT at a glance'), url => "/Admin/Users/MyRT.html?id=".$id);
 	}
 };
     if ( RT->config->get('gnupg')->{'enable'} ) {
@@ -578,8 +582,8 @@ Jifty->web->navigation->child(_('GnuPG'), url  => "Admin/Users/GnuPG.html?id=".$
 }
 
 if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminUsers')) {
-Jifty->web->navigation->child(_('Select'), url => "Admin/Users/");
-Jifty->web->navigation->child(_('Create'), url => "Admin/Users/Modify.html?create=1", separator => 1);
+Jifty->web->navigation->child(_('Select'), url => "/Admin/Users/");
+Jifty->web->navigation->child(_('Create'), url => "/Admin/Users/Modify.html?create=1", separator => 1);
 }
 
 

commit a18487877781057cb3fe24c6a95ec7e7cc4eda9f
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 26 12:51:21 2009 -0400

    some Admin UI tabs, dashboard tabs, personal group tabs

diff --git a/lib/RT/Dispatcher.pm b/lib/RT/Dispatcher.pm
index 6599699..d46424e 100644
--- a/lib/RT/Dispatcher.pm
+++ b/lib/RT/Dispatcher.pm
@@ -246,17 +246,10 @@ before qr{.*} => run {
 };
 
 before 'Dashboards/' => sub {
-    my $dashboard_list = Jifty->web->page_navigation( _('Select dashboard'), url => "/Dashboards/index.html" );
-
-    my $dashboard = RT::Dashboard->new( current_user => Jifty->web->current_user );
-    my @objects = $dashboard->_privacy_objects( create => 1 );
-
-    if (@objects) {
-        Jifty->web->page_navigation->child(
-            _('New dashboard'),
-            url       => "/Dashboards/Modify.html?create=1",
-            separator => 1
-        );
+    my $dashboard_list = Jifty->web->page_navigation( _('Select'), url => "/Dashboards/index.html" );
+   
+    if ( RT::Dashboard->new->_privacy_objects( create => 1 )) {
+        Jifty->web->page_navigation->child( _('Create') => url       => "/Dashboards/Modify.html?create=1");
     }
 };
 
@@ -302,20 +295,14 @@ before 'Admin/Queues' => sub {
 
         if ( Jifty->web->current_user->has_right( object => RT->system, right => 'AdminQueue' ) ) {
             Jifty->web->page_navigation->child( _('Select'), url => "/Admin/Queues/" );
-            Jifty->web->page_navigation->child(
-                _('Create'),
-                url       => "/Admin/Queues/Modify.html?create=1",
-                separator => 1
-            );
+            Jifty->web->page_navigation->child( _('Create'), url       => "/Admin/Queues/Modify.html?create=1");
         }
-        my $queue
-            = Jifty->web->page_navigation->child( $queue_obj->name => url => "/Admin/Queues/Modify.html?id=" . $id );
+        my $queue = Jifty->web->page_navigation->child( $queue_obj->name => url => "/Admin/Queues/Modify.html?id=" . $id );
         $queue->child( _('Basics'),    url => "/Admin/Queues/Modify.html?id=" . $id );
         $queue->child( _('Watchers'),  url => "/Admin/Queues/People.html?id=" . $id );
         $queue->child( _('Templates'), url => "/Admin/Queues/Templates.html?id=" . $id );
 
-        $queue->child( _('Ticket Custom Fields'),
-            url => '/Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket&id=' . $id );
+        $queue->child( _('Ticket Custom Fields'), url => '/Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket&id=' . $id );
 
         $queue->child( _('Transaction Custom Fields'),
             url => '/Admin/Queues/CustomFields.html?sub_type=RT::Model::Ticket-RT::Model::Transaction&id=' . $id );
@@ -325,14 +312,77 @@ before 'Admin/Queues' => sub {
     }
 };
 
+before 'Admin/Users' => sub {
+if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminUsers')) {
+Jifty->web->navigation->child(_('Select'), url => "/Admin/Users/");
+Jifty->web->navigation->child(_('Create'), url => "/Admin/Users/Modify.html?create=1", separator => 1);
+}
+    if ( my $id = Jifty->web->request->argument('id') ) {
+        my $obj = RT::Model::User->new();
+        $obj->load($id);
+		my $user = $user_admin->child($obj->Name, url => "/Admin/Users/Modify.html?id=".$id,);
+	       $user->child(_('Basics'), url => "/Admin/Users/Modify.html?id=".$id);
+	       $user->child(_('Memberships'), url => "/Admin/Users/Memberships.html?id=".$id);
+	       $user->child(_('History'), url => "/Admin/Users/History.html?id=".$id);
+	       $user->child(_('RT at a glance'), url => "/Admin/Users/MyRT.html?id=".$id);
+	}
+    if ( RT->config->get('gnupg')->{'enable'} ) {
+Jifty->web->navigation->child(_('GnuPG'), url  => "Admin/Users/GnuPG.html?id=".$id,
+        };
+    }
+
+};
+
+before 'Admin/Groups' => sub {
+
+Jifty->web->page_navigation->child( _('Select') => url  => "Admin/Groups/");
+Jifty->web->page_navigation->child( _('Create') => url      => "Admin/Groups/Modify.html?create=1", separator => 1);
+    if ( my $id = Jifty->web->request->argument('id') ) {
+        my $obj = RT::Model::User->new();
+        $obj->load($id);
+        $tabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
+        $tabs->child( _('Basics') => url  => "Admin/Groups/Modify.html?id=" . $obj->id );
+        $tabs->child( _('Members') => url  => "Admin/Groups/Members.html?id=" . $obj->id );
+        $tabs->child( _('Group rights') => url  => "Admin/Groups/GroupRights.html?id=" . $obj->id );
+        $tabs->child( _('User rights') => url  => "Admin/Groups/UserRights.html?id=" . $obj->id );
+        $tabs->child( _('History') => url  => "Admin/Groups/History.html?id=" . $obj->id );
+    }
+};
+before 'Admin/CustomFields/' => sub {
+    if ( Jifty->web->current_user->has_right( object => RT->system, right => 'AdminCustomField' ) ) {
+        Jifty->web->page_navigation->child( _('Select'), url => "/Admin/CustomFields/" );
+        Jifty->web->page_navigation->child(
+            _('Create') =>
+            url       => "/Admin/CustomFields/Modify.html?create=1",
+        );
+
+    }
+    if ( my $id = Jifty->web->request->argument('id') ) {
+        my $obj = RT::Model::CustomField->new();
+        $obj->load($id);
+        $cftabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
+
+        $cftabs->child( _('Basics')       => url => "Admin/CustomFields/Modify.html?id=" . $id );
+        $cftabs->child( _('Group rights') => url => "Admin/CustomFields/GroupRights.html?id=" . $id );
+        $cftabs->child( _('User rights')  => url => "/Admin/CustomFields/UserRights.html?id=" . $id );
+
+        if ( $obj->lookup_type =~ /^RT::Model::Queue-/io ) {
+            $cftabs->child( _('Applies to'), url => "Admin/CustomFields/Objects.html?id=" . $id );
+        }
+
+    }
+
+};
+
+
 before 'User/Group' => sub {
-    my $group_obj = undef;    #XXX TODO
 
-    # User/Groups
-    if ( $group_obj and $group_obj->id ) {
-        my $group = Jifty->web->navigation->child( url => "/User/Groups/Modify.html?id=" . $group_obj->id );
-        $group->child( _('Basics'),  url => "/User/Groups/Modify.html?id=" . $group_obj->id );
-        $group->child( _('Members'), url => "/User/Groups/Members.html?id=" . $group_obj->id );
+    if ( my $id = Jifty->web->request->argument('id') ) {
+        my $obj = RT::Model::User->new();
+        $obj->load($id);
+        my $group = Jifty->web->page_navigation->child( url => "/User/Groups/Modify.html?id=" . $obj->id );
+        $group->child( _('Basics'),  url => "/User/Groups/Modify.html?id=" . $obj->id );
+        $group->child( _('Members'), url => "/User/Groups/Members.html?id=" . $obj->id );
 
     }
     Jifty->web->page_navigation( _('Select group') => url => "/User/Groups/index.html" );
@@ -376,30 +426,6 @@ if ( $dashboard_obj and $dashboard_obj->id ) {
 
 
 # /Admin/CustomFields tabs
-
-if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminCustomField')) {
-Jifty->web->page_navigation->child(_('Select'), url => "/Admin/CustomFields/");
-Jifty->web->page_navigation->child(_('Create'), url => "/Admin/CustomFields/Modify.html?create=1", separator => 1,);
-if ($id) {
-    my $cf = RT::Model::CustomField->new();
-    $cf->load($id);
-        $cftabs = Jifty->web->page_navigation->child( $cf->name, url  => "Admin/CustomFields/Modify.html?id=" . $id );
-
-
-                $cftabs->child(_('Basics') => url  => "Admin/CustomFields/Modify.html?id=" . $id);
-                $cftabs->child( _('Group rights') => url  => "Admin/CustomFields/GroupRights.html?id=" . $id);
-                $cftabs->child( _('User rights') => url => "/Admin/CustomFields/UserRights.html?id=" . $id);
-
-
-
-
-    if ($cf->lookup_type =~ /^RT::Model::Queue-/io) {
-		$cftabs->child( _('Applies to'), url  => "Admin/CustomFields/Objects.html?id=" . $id);
-    }
-
-}
-
-
 #/Admin/Global/Workflows tabs
 
 if ( $schema ) {
@@ -568,24 +594,6 @@ Jifty->web->page_navigation->child( _('Bulk Update') => url  => "Search/Bulk.htm
     };
 
 # /Admin/Users tabs
-		my $user = $user_admin->child(url => "/Admin/Users/Modify.html?id=".$id,);
-	       $user->child(_('Basics'), url => "/Admin/Users/Modify.html?id=".$id);
-	       $user->child(_('Memberships'), url => "/Admin/Users/Memberships.html?id=".$id);
-	       $user->child(_('History'), url => "/Admin/Users/History.html?id=".$id);
-	       $user->child(_('RT at a glance'), url => "/Admin/Users/MyRT.html?id=".$id);
-	}
-};
-    if ( RT->config->get('gnupg')->{'enable'} ) {
-Jifty->web->navigation->child(_('GnuPG'), url  => "Admin/Users/GnuPG.html?id=".$id,
-        };
-    }
-}
-
-if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminUsers')) {
-Jifty->web->navigation->child(_('Select'), url => "/Admin/Users/");
-Jifty->web->navigation->child(_('Create'), url => "/Admin/Users/Modify.html?create=1", separator => 1);
-}
-
 
 # Admin/GlobalCustomFields
 
@@ -607,22 +615,6 @@ my $tabs = {
 
 # Admin/Groups
 
-if ( $group_obj and $group_obj->id ) {
-$tabs->{"this"} = { class => "currentnav",                                                           
-                    url  => "Admin/Groups/Modify.html?id=" . $group_obj->id,
-                    label => $group_obj->name,
-                    current_subtab => $current_subtab,
-        Jifty->web->navigation->child( subtabs => 
-        Jifty->web->navigation->child( _('Basics') => url  => "Admin/Groups/Modify.html?id=" . $group_obj->id );
-        Jifty->web->navigation->child( _('Members') => url  => "Admin/Groups/Members.html?id=" . $group_obj->id );
-        Jifty->web->navigation->child( _('Group rights') => url  => "Admin/Groups/GroupRights.html?id=" . $group_obj->id );
-        Jifty->web->navigation->child( _('User rights') => url  => "Admin/Groups/UserRights.html?id=" . $group_obj->id );
-        Jifty->web->navigation->child( _('History') => url  => "Admin/Groups/History.html?id=" . $group_obj->id );
-    }
-}
-}
-$tabs->{"A"} = { label => _('Select'), url  => "Admin/Groups/");
-$tabs->{"B"} = { label     => _('Create'), url      => "Admin/Groups/Modify.html?create=1", separator => 1);
 
 # Prefs/
 my $tabs;

commit a4ab4653d8fad0694c696f19fd6643e83b48a047
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 26 13:21:47 2009 -0400

    Removing outdated currentuser calls from Dashboards code

diff --git a/share/html/Dashboards/Modify.html b/share/html/Dashboards/Modify.html
index e82f388..1415aba 100644
--- a/share/html/Dashboards/Modify.html
+++ b/share/html/Dashboards/Modify.html
@@ -89,7 +89,7 @@ $create = 1 if !$id;
 
 use RT::Dashboard;
 
-my $Dashboard = RT::Dashboard->new( current_user => Jifty->web->current_user );
+my $Dashboard = RT::Dashboard->new( );
 my @privacies = $Dashboard->_privacy_objects(($create ? 'create' : 'modify') => 1);
 
 abort(_("Permission denied")) if @privacies == 0;
diff --git a/share/html/Dashboards/Render.html b/share/html/Dashboards/Render.html
index 929062e..a667ddc 100644
--- a/share/html/Dashboards/Render.html
+++ b/share/html/Dashboards/Render.html
@@ -76,11 +76,11 @@
 my $current_subtab = 'Dashboards/Render.html?id=' . $id;
 
 use RT::Dashboard;
-my $dashboard_obj = RT::Dashboard->new( current_user => Jifty->web->current_user );
+my $dashboard_obj = RT::Dashboard->new( );
 my ($ok, $msg) = $dashboard_obj->load_by_id($id);
 abort(_("Couldn't load dashboard %1: %2", $id, $msg)) if !$ok;
 
-my $SubscriptionObj = RT::Model::Attribute->new( current_user => Jifty->web->current_user );
+my $SubscriptionObj = RT::Model::Attribute->new();
 my $Loaded = 0;
 
 # try to load the subscription to this id

commit e08dc621269385219d2db3c5cab7d9a50e912b5e
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 26 13:22:15 2009 -0400

    Customfield and dashboard page nav

diff --git a/lib/RT/Dispatcher.pm b/lib/RT/Dispatcher.pm
index d46424e..23d5923 100644
--- a/lib/RT/Dispatcher.pm
+++ b/lib/RT/Dispatcher.pm
@@ -208,13 +208,26 @@ before qr{.*} => run {
         $admin_global->child( _('Templates'), url => '/Admin/Global/Templates.html', );
        my $workflows =  $admin_global->child( _('Workflows'), url => '/Admin/Global/Workflows/index.html', );
 		{	
-    $workflows->child( _('Select') .'/'. _('Create') =>  url => "/Admin/Global/Workflows/index.html");
+    $workflows->child( _('Overview') =>  url => "/Admin/Global/Workflows/index.html");
     $workflows->child( _('Localization') =>  url => "/Admin/Global/Workflows/Localization.html");
     $workflows->child( _('Mappings') => url => "/Admin/Global/Workflows/Mappings.html");
 		}
 
 
-        $admin_global->child( _('Custom Fields'), url => '/Admin/Global/CustomFields/index.html', );
+     my $cfadmin =    $admin_global->child( _('Custom Fields'), url => '/Admin/Global/CustomFields/index.html', ); 
+	{
+	    $cfadmin->child( _('Users') => text  => _('Select custom fields for all users') , url  => 'Admin/Global/CustomFields/Users.html' );
+	
+	    $cfadmin->child( _('Groups') => text  => _('Select custom fields for all user groups') , url  => 'Admin/Global/CustomFields/Groups.html');
+	
+	    $cfadmin->child( _('Queues') => text  => _('Select custom fields for all queues') , url  => 'Admin/Global/CustomFields/Queues.html');
+	
+	    $cfadmin->child( _('Tickets') => text  => _('Select custom fields for tickets in all queues') , url  => 'Admin/Global/CustomFields/Queue-Tickets.html') ;
+	
+	    $cfadmin->child( _('Ticket Transactions') => text  => _('Select custom fields for transactions on tickets in all queues') , url  => 'Admin/Global/CustomFields/Queue-Transactions.html' );
+			
+		}
+
         $admin_global->child( _('Group rights'),   url => '/Admin/Global/GroupRights.html', );
         $admin_global->child( _('User rights'),    url => '/Admin/Global/UserRights.html', );
         $admin_global->child( _('RT at a glance'), url => '/Admin/Global/MyRT.html', );
@@ -245,11 +258,24 @@ before qr{.*} => run {
     }
 };
 
-before 'Dashboards/' => sub {
-    my $dashboard_list = Jifty->web->page_navigation( _('Select'), url => "/Dashboards/index.html" );
-   
-    if ( RT::Dashboard->new->_privacy_objects( create => 1 )) {
-        Jifty->web->page_navigation->child( _('Create') => url       => "/Dashboards/Modify.html?create=1");
+before qr'Dashboards/(\d*)?' => sub {
+	Jifty->web->page_navigation->child( _('Select'), url => "/Dashboards/index.html" );
+	require RT::Dashboard; # not a record class, so not autoloaded :/
+    if ( RT::Dashboard->new->_privacy_objects( create => 1 ) ) {
+        Jifty->web->page_navigation->child( _('Create') => url => "/Dashboards/Modify.html?create=1" );
+    }
+
+    if ( my $id = ($1 || Jifty->web->request->argument('id') )) {
+        my $obj = RT::Dashboard->new();
+        $obj->load_by_id($id);
+        if ( $obj and $obj->id ) {
+            my $tabs = Jifty->web->page_navigation->child( "this" => label => $obj->name, url    => "/Dashboards/Modify.html?id=" . $obj->id);
+            $tabs->child( _('Basics'),       url => "/Dashboards/Modify.html?id=" . $obj->id );
+            $tabs->child( _('Queries'),      url => "/Dashboards/Queries.html?id=" . $obj->id );
+            $tabs->child( _('Subscription'), url => "/Dashboards/Subscription.html?dashboard_id=" . $obj->id ) if $obj->current_user_can_subscribe;
+            $tabs->child( _('Show'), url => "Dashboards/" . $obj->id . "/" . $obj->name )
+
+        }
     }
 };
 
@@ -289,14 +315,14 @@ before '/SelfService' => sub {
 
 before 'Admin/Queues' => sub {
     my $tabs;
-    if ( my $id = Jifty->web->request->argument('id') ) {
-        my $queue_obj = RT::Model::Queue->new();
-        $queue_obj->load($id);
-
         if ( Jifty->web->current_user->has_right( object => RT->system, right => 'AdminQueue' ) ) {
             Jifty->web->page_navigation->child( _('Select'), url => "/Admin/Queues/" );
             Jifty->web->page_navigation->child( _('Create'), url       => "/Admin/Queues/Modify.html?create=1");
         }
+    if ( my $id = Jifty->web->request->argument('id') ) {
+        my $queue_obj = RT::Model::Queue->new();
+        $queue_obj->load($id);
+
         my $queue = Jifty->web->page_navigation->child( $queue_obj->name => url => "/Admin/Queues/Modify.html?id=" . $id );
         $queue->child( _('Basics'),    url => "/Admin/Queues/Modify.html?id=" . $id );
         $queue->child( _('Watchers'),  url => "/Admin/Queues/People.html?id=" . $id );
@@ -314,21 +340,20 @@ before 'Admin/Queues' => sub {
 
 before 'Admin/Users' => sub {
 if (Jifty->web->current_user->has_right( object => RT->system, right => 'AdminUsers')) {
-Jifty->web->navigation->child(_('Select'), url => "/Admin/Users/");
-Jifty->web->navigation->child(_('Create'), url => "/Admin/Users/Modify.html?create=1", separator => 1);
+Jifty->web->page_navigation->child(_('Select'), url => "/Admin/Users/");
+Jifty->web->page_navigation->child(_('Create'), url => "/Admin/Users/Modify.html?create=1", separator => 1);
 }
     if ( my $id = Jifty->web->request->argument('id') ) {
         my $obj = RT::Model::User->new();
         $obj->load($id);
-		my $user = $user_admin->child($obj->Name, url => "/Admin/Users/Modify.html?id=".$id,);
-	       $user->child(_('Basics'), url => "/Admin/Users/Modify.html?id=".$id);
-	       $user->child(_('Memberships'), url => "/Admin/Users/Memberships.html?id=".$id);
-	       $user->child(_('History'), url => "/Admin/Users/History.html?id=".$id);
-	       $user->child(_('RT at a glance'), url => "/Admin/Users/MyRT.html?id=".$id);
-	}
+		my $tabs = Jifty->web->page_navigation->child($obj->Name, url => "/Admin/Users/Modify.html?id=".$id,);
+	       $tabs->child(_('Basics'), url => "/Admin/Users/Modify.html?id=".$id);
+	       $tabs->child(_('Memberships'), url => "/Admin/Users/Memberships.html?id=".$id);
+	       $tabs->child(_('History'), url => "/Admin/Users/History.html?id=".$id);
+	       $tabs->child(_('RT at a glance'), url => "/Admin/Users/MyRT.html?id=".$id);
     if ( RT->config->get('gnupg')->{'enable'} ) {
-Jifty->web->navigation->child(_('GnuPG'), url  => "Admin/Users/GnuPG.html?id=".$id,
-        };
+			$tabs->child(_('GnuPG'), url  => "Admin/Users/GnuPG.html?id=".$id);
+        }
     }
 
 };
@@ -340,7 +365,7 @@ Jifty->web->page_navigation->child( _('Create') => url      => "Admin/Groups/Mod
     if ( my $id = Jifty->web->request->argument('id') ) {
         my $obj = RT::Model::User->new();
         $obj->load($id);
-        $tabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
+        my $tabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
         $tabs->child( _('Basics') => url  => "Admin/Groups/Modify.html?id=" . $obj->id );
         $tabs->child( _('Members') => url  => "Admin/Groups/Members.html?id=" . $obj->id );
         $tabs->child( _('Group rights') => url  => "Admin/Groups/GroupRights.html?id=" . $obj->id );
@@ -360,14 +385,14 @@ before 'Admin/CustomFields/' => sub {
     if ( my $id = Jifty->web->request->argument('id') ) {
         my $obj = RT::Model::CustomField->new();
         $obj->load($id);
-        $cftabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
+        my $tabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
 
-        $cftabs->child( _('Basics')       => url => "Admin/CustomFields/Modify.html?id=" . $id );
-        $cftabs->child( _('Group rights') => url => "Admin/CustomFields/GroupRights.html?id=" . $id );
-        $cftabs->child( _('User rights')  => url => "/Admin/CustomFields/UserRights.html?id=" . $id );
+        $tabs->child( _('Basics')       => url => "Admin/CustomFields/Modify.html?id=" . $id );
+        $tabs->child( _('Group rights') => url => "Admin/CustomFields/GroupRights.html?id=" . $id );
+        $tabs->child( _('User rights')  => url => "/Admin/CustomFields/UserRights.html?id=" . $id );
 
         if ( $obj->lookup_type =~ /^RT::Model::Queue-/io ) {
-            $cftabs->child( _('Applies to'), url => "Admin/CustomFields/Objects.html?id=" . $id );
+            $tabs->child( _('Applies to'), url => "Admin/CustomFields/Objects.html?id=" . $id );
         }
 
     }
@@ -401,24 +426,6 @@ my $basetopactions = {
 
 
 
-# /Tools/Dashboards tabs
-if ( $dashboard_obj and $dashboard_obj->id ) {
-			$dash =	Jifty->web->navigation->child( "this" => label   => $dashboard_obj->name, url    => "Dashboards/Modify.html?id=" . $dashboard_obj->id);
-            $dash->child(_('Basics'), url  => "Dashboards/Modify.html?id=" . $dashboard_obj->id);
-            $dash->child(_('Queries'), url  => "Dashboards/Queries.html?id=" . $dashboard_obj->id);
-            $dash->child(_('Subscription'), url  => "Dashboards/Subscription.html?dashboard_id=" . $dashboard_obj->id);
-            $dash->child(_('Show'), url  => "Dashboards/" . $dashboard_obj->id . "/".$dashboard_obj->name)
-
-        }
-
-    delete $tabs->{"this"}{"subtabs"}{"c_Subscription"} unless $dashboard_obj->current_user_can_subscribe;
-
-    $tabs->{"this"}{"subtabs"}{"z_Preview"}{url} = $real_subtab
-        if $real_subtab =~ /Render/
-        || $real_subtab =~ /Dashboard\/\d+/;
-}
-
-
 
 
 # /SelfService Tabs
@@ -601,16 +608,6 @@ my $tabs = {
 
 
 
-    $cfadmin->child( _('Users') => text  => _('Select custom fields for all users') , url  => 'Admin/Global/CustomFields/Users.html' );
-
-    $cfadmin->child( _('Groups') => text  => _('Select custom fields for all user groups') , url  => 'Admin/Global/CustomFields/Groups.html');
-
-    $cfadmin->child( _('Queues') => text  => _('Select custom fields for all queues') , url  => 'Admin/Global/CustomFields/Queues.html');
-
-    $cfadmin->child( _('Tickets') => text  => _('Select custom fields for tickets in all queues') , url  => 'Admin/Global/CustomFields/Queue-Tickets.html' ;
-
-    $cfadmin->child( _('Ticket Transactions') => text  => _('Select custom fields for transactions on tickets in all queues') , url  => 'Admin/Global/CustomFields/Queue-Transactions.html' =>);
-
 };
 
 # Admin/Groups

commit 3ac5a89f38d5290f9ad3abb52b493789ee688bbf
Author: Jesse Vincent <jesse at bestpractical.com>
Date:   Mon Oct 26 16:13:11 2009 -0400

    yay. some ticket nav

diff --git a/lib/RT/Dispatcher.pm b/lib/RT/Dispatcher.pm
index 23d5923..a40a5b4 100644
--- a/lib/RT/Dispatcher.pm
+++ b/lib/RT/Dispatcher.pm
@@ -186,7 +186,7 @@ before qr{.*} => run {
     my $tools = Jifty->web->navigation->child( _('Tools'), url => '/Tools/index.html' );
     $tools->child( _('Dashboards'), url => '/Dashboards/index.html' );
 
-	my $reports = $tools->child( _('Reports'), url => '/Tools/Reports/index.html' );
+    my $reports = $tools->child( _('Reports'), url => '/Tools/Reports/index.html' );
     $reports->child( _('Resolved by owner'),       url => '/Tools/Reports/ResolvedByOwner.html', );
     $reports->child( _('Resolved in date range'),  url => '/Tools/Reports/ResolvedByDates.html', );
     $reports->child( _('Created in a date range'), url => '/Tools/Reports/CreatedByDates.html', );
@@ -197,8 +197,8 @@ before qr{.*} => run {
         && Jifty->web->current_user->has_right( right => 'ShowConfigTab', object => RT->system ) )
     {
         my $admin = Jifty->web->navigation->child( Config => label => _('Configuration'), url => '/Admin/' );
-        $admin->child( _('Users'),  url => '/Admin/Users/', );
-        $admin->child( _('Groups'), url => '/Admin/Groups/', );
+        $admin->child( _('Users'),         url => '/Admin/Users/', );
+        $admin->child( _('Groups'),        url => '/Admin/Groups/', );
         $admin->child( _('Queues'),        url => '/Admin/Queues/', );
         $admin->child( _('Custom Fields'), url => '/Admin/CustomFields/', );
         $admin->child( _('Rules'),         url => '/admin/rules/', );
@@ -206,27 +206,41 @@ before qr{.*} => run {
         my $admin_global = $admin->child( _('Global'), url => '/Admin/Global/', );
 
         $admin_global->child( _('Templates'), url => '/Admin/Global/Templates.html', );
-       my $workflows =  $admin_global->child( _('Workflows'), url => '/Admin/Global/Workflows/index.html', );
-		{	
-    $workflows->child( _('Overview') =>  url => "/Admin/Global/Workflows/index.html");
-    $workflows->child( _('Localization') =>  url => "/Admin/Global/Workflows/Localization.html");
-    $workflows->child( _('Mappings') => url => "/Admin/Global/Workflows/Mappings.html");
-		}
+        my $workflows = $admin_global->child( _('Workflows'), url => '/Admin/Global/Workflows/index.html', );
+        {
+            $workflows->child( _('Overview')     => url => "/Admin/Global/Workflows/index.html" );
+            $workflows->child( _('Localization') => url => "/Admin/Global/Workflows/Localization.html" );
+            $workflows->child( _('Mappings')     => url => "/Admin/Global/Workflows/Mappings.html" );
+        }
 
+        my $cfadmin = $admin_global->child( _('Custom Fields'), url => '/Admin/Global/CustomFields/index.html', );
+        {
+            $cfadmin->child(
+                _('Users') => text => _('Select custom fields for all users'),
+                url        => 'Admin/Global/CustomFields/Users.html'
+            );
 
-     my $cfadmin =    $admin_global->child( _('Custom Fields'), url => '/Admin/Global/CustomFields/index.html', ); 
-	{
-	    $cfadmin->child( _('Users') => text  => _('Select custom fields for all users') , url  => 'Admin/Global/CustomFields/Users.html' );
-	
-	    $cfadmin->child( _('Groups') => text  => _('Select custom fields for all user groups') , url  => 'Admin/Global/CustomFields/Groups.html');
-	
-	    $cfadmin->child( _('Queues') => text  => _('Select custom fields for all queues') , url  => 'Admin/Global/CustomFields/Queues.html');
-	
-	    $cfadmin->child( _('Tickets') => text  => _('Select custom fields for tickets in all queues') , url  => 'Admin/Global/CustomFields/Queue-Tickets.html') ;
-	
-	    $cfadmin->child( _('Ticket Transactions') => text  => _('Select custom fields for transactions on tickets in all queues') , url  => 'Admin/Global/CustomFields/Queue-Transactions.html' );
-			
-		}
+            $cfadmin->child(
+                _('Groups') => text => _('Select custom fields for all user groups'),
+                url         => 'Admin/Global/CustomFields/Groups.html'
+            );
+
+            $cfadmin->child(
+                _('Queues') => text => _('Select custom fields for all queues'),
+                url         => 'Admin/Global/CustomFields/Queues.html'
+            );
+
+            $cfadmin->child(
+                _('Tickets') => text => _('Select custom fields for tickets in all queues'),
+                url => 'Admin/Global/CustomFields/Queue-Tickets.html'
+            );
+
+            $cfadmin->child(
+                _('Ticket Transactions') => text => _('Select custom fields for transactions on tickets in all queues'),
+                url => 'Admin/Global/CustomFields/Queue-Transactions.html'
+            );
+
+        }
 
         $admin_global->child( _('Group rights'),   url => '/Admin/Global/GroupRights.html', );
         $admin_global->child( _('User rights'),    url => '/Admin/Global/UserRights.html', );
@@ -234,7 +248,7 @@ before qr{.*} => run {
         $admin_global->child( _('Jifty'),          url => '/Admin/Global/Jifty.html', );
         $admin_global->child( _('System'),         url => '/Admin/Global/System.html', );
 
-        my $admin_tools = $admin->child( _('Tools'), url => '/Admin/Tools/',);
+        my $admin_tools = $admin->child( _('Tools'), url => '/Admin/Tools/', );
         $admin_tools->child( _('System Configuration'), url => '/Admin/Tools/Configuration.html', );
         $admin_tools->child( _('Shredder'),             url => '/Admin/Tools/Shredder', );
     }
@@ -247,13 +261,15 @@ before qr{.*} => run {
     {
         my $prefs = Jifty->web->navigation->child( _('Preferences'), url => '/Prefs/Other.html' );
 
-        $prefs->child( _('Settings'), url => '/Prefs/Other.html', );
+        $prefs->child( _('Settings'),       url => '/Prefs/Other.html', );
         $prefs->child( _('About me'),       url => '/User/Prefs.html', );
         $prefs->child( _('Search options'), url => '/Prefs/SearchOptions.html', );
         $prefs->child( _('RT at a glance'), url => '/Prefs/MyRT.html', );
     }
 
-    if (Jifty->web->current_user->user_object && Jifty->web->current_user->has_right( right  => 'ShowApprovalsTab', object => RT->system)) {
+    if (   Jifty->web->current_user->user_object
+        && Jifty->web->current_user->has_right( right => 'ShowApprovalsTab', object => RT->system ) )
+    {
         Jifty->web->navigation->child( _('Approval'), url => '/Approvals/' );
     }
 };
@@ -352,7 +368,7 @@ Jifty->web->page_navigation->child(_('Create'), url => "/Admin/Users/Modify.html
 	       $tabs->child(_('History'), url => "/Admin/Users/History.html?id=".$id);
 	       $tabs->child(_('RT at a glance'), url => "/Admin/Users/MyRT.html?id=".$id);
     if ( RT->config->get('gnupg')->{'enable'} ) {
-			$tabs->child(_('GnuPG'), url  => "Admin/Users/GnuPG.html?id=".$id);
+			$tabs->child(_('GnuPG'), url  => "/Admin/Users/GnuPG.html?id=".$id);
         }
     }
 
@@ -360,19 +376,21 @@ Jifty->web->page_navigation->child(_('Create'), url => "/Admin/Users/Modify.html
 
 before 'Admin/Groups' => sub {
 
-Jifty->web->page_navigation->child( _('Select') => url  => "Admin/Groups/");
-Jifty->web->page_navigation->child( _('Create') => url      => "Admin/Groups/Modify.html?create=1", separator => 1);
+Jifty->web->page_navigation->child( _('Select') => url  => "/Admin/Groups/");
+Jifty->web->page_navigation->child( _('Create') => url      => "/Admin/Groups/Modify.html?create=1", separator => 1);
     if ( my $id = Jifty->web->request->argument('id') ) {
         my $obj = RT::Model::User->new();
         $obj->load($id);
-        my $tabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
-        $tabs->child( _('Basics') => url  => "Admin/Groups/Modify.html?id=" . $obj->id );
-        $tabs->child( _('Members') => url  => "Admin/Groups/Members.html?id=" . $obj->id );
-        $tabs->child( _('Group rights') => url  => "Admin/Groups/GroupRights.html?id=" . $obj->id );
-        $tabs->child( _('User rights') => url  => "Admin/Groups/UserRights.html?id=" . $obj->id );
-        $tabs->child( _('History') => url  => "Admin/Groups/History.html?id=" . $obj->id );
+        my $tabs = Jifty->web->page_navigation->child( $obj->name, url => "/Admin/CustomFields/Modify.html?id=" . $id );
+        $tabs->child( _('Basics') => url  => "/Admin/Groups/Modify.html?id=" . $obj->id );
+        $tabs->child( _('Members') => url  => "/Admin/Groups/Members.html?id=" . $obj->id );
+        $tabs->child( _('Group rights') => url  => "/Admin/Groups/GroupRights.html?id=" . $obj->id );
+        $tabs->child( _('User rights') => url  => "/Admin/Groups/UserRights.html?id=" . $obj->id );
+        $tabs->child( _('History') => url  => "/Admin/Groups/History.html?id=" . $obj->id );
     }
 };
+
+
 before 'Admin/CustomFields/' => sub {
     if ( Jifty->web->current_user->has_right( object => RT->system, right => 'AdminCustomField' ) ) {
         Jifty->web->page_navigation->child( _('Select'), url => "/Admin/CustomFields/" );
@@ -385,23 +403,92 @@ before 'Admin/CustomFields/' => sub {
     if ( my $id = Jifty->web->request->argument('id') ) {
         my $obj = RT::Model::CustomField->new();
         $obj->load($id);
-        my $tabs = Jifty->web->page_navigation->child( $obj->name, url => "Admin/CustomFields/Modify.html?id=" . $id );
+        my $tabs = Jifty->web->page_navigation->child( $obj->name, url => "/Admin/CustomFields/Modify.html?id=" . $id );
 
-        $tabs->child( _('Basics')       => url => "Admin/CustomFields/Modify.html?id=" . $id );
-        $tabs->child( _('Group rights') => url => "Admin/CustomFields/GroupRights.html?id=" . $id );
+        $tabs->child( _('Basics')       => url => "/Admin/CustomFields/Modify.html?id=" . $id );
+        $tabs->child( _('Group rights') => url => "/Admin/CustomFields/GroupRights.html?id=" . $id );
         $tabs->child( _('User rights')  => url => "/Admin/CustomFields/UserRights.html?id=" . $id );
 
         if ( $obj->lookup_type =~ /^RT::Model::Queue-/io ) {
-            $tabs->child( _('Applies to'), url => "Admin/CustomFields/Objects.html?id=" . $id );
+            $tabs->child( _('Applies to'), url => "/Admin/CustomFields/Objects.html?id=" . $id );
         }
 
     }
 
 };
 
+before 'Admin/Rules' => sub {
+        Jifty->web->page_navigation->child(_('Select'), url  => "/Admin/Rules/");
+        Jifty->web->page_navigation->child(_('Create'), url  => "/Admin/Rules/Modify.html?create=1");
+};
 
-before 'User/Group' => sub {
+before 'Ticket/' => sub {
+    if ( my $id = Jifty->web->request->argument('id') ) {
+        my $obj = RT::Model::Ticket->new();
+        $obj->load($id);
+
+        my $tabs = Jifty->web->page_navigation->child(
+            "#" . $id => class => "currentnav",
+            url       => "/Ticket/Display.html?id=" . $id
+        );
+
+        $tabs->child( _('Display') => url => "/Ticket/Display.html?id=" . $id );
+
+        $tabs->child( _('History') => url => "/Ticket/History.html?id=" . $id );
+        $tabs->child( _('Basics')  => url => "/Ticket/Modify.html?id=" . $id );
+
+        $tabs->child( _('Dates') => url => "/Ticket/ModifyDates.html?id=" . $id );
+        $tabs->child( _('People'), url => "/Ticket/ModifyPeople.html?id=" . $id );
+        $tabs->child( _('Links'),  url => "/Ticket/ModifyLinks.html?id=" . $id );
+        $tabs->child( _('Jumbo'),  url => "/Ticket/ModifyAll.html?id=" . $id );
+
+        my %can = ( ModifyTicket => $obj->current_user_has_right('ModifyTicket') );
+
+        if ( $can{'ModifyTicket'} or $obj->current_user_has_right('ReplyToTicket') ) {
+            $tabs->child( _('Reply'), url => "/Ticket/Update.html?action=respond&id=" . $id );
+        }
+
+        if ( $can{'ModifyTicket'} ) {
+            my $current = $obj->status;
+            my $schema  = $obj->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 $url = 'Ticket/';
+                if ($action) {
+		#XXX TODO
+                    #$url .= "Update.html?" . $m->comp( '/Elements/QueryString', action => $action, default_status => $next, id => $id );
+                } else {
+			#XXX TODO
+                   # $url .= "Display.html?" . $m->comp( '/Elements/QueryString', Status => $next, id => $id );
+                }
+                $tabs->child( _( $schema->transition_label( $current => $next ) ) => url => $url );
+            }
+
+        }
+            if ( $obj->current_user_has_right('OwnTicket') ) {
+                if ( $obj->owner_obj->id == RT->nobody->id ) {
+                    $tabs->child( _('Take') => url => "/Ticket/Display.html?action=take&id=" . $id )
+                    if ($can{'ModifyTicket'} or $obj->current_user_has_right('TakeTicket'));
+                } elsif ( $obj->owner_obj->id != Jifty->web->current_user->id ) {
+                    $tabs->child( _('Steal') => url => "/Ticket/Display.html?action=steal&id=" . $id )
+                        if ($can{'ModifyTicket'}
+                            or $obj->current_user_has_right('StealTicket'));
+                }
+            }
 
+            if ( $can{'ModifyTicket'} or $obj->current_user_has_right('CommentOnTicket') ) {
+                $tabs->child( _('Comment') => url => "/Ticket/Update.html?action=comment&id=" . $id );
+            }
+
+
+        # $actions->{'_ZZ'} = { html => $m->scomp( '/Ticket/Elements/Bookmark', id => $obj->id ), };
+    }
+};
+
+before 'User/Group' => sub {
     if ( my $id = Jifty->web->request->argument('id') ) {
         my $obj = RT::Model::User->new();
         $obj->load($id);
@@ -414,6 +501,7 @@ before 'User/Group' => sub {
     Jifty->web->page_navigation( _('New group') => url => "/User/Groups/Modify.html?create=1", separator => 1 );
 
 };
+
 =for later Navigation
 
 # Top level tabs /Elements/Tabs
@@ -425,19 +513,10 @@ my $basetopactions = {
 	};
 
 
-
-
-
-# /SelfService Tabs
-
-
-
-# /Admin/CustomFields tabs
 #/Admin/Global/Workflows tabs
 
 if ( $schema ) {
     my $qs_name = $m->comp( '/Elements/QueryString', name => $schema->name );
-
 		$workflow = Jifty->web->page_navigation( $schema->name, url => "$base/Summary.html?$qs_name");
             $workflow->child( _("Summary") => url  => "$base/Summary.html?$qs_name");
             $workflow->child( _("Statuses") => url  => "$base/Statuses.html?$qs_name");
@@ -473,76 +552,12 @@ Jifty->web->page_navigation->child( '< ' . _('Prev') => class => "nav", url  =>
   
         # Don't display next links if we're on the last ticket
         if ( $item_map->{ $ticket->id }->{next} ) {
-            Jifty->web->page_navigation->child(
-                _('next') . ' >' => class => "nav",
-                url              => "Ticket/Display.html?id=" . $item_map->{ $ticket->id }->{next}
-            );
-            Jifty->web->page_navigation->child(
-                _('Last') . ' >>' => class => "nav",
-                url               => "Ticket/Display.html?id=" . $item_map->{last}
-            );
-
-            my $ticket = Jifty->web->page_navigation->child(
-                "#" . $id => class => "currentnav",
-                url       => "Ticket/Display.html?id=" . $ticket->id,
-            );
-
-            $ticket->child( _('Display') => url => "Ticket/Display.html?id=" . $id );
-
-            $ticket->child( _('History') => url => "Ticket/History.html?id=" . $id );
-            $ticket->child( _('Basics')  => url => "Ticket/Modify.html?id=" . $id );
-
-            $ticket->child( _('Dates') => url => "Ticket/ModifyDates.html?id=" . $id );
-            $ticket->child( _('People'), url => "Ticket/ModifyPeople.html?id=" . $id );
-            $ticket->child( _('Links'),  url => "Ticket/ModifyLinks.html?id=" . $id );
-            $ticket->child( _('Jumbo'),  url => "Ticket/ModifyAll.html?id=" . $id );
-
-        }
-    my %can = ( ModifyTicket => $ticket->current_user_has_right('ModifyTicket'));
-
-    if ( $can{'ModifyTicket'} or $ticket->current_user_has_right('ReplyToTicket') ) {
-		Jifty->web->navigation->child( _('Reply'), url  => "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 $url = 'Ticket/';
-            if ( $action ) {
-                $url .= "Update.html?". $m->comp( '/Elements/QueryString', action => $action, default_status => $next, id => $id);
-            } else {
-                $url .= "Display.html?". $m->comp( '/Elements/QueryString', Status => $next, id => $id);
-            }
-			Jifty->web->page_navigation->child( _( $schema->transition_label( $current => $next ) ) => url => $url);
+            Jifty->web->page_navigation->child( _('next') . ' >' => class => "nav", url              => "Ticket/Display.html?id=" . $item_map->{ $ticket->id }->{next});
+            Jifty->web->page_navigation->child( _('Last') . ' >>' => class => "nav", url               => "Ticket/Display.html?id=" . $item_map->{last});
+}
         }
-    }
 
-    if ( $ticket->current_user_has_right('OwnTicket') ) {
-        if ( $ticket->owner_obj->id == RT->nobody->id ) {
-				Jifty->web->page_navigation->child( _('Take') => url  => "Ticket/Display.html?action=take&id=" . $id );
-                if $can{'ModifyTicket'}
-                    or $ticket->current_user_has_right('TakeTicket');
-        } elsif ( $ticket->owner_obj->id != Jifty->web->current_user->id ) {
-				Jifty->web->page_navigation->child( _('Steal') => url  => "Ticket/Display.html?action=steal&id=" . $id )
-                if $can{'ModifyTicket'}
-                    or $ticket->current_user_has_right('StealTicket');
-        }
-    }
 
-    if (   $can{'ModifyTicket'} or $ticket->current_user_has_right('CommentOnTicket') ) {
-Jifty->web->page_navigation->child( _('Comment') => url  => "Ticket/Update.html?action=comment&id=" . $id );
-    }
-
-    $actions->{'_ZZ'}
-        = { html => $m->scomp( '/Ticket/Elements/Bookmark', id => $ticket->id ),
-        };
-
-}
 
 my $args = '';
 my $has_query = '';
@@ -592,26 +607,6 @@ Jifty->web->page_navigation->child( _('Bulk Update') => url  => "Search/Bulk.htm
 
 }
 
-# /Admin/Rules
-    my $tabs = {
-
-
-        $rules_admin->child(_('Select'), url  => "Admin/Rules/");
-        $rules_admin->child(_('Create'), url  => 'Admin/Rules/Modify.html?create=1');
-    };
-
-# /Admin/Users tabs
-
-# Admin/GlobalCustomFields
-
-my $tabs = {
-
-
-
-};
-
-# Admin/Groups
-
 
 # Prefs/
 my $tabs;
@@ -626,9 +621,6 @@ Jifty->web->navigation->child(  $search->[0]  =>
     };
 }
 
-
-# User/
-	     };
 =cut
 
 # Now let callbacks add their extra tabs

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


More information about the Rt-commit mailing list