Verwaltung von Zahlungsbedingungen auf Drag & Drop mit AJAX und jQuery UI Sortable...
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 12 May 2011 08:04:48 +0000 (10:04 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 12 May 2011 09:33:07 +0000 (11:33 +0200)
SL/Controller/PaymentTerm.pm
templates/webpages/payment_term/list.html

index 631428e..92cff0c 100644 (file)
@@ -64,16 +64,17 @@ sub action_destroy {
   $self->redirect_to(action => 'list');
 }
 
-sub action_move_up {
+sub action_reorder {
   my ($self) = @_;
-  $self->{payment_term}->move_position_up;
-  $self->redirect_to(action => 'list');
-}
 
-sub action_move_down {
-  my ($self) = @_;
-  $self->{payment_term}->move_position_down;
-  $self->redirect_to(action => 'list');
+  my @ids = @{ $::form->{payment_term_id} || [] };
+  my $result = SL::DB::PaymentTerm->new->db->do_transaction(sub {
+    foreach my $idx (0 .. scalar(@ids) - 1) {
+      SL::DB::PaymentTerm->new(id => $ids[$idx])->load->update_attributes(sortkey => $idx + 1);
+    }
+  });
+
+  $self->render(type => 'js', inline => '1;');
 }
 
 #
index e26e07f..8563137 100644 (file)
@@ -1,4 +1,7 @@
 [% USE HTML %][% USE T8 %][% USE L %][% USE LxERP %]
+
+<script type="text/javascript" src="js/jquery-ui.js"></script>
+
 <body>
  <div class="listtop">[% FORM.title %]</div>
 
    </p>
 
   [%- ELSE %]
-   <table>
+   <table id="payment_term_list">
+    <thead>
     <tr class="listheading">
-     <th align="center"><img src="image/up.png"></th>
-     <th align="center"><img src="image/down.png"></th>
+     <th align="center"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></th>
      <th>[%- 'Description' | $T8 %]</th>
      <th>[%- 'Long Description' | $T8 %]</th>
      <th align="right">[%- 'Netto Terms' | $T8 %]</th>
      <th align="right">[%- 'Skonto Terms' | $T8 %]</th>
      <th align="right">[%- 'Skonto' | $T8 %]</th>
     </tr>
+    </thead>
 
+    <tbody>
     [%- FOREACH payment_term = PAYMENT_TERMS %]
-    <tr class="listrow[% loop.count % 2 %]">
-     <td align="center">
-      [%- UNLESS loop.first %]
-       <a href="[% SELF.url_for(action => 'move_up', id => payment_term.id) %]"><img src="image/up.png" border="0"></a>
-      [%- END %]
-     </td>
-     <td align="center">
-      [%- UNLESS loop.last %]
-       <a href="[% SELF.url_for(action => 'move_down', id => payment_term.id) %]"><img src="image/down.png" border="0"></a>
-      [%- END %]
-     </td>
+    <tr class="listrow[% loop.count % 2 %]" id="payment_term_id_[% payment_term.id %]">
+     <td align="center" class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
      <td>
       <a href="[% SELF.url_for(action => 'edit', id => payment_term.id) %]">
        [%- HTML.escape(payment_term.description) %]
@@ -45,6 +41,7 @@
      <td align="right">[%- HTML.escape(payment_term.percent_skonto_as_number) %] %</td>
     </tr>
     [%- END %]
+    </tbody>
    </table>
   [%- END %]
 
@@ -53,5 +50,7 @@
   </p>
  </form>
 
+ [% L.sortable_element('#payment_term_list tbody', url => 'controller.pl?action=PaymentTerm/reorder', with => 'payment_term_id') %]
+
 </body>
 </html>