| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- /*
- * Script from NETTUTS.com [by James Padolsey]
- * @requires jQuery($), jQuery UI & sortable/draggable UI modules
- */
- var iNettuts = {
-
- jQuery : $,
-
- settings : {
- columns : '.column',
- widgetSelector: '.widget',
- handleSelector: '.widget-head',
- contentSelector: '.widget-content',
- widgetDefault : {
- movable: true,
- removable: true,
- collapsible: true,
- editable: false,
- colorClasses : ['color-yellow', 'color-red', 'color-blue', 'color-white', 'color-orange', 'color-green']
- },
- widgetIndividual : {
- intro : {
- movable: true,
- removable: true,
- collapsible: true,
- editable: false
- }
- }
- },
- init : function () {
- this.attachStylesheet('inettuts.js.css');
- this.addWidgetControls();
- this.makeSortable();
- },
-
- getWidgetSettings : function (id) {
- var $ = this.jQuery,
- settings = this.settings;
- return (id&&settings.widgetIndividual[id]) ? $.extend({},settings.widgetDefault,settings.widgetIndividual[id]) : settings.widgetDefault;
- },
-
- addWidgetControls : function () {
- var iNettuts = this,
- $ = this.jQuery,
- settings = this.settings;
-
- $(settings.widgetSelector, $(settings.columns)).each(function () {
- var thisWidgetSettings = iNettuts.getWidgetSettings(this.id);
- if (thisWidgetSettings.removable) {
- $('<a href="#" class="remove">CLOSE</a>').mousedown(function (e) {
- e.stopPropagation();
- }).click(function () {
- if(confirm('È·¶¨¹Ø±Õ¸ÃÄ£¿é?')) {
- $(this).parents(settings.widgetSelector).animate({
- opacity: 0
- },function () {
- $(this).wrap('<div/>').parent().slideUp(function () {
- $(this).remove();
- });
- });
- }
- return false;
- }).appendTo($(settings.handleSelector, this));
- }
-
- if (thisWidgetSettings.editable) {
- $('<a href="#" class="edit">EDIT</a>').mousedown(function (e) {
- e.stopPropagation();
- }).toggle(function () {
- $(this).css({backgroundPosition: '-66px 0', width: '55px'})
- .parents(settings.widgetSelector)
- .find('.edit-box').show().find('input').focus();
- return false;
- },function () {
- $(this).css({backgroundPosition: '', width: ''})
- .parents(settings.widgetSelector)
- .find('.edit-box').hide();
- return false;
- }).appendTo($(settings.handleSelector,this));
- $('<div class="edit-box" style="display:none;"/>')
- .append('<ul><li class="item"><label>Change the title?</label><input value="' + $('h3',this).text() + '"/></li>')
- .append((function(){
- var colorList = '<li class="item"><label>Available colors:</label><ul class="colors">';
- $(thisWidgetSettings.colorClasses).each(function () {
- colorList += '<li class="' + this + '"/>';
- });
- return colorList + '</ul>';
- })())
- .append('</ul>')
- .insertAfter($(settings.handleSelector,this));
- }
-
- if (thisWidgetSettings.collapsible) {
- $('<a href="#" class="collapse">COLLAPSE</a>').mousedown(function (e) {
- e.stopPropagation();
- }).toggle(function () {
- $(this).css({backgroundPosition: '-38px 0'})
- .parents(settings.widgetSelector)
- .find(settings.contentSelector).hide();
- return false;
- },function () {
- $(this).css({backgroundPosition: '-52px 0'})
- .parents(settings.widgetSelector)
- .find(settings.contentSelector).show();
- return false;
- }).prependTo($(settings.handleSelector,this));
- }
- });
-
- $('.edit-box').each(function () {
- $('input',this).keyup(function () {
- $(this).parents(settings.widgetSelector).find('h3').text( $(this).val().length>20 ? $(this).val().substr(0,20)+'...' : $(this).val() );
- });
- $('ul.colors li',this).click(function () {
-
- var colorStylePattern = /\bcolor-[\w]{1,}\b/,
- thisWidgetColorClass = $(this).parents(settings.widgetSelector).attr('class').match(colorStylePattern)
- if (thisWidgetColorClass) {
- $(this).parents(settings.widgetSelector)
- .removeClass(thisWidgetColorClass[0])
- .addClass($(this).attr('class').match(colorStylePattern)[0]);
- }
- return false;
-
- });
- });
-
- },
-
- attachStylesheet : function (href) {
- var $ = this.jQuery;
- return $('<link href="' + href + '" rel="stylesheet" type="text/css" />').appendTo('head');
- },
-
- makeSortable : function () {
- var iNettuts = this,
- $ = this.jQuery,
- settings = this.settings,
- $sortableItems = (function () {
- var notSortable = '';
- $(settings.widgetSelector,$(settings.columns)).each(function (i) {
- if (!iNettuts.getWidgetSettings(this.id).movable) {
- if(!this.id) {
- this.id = 'widget-no-id-' + i;
- }
- notSortable += '#' + this.id + ',';
- }
- });
- return $('> li:not(' + notSortable + ')', settings.columns);
- })();
-
- $sortableItems.find(settings.handleSelector).css({
- cursor: 'move'
- }).mousedown(function (e) {
- $sortableItems.css({width:''});
- $(this).parent().css({
- width: $(this).parent().width() + 'px'
- });
- }).mouseup(function () {
- if(!$(this).parent().hasClass('dragging')) {
- $(this).parent().css({width:''});
- } else {
- $(settings.columns).sortable('disable');
- }
- });
- $(settings.columns).sortable({
- items: $sortableItems,
- connectWith: $(settings.columns),
- handle: settings.handleSelector,
- placeholder: 'widget-placeholder',
- forcePlaceholderSize: true,
- revert: 300,
- delay: 100,
- opacity: 0.8,
- containment: 'document',
- start: function (e,ui) {
- $(ui.helper).addClass('dragging');
- },
- stop: function (e,ui) {
- $(ui.item).css({width:''}).removeClass('dragging');
- $(settings.columns).sortable('enable');
- }
- });
- }
-
- };
- iNettuts.init();
|