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

Vonage integration (see Click2Call) <% ntable("#cccccc",2) %> Vonage phone number Vonage username Vonage password
% } % foreach my $prop (qw( height width availHeight availWidth colorDepth )) { % } <% include('/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;