Dotclear

source: plugins/widgets/dragdrop.js @ 2401:06f7d3a90bd0

Revision 2401:06f7d3a90bd0, 2.1 KB checked in by Lepeltier kévin <kevin@…>, 12 years ago (diff)

widgets : fléche pour réordonner sans drag&drop

RevLine 
[1659]1/*
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12*/
13
[1648]14$(function() {
[0]15     
[1648]16     // clean
[1657]17     $('.remove-if-drag').remove();
18     $('.hidden-if-drag').hide();
19     $('.widgets, .sortable-delete').addClass('if-drag');
[0]20     
[1648]21     // move
[1649]22     $( ".connected, .sortable-delete" ).sortable({
23          tolerance: "move",
24          cursor: "move",
[1648]25          axis: "y",
[1649]26          dropOnEmpty: true,
27          handle: ".widget-name",
28          placeholder: "ui-sortable-placeholder",
[2395]29          items: "li:not(.sortable-delete-placeholder,.empty-widgets)",
[1649]30          connectWith: ".connected, .sortable-delete",
31          start: function( event, ui ) {
[1766]32               // petit décalage esthétique
[1650]33               ui.item.css('left', ui.item.position().left + 20);
[1649]34          },
35          update: function(event, ui) {
36               
[1650]37               ul = $(this);
38               widget = ui.item;
39               field = ul.parents('.widgets');
40               
41               // met a zéro le décalage
[1649]42               ui.item.css('left', 'auto');
43               
[1766]44               // signale les zones vides
[2395]45               if( ul.find('li:not(.empty-widgets)').length == 0 ) {
46                    ul.find('li.empty-widgets').show();
47                    field.find('ul.sortable-delete').hide();
48               } else {
49                    ul.find('li.empty-widgets').hide();
50                    field.find('ul.sortable-delete').show();
51               }
[1650]52               
53               // remove
54               if( widget.parents('ul').is('.sortable-delete') ) {
55                    widget.hide('slow', function() {
56                         $(this).remove();
57                    });
[1649]58               }
59               
60               // réordonne
[2401]61               reorder(ul);
[1649]62               
[1650]63               // expand
64               if(widget.find('img.expand').length == 0) {
65                    dotclear.postExpander(widget);
66                    dotclear.viewPostContent(widget, 'close');
[1649]67               }
68               
[1650]69          }
[1648]70     });
[0]71     
[1648]72     // add
[1659]73     $( "#widgets-ref > li" ).draggable({
[1649]74          tolerance: "move",
75          cursor: "move",
[1648]76          connectToSortable: ".connected",
77          helper: "clone",
78          revert: "invalid",
79          start: function( event, ui ) {
[1659]80               ui.helper.css({'width': $('#widgets-ref > li').css('width')});
[1649]81          }
[1648]82     });
[2395]83     
84     $("li.ui-draggable, ul.ui-sortable li")
85          .not('ul.sortable-delete li, li.empty-widgets')
86          .css({'cursor':'move'});
[1648]87});
Note: See TracBrowser for help on using the repository browser.

Sites map