future package change: adjust behavior of date field, #20687
authorMark Wells <mark@freeside.biz>
Tue, 20 Aug 2013 23:27:54 +0000 (16:27 -0700)
committerMark Wells <mark@freeside.biz>
Tue, 20 Aug 2013 23:27:54 +0000 (16:27 -0700)
httemplate/elements/onload.js [new file with mode: 0644]
httemplate/elements/order_pkg.js
httemplate/elements/tr-select-cust-part_pkg.html
httemplate/misc/change_pkg.cgi

diff --git a/httemplate/elements/onload.js b/httemplate/elements/onload.js
new file mode 100644 (file)
index 0000000..bfa7eef
--- /dev/null
@@ -0,0 +1,22 @@
+<%doc>
+Filter component to attach a window.onload handler.
+
+Usage:
+  <script>
+  <&| elements/onload.js &>
+    if ( the_stars_are_right ) {
+      run_this_function();
+    }
+  </&>
+  </script>
+
+</%doc>
+(function() {
+  var tmp = window.onload;
+  window.onload = function() {
+    if (typeof(tmp)== 'function') {
+      tmp();
+    }
+<% $m->content %>
+  };
+})();
index 762b2dd..4e41fd6 100644 (file)
@@ -21,6 +21,11 @@ function pkg_changed () {
       }
     }
 
+// if this form element exists, then the start date is a future
+// package change date; don't replace it
+    if ( form.delay ) {
+      return;
+    }
     form.start_date_text.value = opt.getAttribute('data-start_date');
     if ( opt.getAttribute('data-can_start_date') == 1 ) {
       date_text.style.backgroundColor = '#ffffff';
index 488f04a..8431beb 100644 (file)
@@ -64,9 +64,9 @@
                   );
     }
 
-    window.onload = function() {
+    <&| /elements/onload.js &>
       classnum_changed(document.getElementById('classnum'));
-    }
+    </&>
 
   </SCRIPT>
 
index 887fa01..ce83480 100755 (executable)
 <FONT CLASS="fsinnerbox-title"><% mt('Change') |h %></FONT>
 <% ntable('#cccccc') %>
 
+  <SCRIPT TYPE="text/javascript">
+    function delay_changed() {
+      var enable = document.OrderPkgForm.delay[1].checked;
+      document.getElementById('start_date_text').disabled = !enable;
+      document.getElementById('start_date_button').style.display = 
+        (enable ? '' : 'none');
+      document.getElementById('start_date_button_disabled').style.display =
+        (enable ? 'none' : '');
+    }
+    <&| /elements/onload.js &>
+      delay_changed();
+    </&>
+  </SCRIPT>
   <TR>
-<!--    <TD> Apply this change: </TD> -->
     <TD> <INPUT TYPE="radio" NAME="delay" VALUE="0" \
-          <% !$cgi->param('delay') ? 'CHECKED' : '' %>> Now </TD>
+          <% !$cgi->param('delay') ? 'CHECKED' : '' %> \
+          onclick="delay_changed()"> Now </TD>
     <TD> <INPUT TYPE="radio" NAME="delay" VALUE="1" \
-          <% $cgi->param('delay')  ? 'CHECKED' : '' %>> In the future
+          <% $cgi->param('delay')  ? 'CHECKED' : '' %> \
+          onclick="delay_changed()"> In the future
       <& /elements/input-date-field.html, {
           'name'  => 'start_date',
           'value' => ($cgi->param('start_date') || $cust_main->next_bill_date),
       } &>
+      <IMG SRC="<%$fsurl%>images/calendar-disabled.png" \
+            ID="start_date_button_disabled" STYLE="display:none">
     </TD>
   </TR>
 </TABLE>