summaryrefslogtreecommitdiff
path: root/httemplate/view/cust_main/notes
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2014-06-11 13:51:22 -0700
committerMark Wells <mark@freeside.biz>2014-06-11 13:51:32 -0700
commit9fae251fc1e3069694ebaf4fae62bde844f45cff (patch)
tree20208f50ad10ef3cad6f0a11c462ab762c2dc951 /httemplate/view/cust_main/notes
parentc2f4d21edfe3434c02c9dbd666e684c2deb3258e (diff)
display sent mail on customer notes page, and improve sent mail log UI, #29250
Diffstat (limited to 'httemplate/view/cust_main/notes')
-rwxr-xr-xhttemplate/view/cust_main/notes/attachments.html160
-rwxr-xr-xhttemplate/view/cust_main/notes/notes.html168
2 files changed, 328 insertions, 0 deletions
diff --git a/httemplate/view/cust_main/notes/attachments.html b/httemplate/view/cust_main/notes/attachments.html
new file mode 100755
index 000000000..0c16835f2
--- /dev/null
+++ b/httemplate/view/cust_main/notes/attachments.html
@@ -0,0 +1,160 @@
+% if ( scalar(@attachments) ) {
+
+ <& /elements/init_overlib.html &>
+
+ <& /elements/table-grid.html &>
+
+ <TR>
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Date') |h %></TH>
+% if ( $conf->exists('cust_main_note-display_times') ) {
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Time') |h %></TH>
+% }
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Person') |h %></TH>
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Filename') |h %></TH>
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Description') |h %></TH>
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Type') |h %></TH>
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Size') |h %></TH>
+ <TH CLASS="grid" BGCOLOR="#cccccc"></TH>
+ </TR>
+
+% my $bgcolor1 = '#eeeeee';
+% my $bgcolor2 = '#ffffff';
+% my $bgcolor = '';
+% if($cgi->param('show_deleted')) {
+% if ($curuser->access_right('View deleted attachments')) {
+% @attachments = grep { $_->disabled } @attachments;
+% }
+% else {
+% @attachments = ();
+% }
+% }
+% else {
+% @attachments = grep { not $_->disabled } @attachments;
+% }
+%
+% foreach my $attach (@attachments) {
+%
+% if ( $bgcolor eq $bgcolor1 ) {
+% $bgcolor = $bgcolor2;
+% } else {
+% $bgcolor = $bgcolor1;
+% }
+%
+% my $pop = popurl(3);
+% my $attachnum = $attach->attachnum;
+% my $edit = '';
+% if($attach->disabled) { # then you can undelete it or purge it.
+% if ($curuser->access_right('Undelete attachment')) {
+% my $clickjs = popup('edit/process/cust_main_attach.cgi?'.
+% "custnum=$custnum;attachnum=$attachnum;".
+% "undelete=1",
+% emt('Undelete attachment'));
+% $edit .= linkstr($clickjs, emt('undelete'));
+% }
+% if ($curuser->access_right('Purge attachment')) {
+% my $clickjs = popup('edit/process/cust_main_attach.cgi?'.
+% "custnum=$custnum;attachnum=$attachnum;".
+% "purge=1",
+% emt('Purge attachment'),
+% emt('Permanently remove this file?') );
+% $edit .= linkstr($clickjs,emt('purge'));
+% }
+% }
+% else { # you can download or edit it
+% if ($curuser->access_right('Edit attachment') ) {
+% my $clickjs = popup('edit/cust_main_attach.cgi?'.
+% "custnum=$custnum;attachnum=$attachnum",
+% emt('Edit attachment properties'));
+% $edit .= linkstr($clickjs,emt('edit'));
+% }
+% if($curuser->access_right('Delete attachment') ) {
+% my $clickjs = popup('edit/process/cust_main_attach.cgi?'.
+% "custnum=$custnum;attachnum=$attachnum;delete=1",
+% 'Delete attachment',
+% 'Delete this file?');
+% $edit .= linkstr($clickjs,emt('delete'));
+% }
+% if ($curuser->access_right('Download attachment') ) {
+% $edit .= qq!&nbsp; <A HREF="!.popurl(1).'attachment.html?'.$attachnum.qq!">(!
+% . emt('download') .')</A>';
+% }
+% }
+
+ <TR>
+ <% note_datestr($attach,$conf,$bgcolor) %>
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ &nbsp;<% $attach->usernum ? $attach->access_user->name : $attach->otaker %>
+ </TD>
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ &nbsp;<% $attach->filename |h %>
+ </TD>
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ &nbsp;<% $attach->title |h %>
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ &nbsp;<% $attach->mime_type |h %>
+ </TD>
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ &nbsp;<% size_units( $attach->size ) %>
+ </TD>
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <% $edit %>
+ </TD>
+ </TR>
+
+% } #end display notes
+
+</TABLE>
+
+% }
+<%init>
+
+my $conf = new FS::Conf;
+my $curuser = $FS::CurrentUser::CurrentUser;
+die "access denied" if !$curuser->access_right('View attachments');
+my(%opt) = @_;
+
+my $cust_main = $opt{'cust_main'};
+my $custnum = $cust_main->custnum;
+
+my (@attachments) = qsearch('cust_attachment', {'custnum' => $custnum});
+
+#subroutines
+
+sub note_datestr {
+ my($note, $conf, $bgcolor) = @_ or return '';
+ my $td = qq{<TD CLASS="grid" BGCOLOR="$bgcolor" ALIGN="right">};
+ my $format = "$td%b&nbsp;%o,&nbsp;%Y</TD>";
+ $format .= "$td%l:%M%P</TD>"
+ if $conf->exists('cust_main_note-display_times');
+ ( my $strip = time2str($format, $note->_date) ) =~ s/ (\d)/$1/g;
+ $strip;
+}
+
+sub linkstr {
+ my ($clickjs, $label) = (shift,shift);
+ '&nbsp; <A HREF="javascript:void(0);" '. $clickjs . '>(' . emt($label) . ')</A>';
+}
+
+sub size_units {
+ my $bytes = shift;
+ return $bytes if $bytes < 1024;
+ return int($bytes / 1024)."K" if $bytes < 1048576;
+ return int($bytes / 1048576)."M";
+}
+
+sub popup {
+ my ($url, $label, $confirm) = @_;
+ my $onclick =
+ include('/elements/popup_link_onclick.html',
+ 'action' => popurl(2).$url,
+ 'actionlabel' => $label,
+ 'width' => 510,
+ 'height' => 315,
+ 'frame' => 'top',
+ );
+ $onclick = qq!if(confirm('$confirm')) { $onclick }! if $confirm;
+ return qq!onclick="$onclick"!;
+}
+
+
+</%init>
diff --git a/httemplate/view/cust_main/notes/notes.html b/httemplate/view/cust_main/notes/notes.html
new file mode 100755
index 000000000..6a7a06a02
--- /dev/null
+++ b/httemplate/view/cust_main/notes/notes.html
@@ -0,0 +1,168 @@
+% if ( scalar(@notes) ) {
+
+<SCRIPT TYPE="text/javascript">
+
+ function display_notes_classnum(classnum){
+ document.getElementById('notes_'+classnum).style.display = 'block';
+ document.getElementById('notes_tablink_'+classnum).style.fontWeight = 'bold';
+
+ var divs = document.getElementsByTagName("div");
+ var i;
+ for(i=0; i < divs.length; i++){
+ var d = divs[i];
+ if(d.id.length > 6 && d.id.substring(0,6) == 'notes_') {
+ if(divs[i].id != 'notes_'+classnum) {
+ divs[i].style.display = 'none';
+ }
+ }
+ }
+
+ var as = document.getElementsByTagName("a");
+ for(i=0; i < as.length; i++){
+ var a = as[i];
+ if(a.id.length > 14 && a.id.substring(0,14) == 'notes_tablink_') {
+ if(as[i].id != 'notes_tablink_'+classnum) {
+ as[i].style.fontWeight = 'normal';
+ }
+ }
+ }
+ }
+
+</SCRIPT>
+
+ <& /elements/init_overlib.html &>
+
+% my $bgcolor1 = '#eeeeee';
+% my $bgcolor2 = '#ffffff';
+% my $bgcolor = '';
+% my $last_classnum = -1;
+% my $skipheader = 0;
+% my %classes = ();
+%
+% foreach my $note (@notes) {
+%
+% if ( $bgcolor eq $bgcolor1 ) {
+% $bgcolor = $bgcolor2;
+% } else {
+% $bgcolor = $bgcolor1;
+% }
+%
+% my $pop = popurl(3);
+% my $notenum = $note->notenum;
+% my $onclick = include( '/elements/popup_link_onclick.html',
+% 'action' => popurl(2).
+% 'edit/cust_main_note.cgi'.
+% "?custnum=$custnum".
+% ";notenum=$notenum",
+% 'actionlabel' => emt('Edit customer note'),
+% 'width' => 616,
+% 'height' => 538, #575
+% 'frame' => 'top',
+% );
+% my $clickjs = qq!onclick="$onclick"!;
+%
+% my $edit = '';
+% if ($curuser->access_right('Edit customer note') ) {
+% my $delete_url = $fsurl.'misc/delete-note.html?'.$notenum;
+% $edit = qq! <A HREF="javascript:void(0);" $clickjs>(!.emt('edit').')</A>'.
+% qq! <A HREF="$delete_url" !.
+% qq! onclick="return confirm('Delete this note?')">!.
+% '('.emt('delete').')</A>';
+% }
+%
+% if ( $last_classnum != $note->classnum && !$skipheader ) {
+% my $tmp_classnum = $note->classnum ? $note->classnum : 0;
+% $classes{$tmp_classnum} = $note->classname ne '' ? $note->classname
+% : emt('Other');
+% if ( $last_classnum != -1 ) {
+ </TABLE>
+ </DIV>
+% }
+% my $display = ($tmp_classnum == 0 || !$conf->exists('note-classes')
+% || $conf->config('note-classes') < 2)
+% ? 'block' : 'none';
+ <DIV id="notes_<% $tmp_classnum %>"
+ style="display:<% $display %>"
+ >
+ <& /elements/table-grid.html &>
+ <TR>
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Date') |h %></TH>
+% if ( $conf->exists('cust_main_note-display_times') ) {
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Time') |h %></TH>
+% }
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Person') |h %></TH>
+% if ($conf->exists('note-classes') && $conf->config('note-classes') == 1) {
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Class') |h %></TH>
+% }
+ <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Note') |h %></TH>
+% if ($curuser->access_right('Edit customer note') ) {
+ <TH CLASS="grid" BGCOLOR="#cccccc">&nbsp;</TH>
+% }
+ </TR>
+% $skipheader = (!$conf->exists('note-classes') || $conf->config('note-classes') < 2);
+% $last_classnum = $note->classnum;
+% }
+
+ <TR>
+ <% note_datestr($note,$conf,$bgcolor) %>
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ &nbsp;<% $note->usernum ? $note->access_user->name : $note->otaker %>
+ </TD>
+% if ($conf->exists('note-classes') && $conf->config('note-classes') == 1) {
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <% $note->classname %>
+ </TD>
+% }
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <% $note->comments | defang %>
+ </TD>
+% if($edit) {
+ <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $edit %></TD>
+% }
+ </TR>
+
+% } #end display notes
+
+</TABLE>
+</DIV>
+
+% if ( $conf->exists('note-classes') && $conf->config('note-classes') == 2 ) {
+% my($classnum,$classname);
+<% mt('Show notes of class:') |h %> &nbsp;
+% foreach my $classnum ( sort { $b <=> $a } (keys %classes) ) {
+ <A id="notes_tablink_<% $classnum %>"
+ HREF="javascript:display_notes_classnum(<% $classnum %>)"
+ style="font-weight: <% $classnum == 0 ? 'bold' : 'normal' %>"
+ ><% $classes{$classnum} %></A>
+% }
+ <BR>
+% }
+
+% }
+<%init>
+
+use HTML::Defang;
+
+my $conf = new FS::Conf;
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+my(%opt) = @_;
+
+my $cust_main = $opt{'cust_main'};
+my $custnum = $cust_main->custnum;
+
+my (@notes) = $cust_main->notes($conf->exists('note-classes') && $conf->config('note-classes') == 2);
+
+#subroutines
+
+sub note_datestr {
+ my($note, $conf, $bgcolor) = @_ or return '';
+ my $td = qq{<TD CLASS="grid" BGCOLOR="$bgcolor" ALIGN="right">};
+ my $format = "$td%b&nbsp;%o,&nbsp;%Y</TD>";
+ $format .= "$td%l:%M%P</TD>"
+ if $conf->exists('cust_main_note-display_times');
+ ( my $strip = time2str($format, $note->_date) ) =~ s/ (\d)/$1/g;
+ $strip;
+}
+
+</%init>