diff options
author | Ivan Kohler <ivan@freeside.biz> | 2015-10-23 16:17:51 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2015-10-23 16:17:51 -0700 |
commit | 80c2d997c5c983344c530ecbb46f94f1c299b35f (patch) | |
tree | 28bafc1d55836acb5455e6554941c06f0912ef98 /httemplate/elements | |
parent | 3b1a5e8789d76f0581079d07190664f57bd773a3 (diff) | |
parent | 0806f9fdbf2086671c151b3bcb078dc008e96f6c (diff) |
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'httemplate/elements')
-rw-r--r-- | httemplate/elements/menu.html | 4 | ||||
-rw-r--r-- | httemplate/elements/popup_link.html | 4 | ||||
-rw-r--r-- | httemplate/elements/select-months.html | 11 | ||||
-rw-r--r-- | httemplate/elements/tr-select-months.html | 16 | ||||
-rw-r--r-- | httemplate/elements/tr-select-msg_template.html | 12 | ||||
-rw-r--r-- | httemplate/elements/tr-select-pkg-discount.html | 196 |
6 files changed, 232 insertions, 11 deletions
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index ea6933198..dcc02c2b1 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -787,6 +787,10 @@ $config_misc{'Inventory classes and inventory'} = [ $fsurl.'browse/inventory_cla $config_misc{'Upload targets'} = [ $fsurl.'browse/upload_target.html', 'Billing and payment upload destinations' ] if $curuser->access_right('Configuration'); +$config_misc{'System log emails'} = [ $fsurl.'browse/log_email.html', 'Configure conditions for sending email when logging' ] + if $curuser->access_right('View system logs') + || $curuser->access_right('Configuration'); + tie my %config_menu, 'Tie::IxHash'; if ( $curuser->access_right('Configuration' ) ) { %config_menu = ( diff --git a/httemplate/elements/popup_link.html b/httemplate/elements/popup_link.html index 2b6b187e9..e9728ac1c 100644 --- a/httemplate/elements/popup_link.html +++ b/httemplate/elements/popup_link.html @@ -18,11 +18,13 @@ Example: 'height' => 336, 'color' => '#ff0000', 'closetext' => 'Go Away', # the value '' removes the link + 'title' => 'Hover Text', #uncommon opt 'aname' => "target", # link NAME= value, useful for #targets 'target' => '_parent', 'style' => 'css-attribute:value', + 'html_label' => '<IMG SRC="something.png">', # overrides label } &> @@ -30,6 +32,7 @@ Example: % if ($params->{'action'} && $label) { <A HREF="javascript:void(0);" onClick="<% $onclick |n %>" + <% $params->{'title'} ? 'TITLE="' . $params->{'title'}. '"' : '' |n %> <% $params->{'aname'} ? 'NAME="'. $params->{'aname'}. '"' : '' |n %> <% $params->{'target'} ? 'TARGET="'. $params->{'target'}. '"' : '' |n %> <% $params->{'style'} ? 'STYLE="'. $params->{'style'}. '"' : '' |n %> @@ -48,6 +51,7 @@ if (ref($_[0]) eq 'HASH') { my $label = $params->{'label'}; $label =~ s/ / /g; +$label = $params->{'html_label'} || $label; my $onclick = include('/elements/popup_link_onclick.html', $params); </%init> diff --git a/httemplate/elements/select-months.html b/httemplate/elements/select-months.html new file mode 100644 index 000000000..1cd72fcba --- /dev/null +++ b/httemplate/elements/select-months.html @@ -0,0 +1,11 @@ +<%init> +my %opt = @_; +$opt{id} ||= $opt{field}; # should be the default everywhere +my $max = $opt{max} || 36; +$opt{options} = [ '', 1 .. $max ]; +$opt{labels} = { '' => '', + map { $_ => emt('[quant,_1,month]', $_) } 1 .. $max + }; + +</%init> +<& select.html, %opt &> diff --git a/httemplate/elements/tr-select-months.html b/httemplate/elements/tr-select-months.html index b90ce1ed7..4d8576411 100644 --- a/httemplate/elements/tr-select-months.html +++ b/httemplate/elements/tr-select-months.html @@ -1,11 +1,5 @@ -<%init> -my %opt = @_; -$opt{id} ||= $opt{field}; # should be the default everywhere -my $max = $opt{max} || 36; -$opt{options} = [ '', 1 .. $max ]; -$opt{labels} = { '' => '', - map { $_ => emt('[quant,_1,month]', $_) } 1 .. $max - }; - -</%init> -<& tr-select.html, %opt &> +<& tr-td-label.html, @_ &> + <td> + <& select-months.html, @_ &> + </td> +</tr> diff --git a/httemplate/elements/tr-select-msg_template.html b/httemplate/elements/tr-select-msg_template.html new file mode 100644 index 000000000..1f899e01c --- /dev/null +++ b/httemplate/elements/tr-select-msg_template.html @@ -0,0 +1,12 @@ +<% include('/elements/tr-td-label.html', + 'label' => $opt{'label'} || 'Message template: ', + 'required' => $opt{'required'} ) %> + <TD><% include('select-msg_template.html', %opt) %></TD> +</TR> + +<%init> + +my %opt = @_; + +</%init> + diff --git a/httemplate/elements/tr-select-pkg-discount.html b/httemplate/elements/tr-select-pkg-discount.html new file mode 100644 index 000000000..dc38cff3e --- /dev/null +++ b/httemplate/elements/tr-select-pkg-discount.html @@ -0,0 +1,196 @@ +<%doc> + +In order_pkg.html or similar: + +<& /elements/tr-select-pkg-discount.html, + curr_value_setup => ($cgi->param('setup_discountnum') || ''), + curr_value_recur => ($cgi->param('recur_discountnum') || ''), + disable_setup => 0, + disable_recur => 0, +&> + +This provides the following: +- If the user can waive setup fees or apply a discount, they get a + select box for the setup discount, with "Waive setup fee" as an option. +- If they can custom discount, they will also get "Custom discount" as an + option. If selected, this will show fields to enter the custom discount + amount/percentage. +- If they can waive setup fees but NOT apply a discount, they only get a + checkbox to waive setup fee. +- Same for recurring fee, but without the "waive setup fee" stuff, obviously. +- Custom recurring discounts also have an option for a duration in months. + +"disable_setup" locks the setup discount, but will still show a static +description if curr_value_setup is set. Likewise "disable_recur". + +</%doc> +% # SETUP DISCOUNT + +% # select-discount knows about the "custom discount" ACL +% if ( $curuser->access_right('Discount customer package') +% and !$opt{disable_setup} ) +% { +% my $pre_options = [ '' => '(none)' ]; +% if ( $curuser->access_right('Waive setup fee') ) { +% push @$pre_options, -2 => 'Waive setup fee'; +% } +<& tr-td-label.html, label => emt('Setup fee') &> + <td> + <& select-discount.html, + field => 'setup_discountnum', + id => 'setup_discountnum', + hashref => { disabled => '', + setup => 'Y' + }, + extra_sql => ' AND (percent > 0 OR months = 1)', + curr_value => $opt{'curr_value_setup'}, + disable_empty => 1, + pre_options => $pre_options, + &> + </td> +</tr> +% # custom discount +<tr class="setup_discount_custom"> + <td></td> + <td>Amount <% $money_char %> + <& input-text.html, + field => 'setup_discountnum_amount', + curr_value => ($cgi->param('setup_discountnum_amount') || ''), + size => 5, + &> + or percentage + <& input-text.html, + field => 'setup_discountnum_percent', + curr_value => ($cgi->param('setup_discountnum_percent') || ''), + size => 5, + &> % + </td> +</tr> + +% } elsif ( $curuser->access_right('Waive setup fee') +% and !$opt{disable_setup} ) +% { + +<& tr-td-label.html, label => emt('Waive setup fee') &> + <td> + <& checkbox.html, + field => 'setup_discountnum', + id => 'setup_discountnum', + value => '-2', + curr_value => $opt{'curr_value_setup'}, + &> + </td> +</tr> + +% } elsif ( $opt{'curr_value_setup'} ) { # user can't do anything +% +% my $discount = FS::discount->by_key($opt{'curr_value_setup'}); + + <INPUT TYPE="hidden" NAME="setup_discountnum" VALUE="<% $opt{curr_value_setup} %>"> + + <% $discount->description_short %> + +% } + +% # RECUR DISCOUNT + +% if ( $curuser->access_right('Discount customer package') +% and !$opt{disable_recur} ) { + +<& tr-td-label.html, label => emt('Recurring fee') &> + <td> + <& select-discount.html, + field => 'recur_discountnum', + id => 'recur_discountnum', + hashref => { disabled => '' }, + curr_value => $opt{'curr_value_recur'}, + &> + + </td> +</tr> +% # custom discount +<tr class="recur_discount_custom"> + <td></td> + <td>Amount <% $money_char %> + <& input-text.html, + field => 'recur_discountnum_amount', + curr_value => ($cgi->param('recur_discountnum_amount') || ''), + size => 5, + &> + or percentage + <& input-text.html, + field => 'recur_discountnum_percent', + curr_value => ($cgi->param('recur_discountnum_percent') || ''), + size => 5, + &> % + </td> +</tr> +<tr class="recur_discount_custom"> + <td></td> + <td>Expires after + <& /elements/select-months.html, + field => 'recur_discountnum_months', + curr_value => ($cgi->param('recur_discountnum_months') || ''), + &> + </td> +</tr> + +% } elsif ( $opt{'curr_value_recur'} ) { +% +% my $discount = FS::discount->by_key($opt{'curr_value_recur'}); + + <INPUT TYPE="hidden" NAME="recur_discountnum" VALUE="<% $opt{curr_value_recur} %>"> + + <% $discount->description %> + +% } + +<SCRIPT TYPE="text/javascript"> +$(document).ready(function() { + ['setup', 'recur'].forEach(function(x) { + var discountnum = $('#'+x+'_discountnum'); + + // if it's been set to a custom discount, show custom discount inputs + var discountnum_changed = function() { + var val = this.value; + var custom = $('.'+x+'_discount_custom'); + if ( val == -1 ) { + custom.show(); + } else { + custom.hide(); + } + }; + + discountnum.on('change', discountnum_changed); + discountnum.trigger('change'); + + // if amount contains a value, disable percent, and vice versa + var amount_percent_keyup = function(event) { + var other = event.data; + if (this.value.length > 0) { + other.disabled = true; + } else { + other.disabled = false; + } + }; + var amount = $('#'+x+'_discountnum_amount'); + var percent = $('#'+x+'_discountnum_percent'); + amount.on('keyup', percent, amount_percent_keyup); + percent.on('keyup', amount, amount_percent_keyup); + + amount.trigger('keyup'); + percent.trigger('keyup'); + }); +}); +</script> +<%init> + +my %opt = ( + 'curr_value_setup' => ($cgi->param('setup_discountnum') || ''), + 'curr_value_recur' => ($cgi->param('recur_discountnum') || ''), + @_ +); +my $curuser = $FS::CurrentUser::CurrentUser; +my $money_char = FS::Conf->new->config('money_char') || '$'; + +</%init> |