summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2015-01-28 02:24:07 -0800
committerIvan Kohler <ivan@freeside.biz>2015-01-28 02:24:07 -0800
commita2faeced765b00c0339fd86d7905cb77318e3d20 (patch)
tree6c6d9e3bd5c0fccca6ab47f4afe5a3fb576cf01f
parent0928a6aa2ef66fedcdc0429c6450e26a3df5f444 (diff)
sticky customer notes, RT#29311
-rw-r--r--FS/FS/Schema.pm15
-rw-r--r--FS/FS/cust_main.pm4
-rw-r--r--FS/FS/cust_main_note.pm1
-rwxr-xr-xhttemplate/edit/cust_main_note.cgi27
-rwxr-xr-xhttemplate/edit/process/cust_main_note.cgi1
-rw-r--r--httemplate/view/cust_main/notes/notes.html18
6 files changed, 42 insertions, 24 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index ca6d169e5..b7611c154 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -2013,13 +2013,14 @@ sub tables_hashref {
'cust_main_note' => {
'columns' => [
- 'notenum', 'serial', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- 'classnum', 'int', 'NULL', '', '', '',
- '_date', @date_type, '', '',
- 'otaker', 'varchar', 'NULL', 32, '', '',
- 'usernum', 'int', 'NULL', '', '', '',
- 'comments', 'text', 'NULL', '', '', '',
+ 'notenum', 'serial', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ 'classnum', 'int', 'NULL', '', '', '',
+ '_date', @date_type, '', '',
+ 'otaker', 'varchar', 'NULL', 32, '', '',
+ 'usernum', 'int', 'NULL', '', '', '',
+ 'comments', 'text', 'NULL', '', '', '',
+ 'sticky', 'int', '', '', 0, '',
],
'primary_key' => 'notenum',
'unique' => [],
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 9f9562059..30dbc043c 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -2139,8 +2139,8 @@ Returns all notes (see L<FS::cust_main_note>) for this customer.
sub notes {
my($self,$orderby_classnum) = (shift,shift);
- my $orderby = "_DATE DESC";
- $orderby = "CLASSNUM ASC, $orderby" if $orderby_classnum;
+ my $orderby = "sticky DESC, _date DESC";
+ $orderby = "classnum ASC, $orderby" if $orderby_classnum;
qsearch( 'cust_main_note',
{ 'custnum' => $self->custnum },
'',
diff --git a/FS/FS/cust_main_note.pm b/FS/FS/cust_main_note.pm
index 712580764..ee63883d2 100644
--- a/FS/FS/cust_main_note.pm
+++ b/FS/FS/cust_main_note.pm
@@ -112,6 +112,7 @@ sub check {
|| $self->ut_numbern('_date')
|| $self->ut_textn('otaker')
|| $self->ut_anything('comments')
+ || $self->ut_numbern('sticky')
;
return $error if $error;
diff --git a/httemplate/edit/cust_main_note.cgi b/httemplate/edit/cust_main_note.cgi
index 61590566c..a089db2d1 100755
--- a/httemplate/edit/cust_main_note.cgi
+++ b/httemplate/edit/cust_main_note.cgi
@@ -18,17 +18,24 @@
<BR>
% }
-% if( $FS::CurrentUser::CurrentUser->option('disable_html_editor') ) {
- <TEXTAREA NAME="comment_plain" ROWS="12" COLS="60"><%
- join '', split /<br \/>|&nbsp;/, $comment
- %></TEXTAREA>
-% }
-% else {
-<% include('/elements/htmlarea.html', 'field' => 'comment_html',
- 'curr_value' => $comment) %>
+% if ( $FS::CurrentUser::CurrentUser->option('disable_html_editor') ) {
+ <TEXTAREA NAME="comment_plain" ROWS="12" COLS="60"><%
+ join '', split /<br \/>|&nbsp;/, $comment
+ %></TEXTAREA>
+% } else {
+ <& /elements/htmlarea.html, 'field' => 'comment_html',
+ 'curr_value' => $comment
+ &>
% }
-<BR><BR>
+<BR>
+
+<& /elements/checkbox.html, 'field' => 'sticky',
+ 'value' => 1,
+ 'curr_value' => $sticky,
+&>
+Sticky note<BR><BR>
+
<INPUT TYPE="submit" VALUE="<% $notenum ? emt("Apply changes") : emt("Add Note") %>">
</FORM>
@@ -42,6 +49,7 @@ my $conf = new FS::Conf;
my $comment;
my $notenum = '';
my $classnum;
+my $sticky = 0;
if ( $cgi->param('error') ) {
$comment = $cgi->param('comment');
$classnum = $cgi->param('classnum');
@@ -52,6 +60,7 @@ if ( $cgi->param('error') ) {
die "no such note: ". $notenum unless $note;
$comment = $note->comments;
$classnum = $note->classnum;
+ $sticky = $note->sticky;
}
$comment =~ s/\r//g; # remove weird line breaks to protect FCKeditor
diff --git a/httemplate/edit/process/cust_main_note.cgi b/httemplate/edit/process/cust_main_note.cgi
index 227297eef..53e616a43 100755
--- a/httemplate/edit/process/cust_main_note.cgi
+++ b/httemplate/edit/process/cust_main_note.cgi
@@ -33,6 +33,7 @@ my $new = new FS::cust_main_note ( {
_date => time,
usernum => $FS::CurrentUser::CurrentUser->usernum,
comments => $comment,
+ sticky => scalar( $cgi->param('sticky') ),
} );
my $error;
diff --git a/httemplate/view/cust_main/notes/notes.html b/httemplate/view/cust_main/notes/notes.html
index 6a7a06a02..fa45a68f2 100644
--- a/httemplate/view/cust_main/notes/notes.html
+++ b/httemplate/view/cust_main/notes/notes.html
@@ -34,6 +34,10 @@
% my $bgcolor1 = '#eeeeee';
% my $bgcolor2 = '#ffffff';
+% my %sticky_color = ( '#eeeeee' => '#ffff66',
+% '#ffffff' => '#ffffb8',
+% );
+%
% my $bgcolor = '';
% my $last_classnum = -1;
% my $skipheader = 0;
@@ -56,7 +60,7 @@
% ";notenum=$notenum",
% 'actionlabel' => emt('Edit customer note'),
% 'width' => 616,
-% 'height' => 538, #575
+% 'height' => 575,
% 'frame' => 'top',
% );
% my $clickjs = qq!onclick="$onclick"!;
@@ -103,21 +107,23 @@
% $last_classnum = $note->classnum;
% }
+% my $color = $note->sticky ? $sticky_color{$bgcolor} : $bgcolor;
+
<TR>
- <% note_datestr($note,$conf,$bgcolor) %>
- <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <% note_datestr($note,$conf,$color) %>
+ <TD CLASS="grid" BGCOLOR="<% $color %>">
&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 %>">
+ <TD CLASS="grid" BGCOLOR="<% $color %>">
<% $note->classname %>
</TD>
% }
- <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <TD CLASS="grid" BGCOLOR="<% $color %>">
<% $note->comments | defang %>
</TD>
% if($edit) {
- <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"><% $edit %></TD>
+ <TD CLASS="grid" BGCOLOR="<% $color %>"><% $edit %></TD>
% }
</TR>