<& /elements/header.html, mt('Preferences for [_1]', $FS::CurrentUser::CurrentUser->username) &>
<& /elements/error.html &> % if ( FS::Auth->auth_class->can('change_password') ) { <% emt('Change password (leave blank for no change)') %> <% ntable("#cccccc",2) %> <% emt("Current password:") %> <% emt("New password:") %> <% emt("Re-enter new password:") %>
% } <% emt("Interface") %> <% ntable("#cccccc",2) %> <% emt("Locale:") %> <% emt("Menu location:") %> > <% emt("Left") %>
> <% emt("Top") %>
<% emt("Enable mobile-friendly menu:") %> option('mobile_menu') ? 'CHECKED' : '' %>> <% emt("Default customer view:") %> % my $history_order = $curuser->option('history_order') || 'oldest'; <% emt("Customer history sort order:") %> <& /elements/select.html, field => 'history_order', curr_value => $history_order, options => [ 'oldest', 'newest' ], labels => { 'oldest' => mt('Oldest first'), 'newest' => mt('Newest first'), }, &> <% emt("Spreadsheet download format:") %> <% emt("Disable HTML editor for customer notes:") %> option('disable_html_editor') ? 'CHECKED' : '' %>> <% emt("Disable submission on Enter key - one-time charges:") %> option('disable_enter_submit_onetimecharge') ? 'CHECKED' : '' %>> <% emt("Don't copy MAC address delimiters to clipboard") %> option('enable_mask_clipboard_hack') ? 'CHECKED' : '' %>> <% emt("Scale documents to fit on a letter-size page") %> option('printtofit') ? 'CHECKED' : '' %>> <% emt("How many recently-modified customers displayed on dashboard") %> <% emt("How many recent outbound emails to show in customer view") %>
<% emt("Email Address") %> <% ntable("#cccccc",2) %> <% emt("Email Address(es) (comma separated) ") %>
<% emt("Development") %> <% ntable("#cccccc",2) %> <% emt("Show customer package timestamps:") %> option('cust_pkg-display_times') ? 'CHECKED' : '' %>> <% emt("Show internal package numbers:") %> option('show_pkgnum') ? 'CHECKED' : '' %>> <% emt("Show config item counts:") %> option('show_confitem_counts') ? 'CHECKED' : '' %>> <% emt("Show export data on service view (when available):") %> option('export_getsettings') ? 'CHECKED' : '' %>> <% emt("Show database profiling (when available):") %> option('show_db_profile') ? 'CHECKED' : '' %>> <% emt("Save database profiling logs (when available):") %> option('save_db_profile') ? 'CHECKED' : '' %>> <% emt("Save temporary invoice typesetting files:") %> option('save_tmp_typesetting') ? 'CHECKED' : '' %>>
% if ( $curuser->access_right('Employee preference telephony integration') ) { <% emt("SNOM integration") %> <% ntable("#cccccc",2) %> <% emt("SNOM IP address") %> <% emt("SNOM HTTP username (if necessary)") %> <% emt("SNOM HTTP password (if necessary)") %>
<% emt("OR")%>

<% emt("Vonage integration (see") %> <% emt("Click2Call") %>) <% ntable("#cccccc",2) %> <% emt("Vonage phone number") %> <% emt("Vonage username") %> <% emt("Vonage password") %>
% } % foreach my $prop (qw( height width availHeight availWidth colorDepth )) { % } "> <&/elements/footer.html &> <%init> my $curuser = $FS::CurrentUser::CurrentUser; #false laziness w/view/cust_main.cgi and Conf.pm (cust_main-default_view) tie my %customer_views, 'Tie::IxHash', 'Basics' => 'basics', 'Notes' => 'notes', #notes and files? 'Tickets' => 'tickets', 'Appointments' => 'appointments', 'Quotations' => 'quotations', 'Packages' => 'packages', 'Payment History' => 'payment_history', ; $customer_views{'Change History'} = 'change_history' if $curuser->access_right('View customer history'); # XSS via your own preferences? seems unlikely, but nice try anyway... ( $curuser->option('menu_position') || 'top' ) =~ /^(\w+)$/ or die "illegal menu_position"; my $menu_position = $1; ( $curuser->option('email_address') ) =~ /^([,\w\@.\-]*)$/ or die "illegal email_address"; #too late my $email_address = $1; my $conf = new FS::Conf; my @locales = $conf->config('available-locales'); if ( ! @locales ) { @locales = FS::Locales->locales ; }