3c3db8c128e08193b41ec0509ccabd2676e3c52d
[monitor.git] / rt3 / initialdata
1 # Initial data for a fresh RT3 Installation.
2
3 @Users = (
4     {  Name     => 'Nobody',
5        RealName => 'Nobody in particular',
6        Comments => 'Do not delete or modify this user. It is integral '
7          . 'to RT\'s internal data structures',
8        Privileged => '0', },
9
10     {  Name         => 'root',
11        Gecos        => 'root',
12        RealName     => 'RT Admin',
13        Password     => 'password',
14        EmailAddress => "root\@localhost",
15        Comments     => 'SuperUser',
16        Privileged   => '1', } );
17
18 @Groups = (
19     { Name        => '',
20       Type        => 'Everyone',                        # loc
21       Domain      => 'SystemInternal',
22       Instance    => '',
23       Description => 'Pseudogroup for internal use',    # loc
24     },
25     { Type        => 'Privileged',                      # loc
26       Domain      => 'SystemInternal',
27       Instance    => '',
28       Name        => '',
29       Description => 'Pseudogroup for internal use',    # loc
30     },
31     { Name        => '',
32       Type        => 'Unprivileged',                    # loc
33       Domain      => 'SystemInternal',
34       Instance    => '',
35       Description => 'Pseudogroup for internal use',    # loc
36     },
37     { Name        => '',
38       Type        => 'Owner',                               # loc
39       Domain      => 'RT::System-Role',
40       Instance    => '',
41       Description => 'SystemRolegroup for internal use',    # loc
42     },
43     { Name        => '',
44       Type        => 'Requestor',                           # loc
45       Domain      => 'RT::System-Role',
46       Instance    => '',
47       Description => 'SystemRolegroup for internal use',    # loc
48     },
49     { Name        => '',
50       Type        => 'Cc',                                  # loc
51       Domain      => 'RT::System-Role',
52       Instance    => '',
53       Description => 'SystemRolegroup for internal use',    # loc
54     },
55     { Name        => '',
56       Type        => 'AdminCc',                             # loc
57       Domain      => 'RT::System-Role',
58       Instance    => '',
59       Description => 'Pseudogroup for internal use',        # loc
60     }, );
61
62 @Queues = ({ Name              => 'support',
63              Description       => 'Support',
64              CorrespondAddress => 'support@PLC_RT_HOSTNAME',
65              CommentAddress    => '', },
66
67                    { Name              => 'monitor',
68              Description       => 'Queue for monitor',
69              CorrespondAddress => 'monitor@PLC_RT_HOSTNAME',
70              CommentAddress    => '', },
71
72                    { Name              => 'security',
73              Description       => 'Queue for security issues',
74              CorrespondAddress => 'security@PLC_RT_HOSTNAME',
75              CommentAddress    => '', },
76
77                    { Name              => 'legal',
78              Description       => 'Queue for legal issues',
79              CorrespondAddress => 'legal@PLC_RT_HOSTNAME',
80              CommentAddress    => '', },
81
82            { Name        => '___Approvals',
83              Description => 'A system-internal queue for the approvals system',
84              Disabled    => 2, } );
85
86 @ScripActions = (
87
88     {  Name        => 'Autoreply To Requestors',    # loc
89        Description =>
90 'Always sends a message to the requestors independent of message sender' ,                                            # loc
91        ExecModule => 'Autoreply',
92        Argument   => 'Requestor' },
93     { Name        => 'Notify Requestors',                    # loc
94       Description => 'Sends a message to the requestors',    # loc
95       ExecModule  => 'Notify',
96       Argument    => 'Requestor' },
97     { Name        => 'Notify Owner as Comment',              # loc
98       Description => 'Sends mail to the owner',              # loc
99       ExecModule  => 'NotifyAsComment',
100       Argument    => 'Owner' },
101     { Name        => 'Notify Owner',                         # loc
102       Description => 'Sends mail to the owner',              # loc
103       ExecModule  => 'Notify',
104       Argument    => 'Owner' },
105     { Name        => 'Notify Ccs as Comment',              # loc
106       Description => 'Sends mail to the Ccs as a comment', # loc
107       ExecModule  => 'NotifyAsComment',
108       Argument    => 'Cc' },
109     { Name        => 'Notify Ccs',                                   # loc
110       Description => 'Sends mail to the Ccs',                        # loc
111       ExecModule  => 'Notify',
112       Argument    => 'Cc' },
113     { Name        => 'Notify AdminCcs as Comment',                        # loc
114       Description => 'Sends mail to the administrative Ccs as a comment', # loc
115       ExecModule  => 'NotifyAsComment',
116       Argument    => 'AdminCc' },
117     { Name        => 'Notify AdminCcs',                                   # loc
118       Description => 'Sends mail to the administrative Ccs',              # loc
119       ExecModule  => 'Notify',
120       Argument    => 'AdminCc' },
121
122     { Name        => 'Notify Requestors and Ccs as Comment',              # loc
123       Description => 'Send mail to requestors and Ccs as a comment',      # loc
124       ExecModule  => 'NotifyAsComment',
125       Argument    => 'Requestor,Cc' },
126
127     { Name        => 'Notify Requestors and Ccs',                         # loc
128       Description => 'Send mail to requestors and Ccs',                   # loc
129       ExecModule  => 'Notify',
130       Argument    => 'Requestor,Cc' },
131
132     { Name        => 'Notify Requestors, Ccs and AdminCcs as Comment',    # loc
133       Description => 'Send mail to all watchers as a "comment"',          # loc
134       ExecModule  => 'NotifyAsComment',
135       Argument    => 'All' },
136     { Name        => 'Notify Requestors, Ccs and AdminCcs',               # loc
137       Description => 'Send mail to all watchers',                         # loc
138       ExecModule  => 'Notify',
139       Argument    => 'All' },
140     { Name        => 'Notify Other Recipients as Comment',                # loc
141       Description => 'Sends mail to explicitly listed Ccs and Bccs',      # loc
142       ExecModule  => 'NotifyAsComment',
143       Argument    => 'OtherRecipients' },
144     { Name        => 'Notify Other Recipients',                           # loc
145       Description => 'Sends mail to explicitly listed Ccs and Bccs',      # loc
146       ExecModule  => 'Notify',
147       Argument    => 'OtherRecipients' },
148     { Name        => 'User Defined',                                      # loc
149       Description => 'Perform a user-defined action',                     # loc
150       ExecModule  => 'UserDefined', },
151     {  Name        => 'Create Tickets',                                    # loc
152        Description =>
153          'Create new tickets based on this scrip\'s template',             # loc
154        ExecModule => 'CreateTickets', },
155     { Name        => 'Open Tickets',
156       Description => 'Open tickets on correspondence',                    # loc
157       ExecModule  => 'AutoOpen' },
158 );
159
160 @ScripConditions = (
161     { Name                 => 'On Create',                                # loc
162       Description          => 'When a ticket is created',                 # loc
163       ApplicableTransTypes => 'Create',
164       ExecModule           => 'AnyTransaction', },
165
166     { Name                 => 'On Transaction',                           # loc
167       Description          => 'When anything happens',                    # loc
168       ApplicableTransTypes => 'Any',
169       ExecModule           => 'AnyTransaction', },
170     {
171
172       Name                 => 'On Correspond',                             # loc
173       Description          => 'Whenever correspondence comes in',          # loc
174       ApplicableTransTypes => 'Correspond',
175       ExecModule           => 'AnyTransaction', },
176
177     {
178
179       Name                 => 'On Comment',                                # loc
180       Description          => 'Whenever comments come in',                 # loc
181       ApplicableTransTypes => 'Comment',
182       ExecModule           => 'AnyTransaction' },
183     {
184
185       Name                 => 'On Status Change',                          # loc
186       Description          => 'Whenever a ticket\'s status changes',       # loc
187       ApplicableTransTypes => 'Status',
188       ExecModule           => 'AnyTransaction',
189
190     },
191     {
192
193       Name                 => 'On Priority Change',                       # loc
194       Description          => 'Whenever a ticket\'s priority changes',    # loc
195       ApplicableTransTypes => 'Set',
196       ExecModule           => 'PriorityChange',
197     },
198     {
199
200       Name                 => 'On Owner Change',                           # loc
201       Description          => 'Whenever a ticket\'s owner changes',        # loc
202       ApplicableTransTypes => 'Any',
203       ExecModule           => 'OwnerChange',
204
205     },
206     {
207
208       Name                 => 'On Queue Change',                           # loc
209       Description          => 'Whenever a ticket\'s queue changes',        # loc
210       ApplicableTransTypes => 'Set',
211       ExecModule           => 'QueueChange',
212
213     },
214     {  Name                 => 'On Resolve',                               # loc
215        Description          => 'Whenever a ticket is resolved',            # loc
216        ApplicableTransTypes => 'Status',
217        ExecModule           => 'StatusChange',
218        Argument             => 'resolved'
219
220     },
221
222     {  Name                 => 'User Defined',                             # loc
223        Description          => 'Whenever a user-defined condition occurs', # loc
224        ApplicableTransTypes => 'Any',
225        ExecModule           => 'UserDefined'
226
227     },
228
229 );
230
231 @Templates = (
232     { Queue       => '0',
233       Name        => 'Blank',                                             # loc
234       Description => 'A blank template',                                  # loc
235       Content     => '', },
236
237     {  Queue       => '0',
238        Name        => 'Transaction',                     # loc
239        Description => 'Default transaction template',    # loc
240        Content     => 'RT-Attach-Message: yes
241
242
243 {$Transaction->CreatedAsString}: Request {$Ticket->id} was acted upon.
244 Transaction: {$Transaction->Description}
245        Queue: {$Ticket->QueueObj->Name}
246      Subject: {$Transaction->Subject || $Ticket->Subject || "(No subject given)"}
247        Owner: {$Ticket->OwnerObj->Name}
248   Requestors: {$Ticket->RequestorAddresses}
249       Status: {$Ticket->Status}
250  Ticket <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >
251
252
253 {$Transaction->Content()}
254 '
255     },
256
257     {
258
259       Queue       => '0',
260       Name        => 'Admin Correspondence',                     # loc
261       Description => 'Default admin correspondence template',    # loc
262       Content     => 'RT-Attach-Message: yes
263
264
265 <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >
266
267 {$Transaction->Content()}
268 '
269     },
270
271     {  Queue       => '0',
272        Name        => 'Correspondence',                          # loc
273        Description => 'Default correspondence template',         # loc
274        Content     => 'RT-Attach-Message: yes
275
276 {$Transaction->Content()}
277 '
278     },
279
280     {  Queue       => '0',
281        Name        => 'Admin Comment',                           # loc
282        Description => 'Default admin comment template',          # loc
283        Content     =>
284 'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject); $s =~ s/\\[Comment\\]//g; $comment =~ s/^Re//i; $s;}
285
286
287 {$RT::WebURL}Ticket/Display.html?id={$Ticket->id}
288 This is a comment.  It is not sent to the Requestor(s):
289
290 {$Transaction->Content()}
291 '
292     },
293
294     {  Queue       => '0',
295        Name        => 'Status Change',                                     # loc
296        Description => 'Ticket status changed',                             # loc
297        Content     => 'Subject: Status Changed to: {$Transaction->NewValue}
298
299
300 {$RT::WebURL}Ticket/Display.html?id={$Ticket->id}
301
302 {$Transaction->Content()}
303 '
304     },
305
306     {
307
308       Queue       => '0',
309       Name        => 'Resolved',                 # loc
310       Description => 'Ticket Resolved',          # loc
311       Content     => 'Subject: Resolved: {$Ticket->Subject}
312
313 According to our records, your request has been resolved. If you have any
314 further questions or concerns, please respond to this message.
315 '
316     },
317         {
318       Queue       => '0',
319       Name        => 'correspondance with CC',                 # loc
320       Description => 'Message with the recipients in the header',          # loc
321       Content     => 'RT-Attach-Message: yes
322
323 Email Recipients (see http://PLC_RT_HOSTNAME/rt3/Ticket/Display.html?id={$Ticket->id} )
324     Owner: {$Ticket->OwnerObj->Name}
325     Requestor: {$Ticket->RequestorAddresses}
326 { if ($acc=$Ticket->AdminCcAddresses) { "    Ticket Ccs: " . $acc } }
327 ==================================================
328
329 {$Transaction->Content()}
330 '
331         },
332         {
333       Queue       => '0',
334       Name        => 'Create with CC in body',                 # loc
335       Description => 'Create with CC in body',                 # loc
336       Content     => 'RT-Attach-Message: yes
337
338 Email Recipients (see http://PLC_RT_HOSTNAME/rt3/Ticket/Display.html?id={$Ticket->id} )
339     Owner: {$Ticket->OwnerObj->Name}
340     Requestor: {$Ticket->RequestorAddresses}
341 { if ($acc=$Ticket->AdminCcAddresses) { "    Ticket Ccs: " . $acc } }
342 ==================================================
343
344 {$Transaction->CreatedAsString}: Request {$Ticket->id} was acted upon.
345 Transaction: {$Transaction->Description}
346
347 Subject: {$Transaction->Subject || $Ticket->Subject || "(No subject given)"}
348
349 {$Transaction->Content()}
350 '
351         },
352     {  Queue       => '___Approvals',
353        Name        => "New Pending Approval",    # loc
354        Description =>
355          "Notify Owners and AdminCcs of new items pending their approval", # loc
356        Content => 'Subject: New Pending Approval: {$Ticket->Subject}
357
358 Greetings,
359
360 There is a new item pending your approval: "{$Ticket->Subject()}", 
361 a summary of which appears below.
362
363 Please visit {$RT::WebURL}Approvals/Display.html?id={$Ticket->id}
364 to approve or reject this ticket, or {$RT::WebURL}Approvals/ to
365 batch-process all your pending approvals.
366
367 -------------------------------------------------------------------------
368 {$Transaction->Content()}
369 '
370     },
371     {  Queue       => '___Approvals',
372        Name        => "Approval Passed",    # loc
373        Description =>
374          "Notify Owner of their ticket has been approved by some approver", # loc
375        Content => 'Subject: Ticket Approved: {$Ticket->Subject}
376
377 Greetings,
378
379 Your ticket has been approved by { eval { $Approval->OwnerObj->Name } }.
380 Other approvals may be pending.
381 '
382     },
383     {  Queue       => '___Approvals',
384        Name        => "All Approvals Passed",    # loc
385        Description =>
386          "Notify Owner of their ticket has been approved by all approvers", # loc
387        Content => 'Subject: Ticket Approved: {$Ticket->Subject}
388
389 Greetings,
390
391 Your ticket has been approved.  Its Owner may now start to act on it.
392 '
393     },
394     {  Queue       => '___Approvals',
395        Name        => "Approval Rejected",    # loc
396        Description =>
397          "Notify Owner of their rejected ticket", # loc
398        Content => 'Subject: Ticket Rejected: {$Ticket->Subject}
399
400 Greetings,
401
402 Your ticket has been rejected by { eval { $Approval->OwnerObj->Name } }.
403 '
404     },
405 );
406 # }}}
407
408 @Scrips = (
409     {  ScripCondition => 'On Correspond',
410        ScripAction    => 'Open Tickets',
411        Template       => 'Blank' },
412     {  ScripCondition => 'On Owner Change',
413        ScripAction    => 'Notify Owner',
414        Template       => 'Transaction' },
415     {  ScripCondition => 'On Create',
416        ScripAction    => 'AutoReply To Requestors',
417        Template       => 'AutoReply' },
418     {  ScripCondition => 'On Create',
419        ScripAction    => 'Notify AdminCcs',
420        Template       => 'Transaction' },
421     {  ScripCondition => 'On Correspond',
422        ScripAction    => 'Notify AdminCcs',
423        Template       => 'Admin Correspondence' },
424     {  ScripCondition => 'On Correspond',
425        ScripAction    => 'Notify Requestors And Ccs',
426        Template       => 'Correspondence' },
427     {  ScripCondition => 'On Correspond',
428        ScripAction    => 'Notify Other Recipients',
429        Template       => 'Correspondence' },
430     {  ScripCondition => 'On Comment',
431        ScripAction    => 'Notify AdminCcs As Comment',
432        Template       => 'Admin Comment' },
433     {  ScripCondition => 'On Comment',
434        ScripAction    => 'Notify Other Recipients As Comment',
435        Template       => 'Correspondence' },
436     {  ScripCondition => 'On Resolve',
437        ScripAction    => 'Notify Requestors',
438        Template       => 'Resolved' },
439
440     {  ScripCondition => 'On Create',
441        ScripAction    => 'Notify AdminCcs',
442        Template       => 'Create with CC in body', },
443     {  ScripCondition => 'On Correspond',
444        ScripAction    => 'Notify Requestors, Ccs and AdminCcs',
445        Template       => 'correspondance with CC', },
446     {  Description => "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval",    # loc
447        Queue          => '___Approvals',
448        ScripCondition => 'User Defined',
449        CustomIsApplicableCode => q[
450             $self->TicketObj->Type eq 'approval'        and
451             $self->TransactionObj->Field eq 'Status'    and
452             $self->TransactionObj->NewValue eq 'open'   and
453             eval { $T::Approving = ($self->TicketObj->AllDependedOnBy( Type => 'ticket' ))[0] }
454        ],
455        ScripAction    => 'Notify Owner',
456        Template       => 'New Pending Approval' },
457     {  Description => "If an approval is rejected, reject the original and delete pending approvals",    # loc
458        Queue            => '___Approvals',
459        ScripCondition   => 'On Status Change',
460        ScripAction      => 'User Defined',
461        CustomPrepareCode => q[
462 # ------------------------------------------------------------------- #
463 return(0) unless ( lc($self->TransactionObj->NewValue) eq "rejected" or
464                    lc($self->TransactionObj->NewValue) eq "deleted" );
465
466 my $rejected = 0;
467 my $links = $self->TicketObj->DependedOnBy;
468 foreach my $link (@{ $links->ItemsArrayRef }) {
469     my $obj = $link->BaseObj;
470     if ($obj->QueueObj->IsActiveStatus($obj->Status)) {
471         if ($obj->Type eq 'ticket') {
472             $obj->Comment(
473                 Content => $self->loc("Your request was rejected."),
474             );
475             $obj->SetStatus(
476                 Status  => 'rejected',
477                 Force   => 1,
478             );
479
480             $T::Approval = $self->TicketObj; # so we can access it inside templates
481             $self->{TicketObj} = $obj;  # we want the original id in the token line
482             $rejected = 1;
483         }
484         else {
485             $obj->SetStatus(
486                 Status  => 'deleted',
487                 Force   => 1,
488             );
489         }
490     }
491 }
492
493 $links = $self->TicketObj->DependsOn;
494 foreach my $link (@{ $links->ItemsArrayRef }) {
495     my $obj = $link->TargetObj;
496     if ($obj->QueueObj->IsActiveStatus($obj->Status)) {
497         $obj->SetStatus(
498             Status      => 'deleted',
499             Force       => 1,
500         );
501     }
502 }
503
504 # Now magically turn myself into a Requestor Notify object...
505 require RT::Action::Notify; bless($self, 'RT::Action::Notify');
506 $self->{Argument} = 'Requestor'; $self->Prepare;
507
508 return $rejected;
509 # ------------------------------------------------------------------- #
510         ],
511        CustomCommitCode => '"never needed"',
512        Template          => 'Approval Rejected', },
513     {  Description => "When a ticket has been approved by any approver, add correspondence to the original ticket", # loc
514        Queue             => '___Approvals',
515        ScripCondition    => 'On Resolve',
516        ScripAction       => 'User Defined',
517        CustomPrepareCode => q[
518 # ------------------------------------------------------------------- #
519 return(0) unless ($self->TicketObj->Type eq 'approval');
520
521 my $note;
522 my $t = $self->TicketObj->Transactions;
523 while (my $o = $t->Next) {
524     $note .= $o->Content . "\n" if $o->ContentObj
525             and $o->Content !~ /Default Approval/;
526 }
527
528 foreach my $obj ($self->TicketObj->AllDependedOnBy( Type => 'ticket' )) {
529     $obj->Comment(
530         Content => $self->loc( "Your request has been approved by [_1]. Other approvals may still be pending.", # loc
531             $self->TransactionObj->CreatorObj->Name,
532         ) . "\n" . $self->loc( "Approver's notes: [_1]", # loc
533             $note
534         ),
535     );
536     $T::Approval = $self->TicketObj; # so we can access it inside templates
537     $self->{TicketObj} = $obj;  # we want the original id in the token line
538 }
539
540 # Now magically turn myself into a Requestor Notify object...
541 require RT::Action::Notify; bless($self, 'RT::Action::Notify');
542 $self->{Argument} = 'Requestor'; $self->Prepare;
543
544 return 1;
545 # ------------------------------------------------------------------- #
546         ],
547        CustomCommitCode => '"never needed"',
548        Template => 'Approval Passed' },
549     {  Description => "When a ticket has been approved by all approvers, add correspondence to the original ticket", # loc
550        Queue             => '___Approvals',
551        ScripCondition    => 'On Resolve',
552        ScripAction       => 'User Defined',
553        CustomPrepareCode  => q[
554 # ------------------------------------------------------------------- #
555 # Find all the tickets that depend on this (that this is approving)
556
557 my $Ticket = $self->TicketObj;
558 my @TOP    = $Ticket->AllDependedOnBy( Type => 'ticket' );
559 my $links  = $Ticket->DependedOnBy;
560 my $passed = 0;
561
562 while (my $link = $links->Next) {
563     my $obj = $link->BaseObj;
564     next if ($obj->HasUnresolvedDependencies( Type => 'approval' ));
565
566     if ($obj->Type eq 'ticket') {
567         $obj->Comment(
568             Content     => $self->loc("Your request has been approved."),
569         );
570         $T::Approval  = $Ticket;    # so we can access it inside templates
571         $self->{TicketObj} = $obj;  # we want the original id in the token line
572         $passed = 1;
573     }
574     elsif ($obj->Type eq 'approval') {
575         $obj->SetStatus( Status => 'open', Force => 1 );
576     }
577     elsif ($RT::UseCodeTickets and $obj->Type eq 'code') {
578         my $code = $obj->Transactions->First->Content;
579         my $rv;
580
581         foreach my $TOP (@TOP) {
582             local $@;
583             $rv++ if eval $code;
584             $RT::Logger->error("Cannot eval code: $@") if $@;
585         }
586
587         if ($rv or !@TOP) {
588             $obj->SetStatus( Status     => 'resolved', Force    => 1,);
589         }
590         else {
591             $obj->SetStatus( Status     => 'rejected', Force    => 1,);
592         }
593     }
594 }
595
596 # Now magically turn myself into a Requestor Notify object...
597 require RT::Action::Notify; bless($self, 'RT::Action::Notify');
598 $self->{Argument} = 'Requestor'; $self->Prepare;
599
600 return 0; # ignore $passed;
601 # ------------------------------------------------------------------- #
602         ],
603        CustomCommitCode => '"never needed"',
604        Template => 'All Approvals Passed', },
605
606 );
607
608 @ACL = (
609     { UserId => 'Nobody',      # - principalId
610       Right  => 'OwnTicket', },
611
612     { UserId => 'root',        # - principalid
613       Right  => 'SuperUser', },
614         
615
616 );
617
618 # Predefined searches
619
620 @Attributes = (
621     { Name => 'Search - My Tickets',
622       Description => '[_1] highest priority tickets I own', # loc
623       Content     =>
624       { Format => "'<a href=\"__WebPath__/Ticket/Display.html?id=__id__\">__id__</a>/TITLE:#', '<a href=\"__WebPath__/Ticket/Display.html?id=__id__\">__Subject__</a>/TITLE:Subject', Priority, QueueName, ExtendedStatus",
625         Query   => " Owner = '__CurrentUser__' AND ( Status = 'new' OR Status = 'open')",
626         OrderBy => 'Priority',
627         Order   => 'DESC' },
628     },
629     { Name => 'Search - Unowned Tickets',
630       Description => '[_1] newest unowned tickets', # loc
631       Content     =>
632 # 'Take' #loc
633       { Format => "'<a href=\"__WebPath__/Ticket/Display.html?id=__id__\">__id__</a>/TITLE:#', '<a href=\"__WebPath__/Ticket/Display.html?id=__id__\">__Subject__</a>/TITLE:Subject', QueueName, ExtendedStatus, CreatedRelative, '<A HREF=\"__WebPath__/Ticket/Display.html?Action=Take&id=__id__\">__loc(Take)__</a>/TITLE:&nbsp;' ",
634         Query   => " Owner = 'Nobody' AND ( Status = 'new' OR Status = 'open')",
635         OrderBy => 'Created',
636         Order   => 'DESC' },
637     },
638     { Name => 'HomepageSettings',
639       Description => 'HomepageSettings',
640       Content =>
641       { 'body' => # loc
642         [ { type => 'system', name => 'My Tickets' },
643           { type => 'system', name => 'Unowned Tickets' },
644           { type => 'component',  name => 'QuickCreate'},
645         ],
646         'summary' => # loc
647         [ 
648           { type => 'component', name => 'MyReminders' },
649           { type => 'component', name => 'Quicksearch' },
650           { type => 'component', name => 'RefreshHomepage' },
651         ]
652     },
653 }
654 );