%args>
$ChangeURL   => undef
$ResetURL    => undef
$SearchType  => 'Ticket'
$HiddenField => undef
%args>
<& /Elements/Header, Title => $title &>
% if ( $m->comp_exists( '/User/Elements/Tabs' ) ) {
<& /User/Elements/Tabs,
    current_tab => 'Prefs/Calendar.html',
    Title => $title
&>
% } else {
<& /Elements/Tabs &>
% }
<&| /Widgets/TitleBox, title => loc('ICal Feeds (ics)') &>
<&| /Widgets/TitleBox, title => 'Help' &>
displaying reminders :
If you want to have reminders in a search you need to go in the <%loc("Edit Query")%> tab
of the <%loc("query builder")%> and add something like that :
 
   AND ( Type = 'ticket' OR Type = 'reminder' )
displaying other kind of dates :
By default RTx::Calendar display Due and Starts dates. You can
select other kind of events you want with the <%loc("Display
Columns")%> section in the <%loc("Query
Builder")%>. The following one will display the two latter and
LastUpdated dates :
  '<small>__Due__</small>',
  '<small>__Starts__</small>',
  '<small>__LastUpdated__</small>'
changing the default query :
You can change the default Query of Calendar.html and MyCalendar
portlet by saving a query with the name calendar in the
<%loc("Query
Builder")%>.
&>
<& /Prefs/Elements/CalendarFeed &>
% # only allow this part if
% if ($AllowSearch) {
% my $search_count;
%   # I'm quite sure the loop isn't usefull but...
%   my @Objects = $session{CurrentUser}->UserObj;
%   for my $object (@Objects) {
%     next unless ref($object) eq 'RT::User' && $object->id == $session{'CurrentUser'}->Id;
%     my @searches = $object->Attributes->Named('SavedSearch');
%     for my $search (@searches) {
%       next if ($search->SubValue('SearchType')
%              && $search->SubValue('SearchType') ne $SearchType);
%       $search_count++;
<& /Prefs/Elements/CalendarFeed, Object => $object, Search => $search &>
%     }
%   }
%   unless ($search_count) {
<&| /Widgets/TitleBox, title => loc('Private Search ICal feeds')
                     , title_class=> 'inverse'
                     , color => "#993333" &>
You can add private ICal feeds by saving new queries in the Query Builder
&>
%   }
% } else {
%#<&| /Widgets/TitleBox, title => loc('Private Search ICal feeds')
%#                     , title_class=> 'inverse'
%#                     , color => "#993333" &>
%#
%#<%loc('Private search ICal feeds disabled. To enable them, ask your admin for "[_1]" and "[_2]" rights',
%#       loc('CreateSavedSearch'),
%#       loc('LoadSavedSearch') )%>
%#
%#&>
% }
&>
<%INIT>
use Digest::SHA;
use RT::SavedSearches;
my $title = loc("Calendar Prefs");
my $AllowSearch;
$AllowSearch = 1
 if $session{'CurrentUser'}->HasRight( Right => 'LoadSavedSearch',
                                       Object=> $RT::System );
my $object;
if ($HiddenField && $HiddenField eq 'Private') {
   $object = $session{CurrentUser}->UserObj;
} elsif ($AllowSearch and $HiddenField and my ($SearchId) = $HiddenField =~ m/SavedSearch\-(\d+)/) {
    $object = $session{CurrentUser}->Attributes->WithId($SearchId);
}
if (defined $ChangeURL) {
  my @args = $object->SetAttribute(Name => 'ICalURL', Content => Digest::SHA::sha1_base64(time));
} elsif (defined $ResetURL) {
  my @args = $object->DeleteAttribute('ICalURL');
}
%INIT>