Verbesserte Kompatibilität mit Opera, FireFox, InternetExplorer bei Drag & Drop
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 11 May 2011 10:41:19 +0000 (12:41 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 11 May 2011 10:41:19 +0000 (12:41 +0200)
Wenn Textauswahl mit ".disableSelection()" deaktiviert ist, so kann
man bei den genannten Browsern Text-Eingabefelder nicht mehr
anklicken.

Statt dessen sind nun nur noch die Pfeile drag&drop-bar, der Rest der
Zeile nicht mehr.

SL/Template/Plugin/L.pm
templates/webpages/am/edit_units.html
templates/webpages/am/list_price_factors.html
templates/webpages/am/list_warehouses.html
templates/webpages/amcvar/list_cvar_configs.html

index d6c8ca2..5a59e02 100644 (file)
@@ -400,10 +400,11 @@ sub sortable_element {
   my ($self, $selector, @slurp) = @_;
   my %params                    = _hashify(@slurp);
 
-  my %attributes = ( helper => <<JAVASCRIPT );
+  my %attributes = ( distance => 5,
+                     helper   => <<'JAVASCRIPT' );
     function(event, ui) {
       ui.children().each(function() {
-        \$(this).width(\$(this).width());
+        $(this).width($(this).width());
       });
       return ui;
     }
@@ -422,12 +423,14 @@ JAVASCRIPT
 JAVASCRIPT
   }
 
+  $attributes{handle} = "'$params{handle}'" if $params{handle};
+
   my $attr_str = join(', ', map { "${_}: $attributes{$_}" } keys %attributes);
 
   my $code = <<JAVASCRIPT;
 <script type="text/javascript">
   \$(function() {
-    \$( "${selector}" ).sortable({ ${attr_str} }).disableSelection();
+    \$( "${selector}" ).sortable({ ${attr_str} })
   });
 </script>
 JAVASCRIPT
@@ -676,6 +679,13 @@ C<$params{as}> or, missing that, C<$params{with}>.
 Sets the POST parameter name for AJAX request after dropping an
 element (see C<$params{with}>).
 
+=item C<handle>
+
+An optional jQuery selector specifying which part of the child element
+is dragable. If nothing is given then the whole child element is
+dragable, and clicks through to underlying elements like inputs or
+links might not work.
+
 =back
 
 Example:
index 4d3b3e3..9d228d5 100644 (file)
   <tbody>
   [% FOREACH row = UNITS %]
    <tr class="listrow[% loop.count % 2 %]" id="unit_id_[% row.id %]">
-    <td align="center"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
+    <td align="center" class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
     [% IF row.in_use %]
      <td>
       <input type="hidden" name="unchangeable_[% loop.count %]" value="1">
 
  </form>
 
- [% L.sortable_element('#unit_list tbody', 'url' => 'controller.pl?action=Unit/reorder', 'with' => 'unit_id') %]
+ [% L.sortable_element('#unit_list tbody', 'url' => 'controller.pl?action=Unit/reorder', 'with' => 'unit_id', handle => '.dragdrop') %]
 
 </body>
 </html>
index 4c81bbb..c220a8d 100644 (file)
@@ -19,7 +19,7 @@
 
    [% FOREACH factor = PRICE_FACTORS %]
    <tr class="listrow[% loop.count % 2 %]" id="price_factor_id_[% factor.id %]">
-    <td align="center"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
+    <td align="center" class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
     <td><a href="[% url_base %]&action=edit_price_factor&id=[% HTML.url(factor.id) %]">[% HTML.escape(factor.description) %]</a></td>
     <td>[% HTML.escape(factor.factor) %]</td>
    </tr>
@@ -38,7 +38,7 @@
   </form>
  </p>
 
- [% L.sortable_element('#price_factor_list tbody', 'url' => 'controller.pl?action=PriceFactor/reorder', 'with' => 'price_factor_id') %]
+ [% L.sortable_element('#price_factor_list tbody', 'url' => 'controller.pl?action=PriceFactor/reorder', 'with' => 'price_factor_id', handle => '.dragdrop') %]
 
 </body>
 </html>
index e47e7c2..b791e7d 100644 (file)
@@ -20,7 +20,7 @@
 
    [% FOREACH warehouse = WAREHOUSES %]
    <tr class="listrow[% loop.count % 2 %]" id="warehouse_id_[% warehouse.id %]">
-    <td align="center"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
+    <td align="center" class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
     <td><a href="[% url_base %]&action=edit_warehouse&id=[% HTML.url(warehouse.id) %]">[% HTML.escape(warehouse.description) %]</a></td>
     <td>[% HTML.escape(warehouse.number_of_bins) %]</td>
     <td>[% IF warehouse.invalid %][% 'Yes' | $T8 %][% ELSE %][% 'No' | $T8 %][% END %]</td>
@@ -39,7 +39,7 @@
   </form>
  </p>
 
- [% L.sortable_element('#warehouse_list tbody', 'url' => 'controller.pl?action=Warehouse/reorder', 'with' => 'warehouse_id') %]
+ [% L.sortable_element('#warehouse_list tbody', 'url' => 'controller.pl?action=Warehouse/reorder', 'with' => 'warehouse_id', handle => '.dragdrop') %]
 
 </body>
 </html>
index 7652a01..b2e4b9a 100644 (file)
@@ -39,7 +39,7 @@
 
     [%- FOREACH cfg = CONFIGS %]
     <tr class="listrow[% loop.count % 2 %]" id="cvarcfg_id_[% cfg.id %]">
-     <td align="center"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
+     <td align="center" class="dragdrop"><img src="image/updown.png" alt="[ LxERP.t8('reorder item') %]"></td>
 
      <td>
       <a href="amcvar.pl?action=edit_cvar_config&module=[% HTML.url(module) %]&id=[% HTML.url(cfg.id) %]&callback=[% HTML.url(callback) %]">
@@ -89,7 +89,7 @@
   </p>
  </form>
 
- [% L.sortable_element('#cvarcfg_list tbody', 'url' => 'controller.pl?action=CustomVariableConfig/reorder', 'with' => 'cvarcfg_id') %]
+ [% L.sortable_element('#cvarcfg_list tbody', 'url' => 'controller.pl?action=CustomVariableConfig/reorder', 'with' => 'cvarcfg_id', handle => '.dragdrop') %]
 
 </body>
 </html>