From f4aa07316a23cbbd1db83cf1bceb1d59111ff0d6 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 12 Aug 2014 16:01:28 -0700 Subject: [PATCH] popup view for collapsed packages, #25130, #27305 --- httemplate/view/cust_main/packages/contact.html | 2 + httemplate/view/cust_main/packages/hidden.html | 65 +++++++++++++++++++++++++ httemplate/view/cust_main/packages/section.html | 30 +++++++++++- httemplate/view/cust_pkg-popup.html | 27 ++++++++++ 4 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 httemplate/view/cust_main/packages/hidden.html create mode 100644 httemplate/view/cust_pkg-popup.html diff --git a/httemplate/view/cust_main/packages/contact.html b/httemplate/view/cust_main/packages/contact.html index 0f0cde71f..10c584c8c 100644 --- a/httemplate/view/cust_main/packages/contact.html +++ b/httemplate/view/cust_main/packages/contact.html @@ -10,10 +10,12 @@ ( <%pkg_detach_link($cust_pkg)%> ) % } +
% } elsif ( $show_contact_link && ! $opt{no_links} ) { ( <%pkg_add_contact_link($cust_pkg)%> ) +
% } <%init> diff --git a/httemplate/view/cust_main/packages/hidden.html b/httemplate/view/cust_main/packages/hidden.html new file mode 100644 index 000000000..35eda8c46 --- /dev/null +++ b/httemplate/view/cust_main/packages/hidden.html @@ -0,0 +1,65 @@ +% if (!$iopt{noframe}) { +% # then start the block here, and assign a suitable ID (cust_pkgX_block) + +% } + + + + +% if ( $cust_pkg->get('changed_from_pkg') ) { +<& hidden.html, $cust_pkg->get('changed_from_pkg'), + %iopt, + 'next_pkg' => $cust_pkg, + 'noframe' => 1 +&> +% } +% if ( !$iopt{noframe} ) { + +% } +<%init> +my $cust_pkg = shift; +my $part_pkg = $cust_pkg->part_pkg; +my %iopt = @_; +my $next = delete($iopt{'next_pkg'}); +my $curuser = $FS::CurrentUser::CurrentUser; +my $pkgnum = $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : ''; + +my $id = "cust_pkg".$cust_pkg->pkgnum; + +my $pkgpart_change = ($next->pkgpart != $cust_pkg->pkgpart); +my $location_change = ($next->locationnum != $cust_pkg->locationnum); +my $both_change = $pkgpart_change && $location_change; + +my $onclick = + include('/elements/popup_link_onclick.html', + 'action' => $fsurl.'view/cust_pkg-popup.html?' . $cust_pkg->pkgnum, + 'actionlabel' => 'Package #'.$cust_pkg->pkgnum, + 'width' => '1000', + 'height' => '310', + 'color' => $cust_pkg->statuscolor, + ); +my $popup_link = qq(); + + diff --git a/httemplate/view/cust_main/packages/section.html b/httemplate/view/cust_main/packages/section.html index 11928ec64..217e8c556 100755 --- a/httemplate/view/cust_main/packages/section.html +++ b/httemplate/view/cust_main/packages/section.html @@ -4,17 +4,22 @@ <% mt('Package') |h %> <% mt('Status') |h %> <% mt('Contact/Location') |h %> +% if (!$opt{no_services}) { <% mt('Services') |h %> +% } % #$FS::cust_pkg::DEBUG = 2; % foreach my $cust_pkg (@$packages) { +% # if requested, this can override cust_pkg-group_by_location <& .packagerow, $cust_pkg, + %conf_opt, ( map { $_ => $opt{$_} } qw( cust_main bgcolor no_links cust_location_cache before_pkg_callback before_svc_callback after_svc_callback + cust_pkg-group_by_location + no_services )), - %conf_opt &> % } % } else { # there are no packages @@ -30,11 +35,32 @@ <& package.html, %iopt &> <& status.html, %iopt &> - <& contact.html, %iopt &>
+ <& contact.html, %iopt &> <& location.html, %iopt &> +% if (!$iopt{no_services}) { <& services.html, %iopt &> +% } + +% # insert hidden predecessors to this package, if any +% # and a rolldown button to show them +% # (we'll make it do something later) +% if ( $cust_pkg->get('changed_from_pkg') ) { + + + +% # the hidden block here has ID="cust_pkgX" where X is the first pkgnum +% # it contains. + <& hidden.html, $cust_pkg->get('changed_from_pkg'), + %iopt, + 'next_pkg' => $cust_pkg, + &> + +% } % $row++; % # show the change target, if there is one % if ( $cust_pkg->change_to_pkg ) { diff --git a/httemplate/view/cust_pkg-popup.html b/httemplate/view/cust_pkg-popup.html new file mode 100644 index 000000000..96956c732 --- /dev/null +++ b/httemplate/view/cust_pkg-popup.html @@ -0,0 +1,27 @@ +<& /elements/header-popup.html &> + +<& cust_main/packages/section.html, + 'cust_main' => $cust_main, + 'packages' => [ $cust_pkg ], + 'cust_pkg-group_by_location' => 0, + 'no_services' => 1, +&> +
+ + +<%init> +my $curuser = $FS::CurrentUser::CurrentUser; +my ($pkgnum) = $cgi->keywords; +$pkgnum =~ /^\d+$/ or die "bad pkgnum $pkgnum"; + +my $cust_pkg = qsearchs({ + 'table' => 'cust_pkg', + 'addl_from' => 'JOIN cust_main USING (custnum)', + 'hashref' => { 'pkgnum' => $pkgnum }, + 'extra_sql' => ' AND '.$curuser->agentnums_sql, +}); +die "Package not found" unless $cust_pkg; +my $cust_main = $cust_pkg->cust_main; + +my $title = mt('Package [_1]', $pkgnum); + -- 2.11.0