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

Line 
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
14$(function() {
15     
16     // clean
17     $('.remove-if-drag').remove();
18     $('.hidden-if-drag').hide();
19     $('.widgets, .sortable-delete').addClass('if-drag');
20     
21     // move
22     $( ".connected, .sortable-delete" ).sortable({
23          tolerance: "move",
24          cursor: "move",
25          axis: "y",
26          dropOnEmpty: true,
27          handle: ".widget-name",
28          placeholder: "ui-sortable-placeholder",
29          items: "li:not(.sortable-delete-placeholder,.empty-widgets)",
30          connectWith: ".connected, .sortable-delete",
31          start: function( event, ui ) {
32               // petit décalage esthétique
33               ui.item.css('left', ui.item.position().left + 20);
34          },
35          update: function(event, ui) {
36               
37               ul = $(this);
38               widget = ui.item;
39               field = ul.parents('.widgets');
40               
41               // met a zéro le décalage
42               ui.item.css('left', 'auto');
43               
44               // signale les zones vides
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               }
52               
53               // remove
54               if( widget.parents('ul').is('.sortable-delete') ) {
55                    widget.hide('slow', function() {
56                         $(this).remove();
57                    });
58               }
59               
60               // réordonne
61               reorder(ul);
62               
63               // expand
64               if(widget.find('img.expand').length == 0) {
65                    dotclear.postExpander(widget);
66                    dotclear.viewPostContent(widget, 'close');
67               }
68               
69          }
70     });
71     
72     // add
73     $( "#widgets-ref > li" ).draggable({
74          tolerance: "move",
75          cursor: "move",
76          connectToSortable: ".connected",
77          helper: "clone",
78          revert: "invalid",
79          start: function( event, ui ) {
80               ui.helper.css({'width': $('#widgets-ref > li').css('width')});
81          }
82     });
83     
84     $("li.ui-draggable, ul.ui-sortable li")
85          .not('ul.sortable-delete li, li.empty-widgets')
86          .css({'cursor':'move'});
87});
Note: See TracBrowser for help on using the repository browser.

Sites map