From b73839693bf70d20b8cf21a49cad3ded744c182f Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 11 May 2011 09:56:57 +0200 Subject: [PATCH] Helfer-Layout-Funktion zum Sortieren von Listen mittels JavaScript + AJAX --- SL/Template/Plugin/L.pm | 95 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/SL/Template/Plugin/L.pm b/SL/Template/Plugin/L.pm index 2299a66b1..d28ecb44f 100644 --- a/SL/Template/Plugin/L.pm +++ b/SL/Template/Plugin/L.pm @@ -396,6 +396,45 @@ EOCODE return $code; } +sub sortable_element { + my ($self, $selector, @slurp) = @_; + my %params = _hashify(@slurp); + + my %attributes = ( helper => < + \$(function() { + \$( "${selector}" ).sortable({ ${attr_str} }).disableSelection(); + }); + +JAVASCRIPT + + return $code; +} + sub online_help_tag { my ($self, $tag, @slurp) = @_; my %params = _hashify(@slurp); @@ -603,6 +642,62 @@ translation of 'Selected'. =back +=item C + +Makes the children of the DOM element C<$selector> (a jQuery selector) +sortable with the I library. The children can be +dragged & dropped around. After dropping an element an URL can be +postet to with the element IDs of the sorted children. + +C<%params> can contain the following entries: + +=over 2 + +=item C + +The URL to POST an AJAX request to after a dragged element has been +dropped. The AJAX request's return value is ignored. If given then +C<$params{with}> must be given as well. + +=item C + +A string that is interpreted as the prefix of the children's ID. Upon +POSTing the result each child whose ID starts with C<$params{with}> is +considered. The prefix and the following "_" is removed from the +ID. The remaining parts of the IDs of those children are posted as a +single array parameter. The array parameter's name is either +C<$params{as}> or, missing that, C<$params{with}>. + +=item C + +Sets the POST parameter name for AJAX request after dropping an +element (see C<$params{with}>). + +=back + +Example: + + + + + + + + + + +
ThisThat
stuffmore stuff
stuffmore stuff
stuffmore stuff
+ + [% L.sortable_element('#thing_list tbody', + 'url' => 'controller.pl?action=SystemThings/reorder', + 'with' => 'thingy', + 'as' => 'thing_ids') %] + +After dropping e.g. the third element at the top of the list a POST +request would be made to the C action of the C +controller with a single parameter called C -- an array +containing the values C<[ 6, 2, 15 ]>. + =item C Dumps the Argument using L into a EpreE block. -- 2.20.1