summaryrefslogtreecommitdiff
path: root/rt/share/html
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/html')
-rwxr-xr-xrt/share/html/Admin/Users/Modify.html2
-rwxr-xr-xrt/share/html/Approvals/index.html9
-rw-r--r--rt/share/html/Elements/CalendarSlotSchedule.dynamic93
-rw-r--r--rt/share/html/Elements/EditCustomFieldDate3
-rw-r--r--rt/share/html/Elements/EditCustomFieldDateTime3
-rwxr-xr-xrt/share/html/Elements/Error6
-rw-r--r--rt/share/html/NoAuth/css/aileron/ticket.css16
-rw-r--r--rt/share/html/NoAuth/css/base/ticket.css3
-rw-r--r--rt/share/html/NoAuth/iCal/dhandler5
-rw-r--r--rt/share/html/NoAuth/images/week-collapse.xcfbin0 -> 1996 bytes
-rw-r--r--rt/share/html/NoAuth/images/week-expand.xcfbin0 -> 1621 bytes
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/comment5
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/default9
-rwxr-xr-xrt/share/html/REST/1.0/ticket/comment6
-rw-r--r--rt/share/html/Search/Elements/ResultsRSSView6
-rw-r--r--rt/share/html/Search/Results.tsv4
-rwxr-xr-xrt/share/html/Ticket/Create.html4
-rw-r--r--rt/share/html/Ticket/Elements/EditTransactionCustomFields3
-rwxr-xr-xrt/share/html/Ticket/Elements/PreviewScrips2
-rw-r--r--rt/share/html/Ticket/Elements/ShowUpdateStatus2
-rw-r--r--rt/share/html/Ticket/Graphs/Elements/ShowGraph2
-rwxr-xr-xrt/share/html/Ticket/ModifyAll.html2
-rwxr-xr-xrt/share/html/Ticket/Update.html2
-rw-r--r--rt/share/html/Tools/Offline.html1
-rwxr-xr-xrt/share/html/Widgets/TitleBoxStart2
25 files changed, 134 insertions, 56 deletions
diff --git a/rt/share/html/Admin/Users/Modify.html b/rt/share/html/Admin/Users/Modify.html
index 814e7f996..2483e5b7f 100755
--- a/rt/share/html/Admin/Users/Modify.html
+++ b/rt/share/html/Admin/Users/Modify.html
@@ -109,7 +109,7 @@
<&| /Widgets/TitleBox, title => loc('Access control') &>
<input type="hidden" class="hidden" name="SetEnabled" value="1" />
-<input type="checkbox" class="checkbox" name="Enabled" value="1" <%$EnabledChecked%> />
+<input type="checkbox" class="checkbox" name="Enabled" value="1" <%$EnabledChecked||''%> />
<&|/l&>Let this user access RT</&><br />
diff --git a/rt/share/html/Approvals/index.html b/rt/share/html/Approvals/index.html
index 97f360ac0..dbdc11ec5 100755
--- a/rt/share/html/Approvals/index.html
+++ b/rt/share/html/Approvals/index.html
@@ -72,12 +72,9 @@ foreach my $arg ( keys %ARGS ) {
next if $skip_update;
if ( $ARGS{ "Approval-" . $ticket->Id . "-Notes" } ) {
- my $notes = MIME::Entity->build(
- Data => [ $ARGS{ "Approval-" . $ticket->Id . "-Notes" } ]
- );
- RT::I18N::SetMIMEEntityToUTF8($notes); # convert text parts into utf-8
-
- my ( $notesval, $notesmsg ) = $ticket->Correspond( MIMEObj => $notes );
+ my ( $notesval, $notesmsg ) = $ticket->Correspond(
+ Content => $ARGS{ "Approval-" . $ticket->Id . "-Notes" }
+ );
if ($notesval) {
push ( @actions, loc("Approval #[_1]: Notes recorded",$ticket->Id ));
} else {
diff --git a/rt/share/html/Elements/CalendarSlotSchedule.dynamic b/rt/share/html/Elements/CalendarSlotSchedule.dynamic
new file mode 100644
index 000000000..88202d417
--- /dev/null
+++ b/rt/share/html/Elements/CalendarSlotSchedule.dynamic
@@ -0,0 +1,93 @@
+<%ARGS>
+ $Date => undef,
+ @Tickets => ()
+ $slots => $default_slots,
+ $sday => undef,
+ $tod_row => undef,
+ $timestep => $default_timestep,
+ @username => ()
+</%ARGS>
+<%SHARED>
+my @slots = ( [], [], [], [], [], [], [] );
+</%SHARED>
+% #for my $t ( @{ $Tickets{$date->strftime("%F")} } ) {
+% for my $t (@Tickets) {
+%
+% my($sm, $sh) = ($t->StartsObj->Localtime('user'))[1,2];
+% my $starts = $sh*60 + $sm;
+%
+% if ( RTx::Calendar::LocalDate($t->StartsObj->Unix) eq $Date->strftime('%F') #today
+% && $starts >= $tod_row && $starts < ($tod_row + $timestep) ) {
+% #then we're a new entry, find a slot for us
+% my $s = 0;
+% while ( ref($slots[$sday]->[$s]) ) { $s++ }
+% $slots[$sday]->[$s] = [ $t->Id, $t ];
+% }
+%
+% my($dm, $dh) = ($t->DueObj->Localtime('user'))[1,2];
+% my $due = $dh*60 + $dm;
+%
+% if ( RTx::Calendar::LocalDate($t->DueObj->Unix) eq $Date->strftime('%F') #today
+% && $due <= $tod_row && $due > ($tod_row + $timestep ) ) {
+% #then find our slot and remove us
+% @{ $slots[$sday] } =
+% map { (!ref($_) || $_->[0] != $t->Id) ? $_ : '' }
+% @{ $slots[$sday] };
+% }
+%
+% }
+%
+% pop @{ $slots[$sday] } while @{ $slots[$sday] } && !ref($slots[$sday]->[-1]);
+%
+% #now display:
+%
+% if ( scalar(@{$slots[$sday]}) > $slots ) {
+% #overflow situation, eek... could be handled better, how?
+
+ <td colspan=<%$slots%>
+ class="weekly
+%# <% $is_today ? 'today'
+%# : $is_yesterday ? 'yesterday'
+%# : $is_aweekago ? 'aweekago'
+%# : ''
+%# %>
+ "
+ >MULTIPLE
+ </td>
+
+% } else {
+%
+% foreach my $slot ( @{ $slots[$sday] } ) {
+% my( $id, $ticket ) = @$slot;
+
+ <td class="weekly
+%# <% $is_today ? 'today'
+%# : $is_yesterday ? 'yesterday'
+%# : $is_aweekago ? 'aweekago'
+%# : ''
+%# %>
+ "
+ ><% $id %>
+ </td>
+
+% }
+%
+% if ( scalar(@{$slots[$sday]}) < $slots ) {
+
+ <td colspan=<% $slots - scalar(@{$slots[$sday]}) %>
+ class="weekly
+%# <% $is_today ? 'today'
+%# : $is_yesterday ? 'yesterday'
+%# : $is_aweekago ? 'aweekago'
+%# : ''
+%# %>
+ "
+ >
+ </td>
+% }
+%
+% }
+<%ONCE>
+my $default_slots = RT->Config->Get('CalendarWeeklySlots') || 5;
+my $default_timestep = RT->Config->Get('CalendarWeeklySizeMin') || 30; #1/2h
+</%ONCE>
diff --git a/rt/share/html/Elements/EditCustomFieldDate b/rt/share/html/Elements/EditCustomFieldDate
index f62f04704..c430b0b33 100644
--- a/rt/share/html/Elements/EditCustomFieldDate
+++ b/rt/share/html/Elements/EditCustomFieldDate
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
% my $name = $NamePrefix.$CustomField->Id.'-Values';
-<& /Elements/SelectDate, Name => "$name", current => 0, ShowTime => 0 &> (<%$DateObj->AsString(Time => 0, Timezone => 'utc')%>)
+<& /Elements/SelectDate, Name => "$name", current => 0, ShowTime => 0, $KeepValue && $Default ? (Default => $Default) : () &> (<%$DateObj->AsString(Time => 0, Timezone => 'utc')%>)
<%INIT>
my $DateObj = RT::Date->new ( $session{'CurrentUser'} );
@@ -59,4 +59,5 @@ $NamePrefix => undef
$Default => undef
$Values => undef
$MaxValues => 1
+$KeepValue => undef
</%ARGS>
diff --git a/rt/share/html/Elements/EditCustomFieldDateTime b/rt/share/html/Elements/EditCustomFieldDateTime
index edf125e80..b50ea431a 100644
--- a/rt/share/html/Elements/EditCustomFieldDateTime
+++ b/rt/share/html/Elements/EditCustomFieldDateTime
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
% my $name = $NamePrefix.$CustomField->Id.'-Values';
-<& /Elements/SelectDate, Name => "$name", current => 0 &> (<%$DateObj->AsString%>)
+<& /Elements/SelectDate, Name => "$name", current => 0, $KeepValue && $Default ? (Default => $Default) : () &> (<%$DateObj->AsString($KeepValue ? ( Timezone => 'utc' ) : () )%>)
<%INIT>
my $DateObj = RT::Date->new ( $session{'CurrentUser'} );
@@ -60,4 +60,5 @@ $Default => undef
$Values => undef
$MaxValues => 1
$Format => 'ISO'
+$KeepValue => undef
</%ARGS>
diff --git a/rt/share/html/Elements/Error b/rt/share/html/Elements/Error
index b2042610e..d747c4e5b 100755
--- a/rt/share/html/Elements/Error
+++ b/rt/share/html/Elements/Error
@@ -78,11 +78,7 @@ $SuppressHeader => 0,
my $error = "WebRT: $Why";
$error .= " ($Details)" if defined $Details && length $Details;
-# TODO: Log::Dispatch isn't UTF-8 safe. Autrijus needs to talk to dave rolsky about getting this fixed
-use Encode ();
-Encode::_utf8_off($error);
-
-$RT::Logger->error($error);
+$RT::Logger->error( $error );
if ( $session{'REST'} ) {
$r->content_type('text/plain');
diff --git a/rt/share/html/NoAuth/css/aileron/ticket.css b/rt/share/html/NoAuth/css/aileron/ticket.css
index 0d60f6ada..bc6315001 100644
--- a/rt/share/html/NoAuth/css/aileron/ticket.css
+++ b/rt/share/html/NoAuth/css/aileron/ticket.css
@@ -223,22 +223,6 @@ div#ticket-history .messagebody .messagebody{
.ticket-summary .titlebox-title .left a, .ticket-summary .titlebox-title .left a:visited { color: #fff;}
-.unread-messages .titlebox , .unread-messages .titlebox-title .left {
- border: 1px solid #99a;
- border-right: 2px solid #aab;
- border-bottom: 2px solid #aab;
-
-}
-
-
-.unread-messages .titlebox {
- background-color: #dde;
-}
-
-.unread-messages .titlebox-title .left {
- background-color: #cce;
-}
-
.ticket-inactive {
text-decoration: line-through;
color: #666
diff --git a/rt/share/html/NoAuth/css/base/ticket.css b/rt/share/html/NoAuth/css/base/ticket.css
index 6a43a1db1..d30b04645 100644
--- a/rt/share/html/NoAuth/css/base/ticket.css
+++ b/rt/share/html/NoAuth/css/base/ticket.css
@@ -143,4 +143,7 @@
display: none;
}
+.unread-messages .titlebox-content :link {
+ text-decoration: underline;
+}
diff --git a/rt/share/html/NoAuth/iCal/dhandler b/rt/share/html/NoAuth/iCal/dhandler
index 35da94080..46c272921 100644
--- a/rt/share/html/NoAuth/iCal/dhandler
+++ b/rt/share/html/NoAuth/iCal/dhandler
@@ -48,7 +48,6 @@
<%init>
use Data::ICal;
use Data::ICal::Entry::Event;
-use Encode ();
my $path = $m->dhandler_arg;
@@ -62,8 +61,8 @@ $notfound->() unless $path =~ m!^([^/]+)/([^/]+)/(.*)(\.(ical|ics))?!;
my ($name, $auth, $search) = ($1, $2, $3);
# Unescape parts
$_ =~ s/\%([0-9a-z]{2})/chr(hex($1))/gei for $name, $search;
-# convert to perl strings
-$_ = Encode::decode_utf8( $_ ) for $name, $search;
+# Decode from bytes to characters
+$_ = Encode::decode( "UTF-8", $_ ) for $name, $search;
my $user = RT::User->new( RT->SystemUser );
$user->Load( $name );
diff --git a/rt/share/html/NoAuth/images/week-collapse.xcf b/rt/share/html/NoAuth/images/week-collapse.xcf
new file mode 100644
index 000000000..cbb2b95eb
--- /dev/null
+++ b/rt/share/html/NoAuth/images/week-collapse.xcf
Binary files differ
diff --git a/rt/share/html/NoAuth/images/week-expand.xcf b/rt/share/html/NoAuth/images/week-expand.xcf
new file mode 100644
index 000000000..1ab8e65c8
--- /dev/null
+++ b/rt/share/html/NoAuth/images/week-expand.xcf
Binary files differ
diff --git a/rt/share/html/REST/1.0/Forms/ticket/comment b/rt/share/html/REST/1.0/Forms/ticket/comment
index 934cbfb68..41320ba4c 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/comment
+++ b/rt/share/html/REST/1.0/Forms/ticket/comment
@@ -91,8 +91,9 @@ my $ent = MIME::Entity->build(
'X-RT-Interface' => 'REST',
);
$ent->attach(
- 'Content-Type' => $changes{'Content-Type'} || 'text/plain',
- Data => $changes{Text},
+ Type => $changes{'Content-Type'} || 'text/plain',
+ Charset => "UTF-8",
+ Data => Encode::encode("UTF-8", $changes{Text} ),
) if $changes{Text};
diff --git a/rt/share/html/REST/1.0/Forms/ticket/default b/rt/share/html/REST/1.0/Forms/ticket/default
index 2a0c7efa4..33a8935d6 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/default
+++ b/rt/share/html/REST/1.0/Forms/ticket/default
@@ -191,13 +191,14 @@ else {
$v{MIMEObj} =
MIME::Entity->build(
Type => "multipart/mixed",
- From => $session{CurrentUser}->EmailAddress,
- Subject => $v{Subject},
+ From => Encode::encode( "UTF-8", $session{CurrentUser}->EmailAddress ),
+ Subject => Encode::encode( "UTF-8", $v{Subject}),
'X-RT-Interface' => 'REST',
);
$v{MIMEObj}->attach(
- Data => $text,
- 'Content-Type' => $v{'Content-Type'} || 'text/plain',
+ Type => $v{'Content-Type'} || 'text/plain',
+ Charset => "UTF-8",
+ Data => Encode::encode( "UTF-8", $text ),
) if $text;
my ($status, $msg) = process_attachments($v{'MIMEObj'}, @atts);
unless ($status) {
diff --git a/rt/share/html/REST/1.0/ticket/comment b/rt/share/html/REST/1.0/ticket/comment
index 4c058b6ab..177690d6a 100755
--- a/rt/share/html/REST/1.0/ticket/comment
+++ b/rt/share/html/REST/1.0/ticket/comment
@@ -108,7 +108,11 @@ my $ent = MIME::Entity->build(
Type => "multipart/mixed",
'X-RT-Interface' => 'REST',
);
-$ent->attach(Data => $k->{Text}) if $k->{Text};
+$ent->attach(
+ Type => "text/plain",
+ Charset => "UTF-8",
+ Data => Encode::encode( "UTF-8", $k->{Text} ),
+) if $k->{Text};
{
my ($res, $msg) = process_attachments($ent, @atts);
diff --git a/rt/share/html/Search/Elements/ResultsRSSView b/rt/share/html/Search/Elements/ResultsRSSView
index d08771124..a453a8603 100644
--- a/rt/share/html/Search/Elements/ResultsRSSView
+++ b/rt/share/html/Search/Elements/ResultsRSSView
@@ -46,8 +46,6 @@
%#
%# END BPS TAGGED BLOCK }}}
<%INIT>
-use Encode ();
-
my $old_current_user;
if ( $m->request_comp->path =~ RT->Config->Get('WebNoAuthRegex') ) {
@@ -67,8 +65,8 @@ if ( $m->request_comp->path =~ RT->Config->Get('WebNoAuthRegex') ) {
# Unescape parts
$name =~ s/\%([0-9a-z]{2})/chr(hex($1))/gei;
- # convert to perl strings
- $name = Encode::decode_utf8($name);
+ # Decode from bytes to characters
+ $name = Encode::decode( "UTF-8", $name );
my $user = RT::User->new(RT->SystemUser);
$user->Load($name);
diff --git a/rt/share/html/Search/Results.tsv b/rt/share/html/Search/Results.tsv
index 6d8253e78..376db0ed4 100644
--- a/rt/share/html/Search/Results.tsv
+++ b/rt/share/html/Search/Results.tsv
@@ -71,7 +71,7 @@ my $col_entry = sub {
delete $col->{title}
if $col->{title} and $col->{title} =~ /^\s*#\s*$/;
return {
- header => Encode::encode_utf8(loc($col->{title} || $col->{attribute})),
+ header => loc($col->{title} || $col->{attribute}),
map => $m->comp(
"/Elements/ColumnMap",
Name => $col->{attribute},
@@ -128,7 +128,7 @@ while (my $row = $Tickets->Next) {
# remove tabs from all field values, they screw up the tsv
$val = '' unless defined $val;
$val =~ s/(?:\n|\r)//g; $val =~ s{\t}{ }g;
- Encode::encode_utf8($val);
+ $val;
} @$col)."\n");
}
}
diff --git a/rt/share/html/Ticket/Create.html b/rt/share/html/Ticket/Create.html
index 697db546b..bd60b5c98 100755
--- a/rt/share/html/Ticket/Create.html
+++ b/rt/share/html/Ticket/Create.html
@@ -105,8 +105,8 @@
% $m->callback( CallbackName => 'AfterOwner', ARGSRef => \%ARGS );
- <& /Ticket/Elements/EditCustomFields, %ARGS, QueueObj => $QueueObj, InTable => 1 &>
- <& /Ticket/Elements/EditTransactionCustomFields, %ARGS, QueueObj => $QueueObj, InTable => 1 &>
+ <& /Ticket/Elements/EditCustomFields, %ARGS, QueueObj => $QueueObj, InTable => 1, KeepValue => 1 &>
+ <& /Ticket/Elements/EditTransactionCustomFields, %ARGS, QueueObj => $QueueObj, InTable => 1, KeepValue => 1 &>
</table>
</&>
% $m->callback( CallbackName => 'AfterBasics', QueueObj => $QueueObj, ARGSRef => \%ARGS );
diff --git a/rt/share/html/Ticket/Elements/EditTransactionCustomFields b/rt/share/html/Ticket/Elements/EditTransactionCustomFields
index a52ecc349..89a2fab89 100644
--- a/rt/share/html/Ticket/Elements/EditTransactionCustomFields
+++ b/rt/share/html/Ticket/Elements/EditTransactionCustomFields
@@ -63,8 +63,9 @@
</<% $CELL %>>
<<% $CELL %>>
<& /Elements/EditCustomField,
+ %ARGS,
CustomField => $CF,
- NamePrefix => $NamePrefix
+ NamePrefix => $NamePrefix,
&>
% if (my $msg = $m->notes('InvalidField-' . $CF->Id)) {
<br />
diff --git a/rt/share/html/Ticket/Elements/PreviewScrips b/rt/share/html/Ticket/Elements/PreviewScrips
index 3526f31a7..4067c20a3 100755
--- a/rt/share/html/Ticket/Elements/PreviewScrips
+++ b/rt/share/html/Ticket/Elements/PreviewScrips
@@ -88,7 +88,7 @@ my %squelched = ProcessTransactionSquelching( \%ARGS );
</ul>
% }
% if (RT->Config->Get('PreviewScripMessages')) {
- <textarea cols="80" rows="5"><%$scrip->ActionObj->TemplateObj->MIMEObj->as_string%></textarea>
+ <textarea cols="80" rows="5"><% Encode::decode( "UTF-8", $scrip->ActionObj->TemplateObj->MIMEObj->as_string ) %></textarea>
% }
<br />
% }
diff --git a/rt/share/html/Ticket/Elements/ShowUpdateStatus b/rt/share/html/Ticket/Elements/ShowUpdateStatus
index 21713a43a..43b51b578 100644
--- a/rt/share/html/Ticket/Elements/ShowUpdateStatus
+++ b/rt/share/html/Ticket/Elements/ShowUpdateStatus
@@ -56,10 +56,10 @@
</div>
<%ARGS>
$Ticket
+$DisplayPath => $session{'CurrentUser'}->Privileged ? 'Ticket' : 'SelfService'
</%ARGS>
<%INIT>
return unless (RT->Config->Get( 'ShowUnreadMessageNotifications', $session{'CurrentUser'}));
my $txn = $Ticket->SeenUpTo or return;
-my $DisplayPath = $session{'CurrentUser'}->Privileged ? 'Ticket' : 'SelfService';
</%INIT>
diff --git a/rt/share/html/Ticket/Graphs/Elements/ShowGraph b/rt/share/html/Ticket/Graphs/Elements/ShowGraph
index 1eae4b6ae..e9a5102dc 100644
--- a/rt/share/html/Ticket/Graphs/Elements/ShowGraph
+++ b/rt/share/html/Ticket/Graphs/Elements/ShowGraph
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<div><img src="<% RT->Config->Get('WebPath') %>/Ticket/Graphs/<% $id %>?<% $m->comp('/Elements/QueryString', %ARGS) %>" usemap="#<% $graph->{'NAME'} || 'test' %>" style="border: none" />
-<% safe_run_child { Encode::decode_utf8( $graph->as_cmapx ) } |n %>
+<% safe_run_child { Encode::decode( "UTF-8", $graph->as_cmapx ) } |n %>
</div>
<& ShowLegends, %ARGS, Ticket => $ticket &>
<%ARGS>
diff --git a/rt/share/html/Ticket/ModifyAll.html b/rt/share/html/Ticket/ModifyAll.html
index 6fb79e4fe..119cae400 100755
--- a/rt/share/html/Ticket/ModifyAll.html
+++ b/rt/share/html/Ticket/ModifyAll.html
@@ -105,7 +105,7 @@
</td>
</tr>
- <tr><td colspan="2"><& /Ticket/Elements/EditTransactionCustomFields, %ARGS, TicketObj => $Ticket &></td></tr>
+ <tr><td colspan="2"><& /Ticket/Elements/EditTransactionCustomFields, %ARGS, TicketObj => $Ticket, KeepValue => 1, &></td></tr>
<& /Ticket/Elements/AddAttachments, %ARGS, TicketObj => $Ticket &>
diff --git a/rt/share/html/Ticket/Update.html b/rt/share/html/Ticket/Update.html
index ae6b70095..37bb134c2 100755
--- a/rt/share/html/Ticket/Update.html
+++ b/rt/share/html/Ticket/Update.html
@@ -172,7 +172,7 @@ changeStatus();
% $m->callback( %ARGS, CallbackName => 'AfterWorked', Ticket => $TicketObj );
-<& /Ticket/Elements/EditTransactionCustomFields, %ARGS, TicketObj => $TicketObj, AsTable => 1 &>
+<& /Ticket/Elements/EditTransactionCustomFields, %ARGS, TicketObj => $TicketObj, AsTable => 1, KeepValue => 1 &>
<!--</table>-->
</&>
diff --git a/rt/share/html/Tools/Offline.html b/rt/share/html/Tools/Offline.html
index 507ca17e2..de49e00c8 100644
--- a/rt/share/html/Tools/Offline.html
+++ b/rt/share/html/Tools/Offline.html
@@ -114,7 +114,6 @@ if ($ARGS{'Parse'} && $ARGS{'Template'}) {
$template .= $buffer;
}
my $encode = RT::I18N::_GuessCharset( $template );
- require Encode;
$template = Encode::decode( $encode, $template );
$template =~ s/\r\n/\n/gs;
$action->Parse(Content => $template, Queue => $qname, Requestor => $requestoraddress);
diff --git a/rt/share/html/Widgets/TitleBoxStart b/rt/share/html/Widgets/TitleBoxStart
index f6655edad..4982315fe 100755
--- a/rt/share/html/Widgets/TitleBoxStart
+++ b/rt/share/html/Widgets/TitleBoxStart
@@ -81,7 +81,7 @@ $hideable = 1 if $rolledup;
#
my $page = $m->request_comp->path;
-my $title_b64 = MIME::Base64::encode_base64(Encode::encode_utf8($title), '');
+my $title_b64 = MIME::Base64::encode_base64(Encode::encode( "UTF-8", $title), '');
my $tid = "TitleBox--$page--" .
join '--', ($class, $bodyclass, $title_b64, $id);