Guest User

Widgets

a guest
Aug 20th, 2012
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * Script from NETTUTS.com [by James Padolsey]
  3.  * @requires jQuery($), jQuery UI & sortable/draggable UI modules
  4.  */
  5.    
  6. var iNettuts = {
  7.    
  8.     jQuery : $,
  9.    
  10.     settings : {
  11.         columns : '.column',
  12.         widgetSelector: '.widget',
  13.         handleSelector: '.widget-head',
  14.         contentSelector: '.widget-content-wrapper',
  15.         widgetDefault : {
  16.             movable: true,
  17.         },
  18.         widgetIndividual : {
  19.             intro : {
  20.                 movable: false,
  21.             }
  22.         }
  23.     },
  24.  
  25.     init : function () {
  26.         this.makeSortable();
  27.     },
  28.    
  29.     getWidgetSettings : function (id) {
  30.         var $ = this.jQuery,
  31.             settings = this.settings;
  32.         return (id&&settings.widgetIndividual[id]) ? $.extend({},settings.widgetDefault,settings.widgetIndividual[id]) : settings.widgetDefault;
  33.     },
  34.          
  35.     makeSortable : function () {
  36.         var iNettuts = this,
  37.             $ = this.jQuery,
  38.             settings = this.settings,
  39.             $sortableItems = (function () {
  40.                 var notSortable = '';
  41.                 $(settings.widgetSelector,$(settings.columns)).each(function (i) {
  42.                     if (!iNettuts.getWidgetSettings(this.id).movable) {
  43.                         if(!this.id) {
  44.                             this.id = 'widget-no-id-' + i;
  45.                         }
  46.                         notSortable += '#' + this.id + ',';
  47.                     }
  48.                 });        
  49.                
  50.                 if (notSortable.length > 0) {
  51. return $('> li:not(' + notSortable + ')', settings.columns);
  52. } else {
  53. return $('> li', settings.columns);
  54. }
  55.             })();
  56.        
  57.         $sortableItems.find(settings.handleSelector).css({
  58.             cursor: 'move'
  59.         }).mousedown(function (e) {
  60.             $sortableItems.css({width:''});
  61.             $(this).parent().css({
  62.                 width: $(this).parent().width() + 'px'
  63.             });
  64.         }).mouseup(function () {
  65.             if(!$(this).parent().hasClass('dragging')) {
  66.                 $(this).parent().css({width:''});
  67.             } else {
  68.                 $(settings.columns).sortable('disable');
  69.             }
  70.         });
  71.  
  72.         $(settings.columns).sortable({
  73.             items: $sortableItems,
  74.             connectWith: $(settings.columns),
  75.             handle: settings.handleSelector,
  76.             placeholder: 'widget-placeholder',
  77.             forcePlaceholderSize: true,
  78.             revert: 300,
  79.             delay: 100,
  80.             opacity: 0.8,
  81.             containment: 'document',
  82.             start: function (e,ui) {
  83.                 $(ui.helper).addClass('dragging');
  84.                
  85.             },
  86.             stop: function (e,ui) {
  87.                 $(ui.item).css({width:''}).removeClass('dragging');
  88.                 $(settings.columns).sortable('enable');
  89.             }
  90.         });
  91.     }
  92.  
  93. };
  94. iNettuts.init();
Advertisement
Add Comment
Please, Sign In to add comment