diff options
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/elements/tr-input-mask.html | 34 | ||||
-rw-r--r-- | httemplate/pref/pref-process.html | 1 | ||||
-rw-r--r-- | httemplate/pref/pref.html | 7 |
3 files changed, 42 insertions, 0 deletions
diff --git a/httemplate/elements/tr-input-mask.html b/httemplate/elements/tr-input-mask.html index 33725b9a5..8a494c8de 100644 --- a/httemplate/elements/tr-input-mask.html +++ b/httemplate/elements/tr-input-mask.html @@ -5,6 +5,7 @@ % } <& /elements/tr-input-text.html, id => $id, @_ &> <script type="text/javascript"> +<&| /elements/onload.js &> MaskedInput({ elm: document.getElementById('<%$id%>'), format: '<% $opt{format} %>', @@ -12,7 +13,38 @@ MaskedInput({ <% $opt{typeon} ? "typeon: '$opt{typeon}'," : '' %> }); document.getElementById('<%$id%>').value = <% $value |js_string %>; +% if ( $clipboard_hack ) { +var t = document.getElementById('<% $id %>'); +var container = document.getElementById('<%$id%>_clipboard'); +var KeyHandlerDown = t.onkeydown +t.onkeydown = function(e) { + // intercept ctrl-c and ctrl-x + // and cmd-c and cmd-x on mac + // when text is selected + if ( ( e.ctrlKey || e.metaKey ) ) { + // do the dance + var separators = /[\\/:-]/g; + var s = t.value.substr(t.selectionStart, t.selectionEnd); + if ( s ) { + container.value = s.replace(separators, ''); + container.previous = t; + container.focus(); + container.select(); + return true; + } + } + return KeyHandlerDown.call(t, e); +}; +container.onkeyup = function(e) { + if ( container.previous ) { + setTimeout(function() {container.previous.focus();}, 10); + } + return true; +} +% } # clipboard hack +</&> </script> +<textarea id="<%$id%>_clipboard" style="opacity:0"></textarea> <%shared> my $init = 0; </%shared> @@ -21,6 +53,8 @@ my %opt = @_; # must have a DOM id my $id = $opt{id} || sprintf('input%04d',int(rand(10000))); my $value = length($opt{curr_value}) ? $opt{curr_value} : $opt{value} || ''; + +my $clipboard_hack = $FS::CurrentUser::CurrentUser->option('enable_mask_clipboard_hack'); </%init> <%doc> Set up a text input field with input masking. diff --git a/httemplate/pref/pref-process.html b/httemplate/pref/pref-process.html index 962ee51b6..7edf8921c 100644 --- a/httemplate/pref/pref-process.html +++ b/httemplate/pref/pref-process.html @@ -54,6 +54,7 @@ unless ( $error ) { # if ($access_user) { spreadsheet_format mobile_menu enable_fuzzy_on_exact disable_html_editor disable_enter_submit_onetimecharge + enable_mask_clipboard_hack email_address snom-ip snom-username snom-password vonage-fromnumber vonage-username vonage-password diff --git a/httemplate/pref/pref.html b/httemplate/pref/pref.html index d2b8835e7..ccfeecd77 100644 --- a/httemplate/pref/pref.html +++ b/httemplate/pref/pref.html @@ -137,6 +137,13 @@ Interface </TD> </TR> + <TR> + <TH ALIGN="right">Don't copy MAC address delimiters to clipboard</TH> + <TD ALIGN="left" COLSPAN=2> + <INPUT TYPE="checkbox" NAME="enable_mask_clipboard_hack" VALUE="1" <% $curuser->option('enable_mask_clipboard_hack') ? 'CHECKED' : '' %>> + </TD> + </TR> + </TABLE> <BR> |