Partage
  • Partager sur Facebook
  • Partager sur Twitter

Question bête?

débute en développement web, soyez indulgents

    9 mai 2010 à 23:26:55

    Bonsoir tout le monde! :)

    Alors voilou mon problème :

    J'ai fait une page de style netvibes ou igoogle, avec des éléments déplaçables.
    J'utilise pour cela jQuery :p

    Jusque là pas trop de soucis, mais j'aimerais que quand je clique sur un lien dans ma page (du genre "ajouter un widget") cela ( comme son nom l'indique me direz-vous :euh: ) rajoute un widget identique aux autres..

    J'ai mon code javascript et mon css pour déinir la coleur, la taille, la position, le fait qu'ils soient déplaçable etc..
    Le problème est que je ne voit absolument pas comment rappeler tout ca en cliquant sur un lien, sachant quand dans ma page html je les appellent comme ceci :

    <div id="columns"> 
            
            <ul id="column1" class="column">
                <li class="widget color-blue">
                    <div class="widget-head">
                        <h3>Widget n°1</h3>
                    </div>
    		<div class="widget-content">
                        <p> Test </p>
                    </div>
                </li>
    	    
                <li class="widget color-blue">  
                    <div class="widget-head">
                        <h3>Widget n°2</h3>
                    </div>
                    <div class="widget-content">
                        <p> Test </p>
                    </div>
                </li>
    	    
    	    
    	    
            </ul>
    



    Quelqu'un peut-il me venir en aide?
    J'attends vos réponses avec impatience ^^
    • Partager sur Facebook
    • Partager sur Twitter
      9 mai 2010 à 23:32:05

      Sans code on peut rien faire... (je parle du javascript)
      • Partager sur Facebook
      • Partager sur Twitter
        9 mai 2010 à 23:44:53

        Oups, désolé..

        Alors, voici le code javascript :

        var minPro = {
            
            jQuery : $,
            
            settings : {
                columns : '.column',
                widgetSelector: '.widget',
                handleSelector: '.widget-head',
                contentSelector: '.widget-content',
                widgetDefault : {
                    movable: true,
                    removable: true,
                    collapsible: true,
                    editable: true,
                    colorClasses : ['color-yellow', 'color-red', 'color-blue', 'color-white', 'color-orange', 'color-green']
                },
                widgetIndividual : {
                    intro : {
                        movable: false,
                        removable: false,
                        collapsible: false,
                        editable: false
                    }
                }
            },
        
            init : function () {
                this.attachStylesheet('minPro.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 minPro = this,
                    $ = this.jQuery,
                    settings = this.settings;
                    
                $(settings.widgetSelector, $(settings.columns)).each(function () {
                    var thisWidgetSettings = minPro.getWidgetSettings(this.id);
                    if (thisWidgetSettings.removable) {
                        $('<a href="#" class="remove">FERMER</a>').mousedown(function (e) {
                            e.stopPropagation();    
                        }).click(function () {
                            if(confirm('Supprimer ce widget?')) {
                                $(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">OPTIONS</a>').mousedown(function (e) {
                            e.stopPropagation();    
                        }).toggle(function () {
                            $(this).css({backgroundPosition: '-82px 0', width: '40px'})
                                .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;"/>')
        		
        		//Rajouter des champs de type input
                            .append('<ul><li class="item"><label>Changer le titre?</label><input value="' + $('h3',this).text() + '"/></li>')
        		    
        		    
        		    
        		//Gestion du choix de la couleur
        		
        		
                            .append((function(){
                                var colorList = '<li class="item"><label>Couleurs:</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: ''})
                                .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 minPro = this,
                    $ = this.jQuery,
                    settings = this.settings,
                    $sortableItems = (function () {
                        var notSortable = '';
                        $(settings.widgetSelector,$(settings.columns)).each(function (i) {
                            if (!minPro.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');
                    }
                });
            }
          
        };
        
        minPro.init();
        



        Et les css associés :


        body,img,p,h1,h2,h3,h4,h5,h6,ul,ol {margin:0; padding:0; list-style:none; border:none;}
        
        
        body {font-size:0.8em; font-family:Arial,Verdana,Sans-Serif; background: #FFF;}
        a {color: black;}
        
        
        .color-yellow {background:#f2bc00;}
        .color-red    {background:#dd0000;}
        .color-blue   {background:#148ea4;}
        .color-white  {background:#dfdfdf;}
        .color-orange {background:#f66e00;}
        .color-green  {background:#8dc100;}
        .color-yellow h3,
        .color-white h3,
        .color-green h3
        	{color:#000;}
        .color-red h3,
        .color-blue h3,
        .color-orange h3
        	{color:#FFF;}
        
        #head {
            
          
            height: 200px;
        }
        
        #head .widget {
            margin: 40px 20px 0 20px;
            padding: 2px;
            -moz-border-radius: 4px;
            -webkit-border-radius: 4px;
        }
        
        #head .column{
            width:400px;
            top:0px;
            left:0px;
        }
        
        #head .widget .widget-head {
            color: #000;
            overflow: hidden;
            width: 100%;
            height: 30px;
            line-height: 30px;
        }
        
        #head .widget .widget-content {
            background: #333 url(img/widget-content-bg.png) repeat-x;
            padding: 0 5px;
            color: #DDD;
            -moz-border-radius-bottomleft: 2px;
            -moz-border-radius-bottomright: 2px;
            -webkit-border-bottom-left-radius: 2px;
            -webkit-border-bottom-right-radius: 2px;
            line-height: 1.2em;
            overflow: hidden;
        }
        #head .widget .widget-content p {
            padding: 0.8em 0;
            border-bottom: 1px solid #666;
        }
        #head .widget .widget-content img {
            float: right;
            margin: 10px;
            border: 1px solid #FFF;
        }
        
        
        #head .widget .widget-content pre {
            padding: 0.5em 5px;
            color: #EEE;
            font-size: 12px;
        }
        #head.widget .widget-content ul {
            padding: 5px 0 5px 20px;
            list-style: disc;
        }
        #head .widget .widget-content ul li {padding: 3px 0;}
        #head .widget .widget-content ul.images {
            padding: 7px 0 0 0;
            list-style: none;
            height: 1%;
        }
        #head .widget .widget-content ul.images li {
            display: inline;
            float: left;
        }
        #head .widget .widget-content ul.images img {
            display: inline;
            float: left;
            margin: 0 0 7px 7px;
        }
        
        
        
        
        
        
        #columns .column {
            float: right;
            width: 33.3%;
        		
        		min-height: 400px;
        		height: auto !important; 
        		height: 400px;
        }
        
        
        
        #columns #column1 .widget { margin: 30px 35px 0 25px; }
        #columns #column3 .widget { margin: 30px 25px 0 35px; }
        #columns .widget {
            margin: 30px 20px 0 20px;
            padding: 2px;
            -moz-border-radius: 4px;
            -webkit-border-radius: 4px;
        }
        #columns .widget .widget-head {
            color: #000;
            overflow: hidden;
            width: 100%;
            height: 30px;
            line-height: 30px;
        }
        #columns .widget .widget-head h3 {
            padding: 0 5px;
            float: left;
        }
        #columns .widget .widget-content {
            background: #333 url(img/widget-content-bg.png) repeat-x;
            padding: 0 5px;
            color: #DDD;
            -moz-border-radius-bottomleft: 2px;
            -moz-border-radius-bottomright: 2px;
            -webkit-border-bottom-left-radius: 2px;
            -webkit-border-bottom-right-radius: 2px;
            line-height: 1.2em;
            overflow: hidden;
        }
        #columns .widget .widget-content p {
            padding: 0.8em 0;
            border-bottom: 1px solid #666;
        }
        #columns .widget .widget-content img {
            float: right;
            margin: 10px;
            border: 1px solid #FFF;
        }
        #columns .widget .widget-content pre {
            padding: 0.5em 5px;
            color: #EEE;
            font-size: 12px;
        }
        #columns .widget .widget-content ul {
            padding: 5px 0 5px 20px;
            list-style: disc;
        }
        #columns .widget .widget-content ul li {padding: 3px 0;}
        #columns .widget .widget-content ul.images {
            padding: 7px 0 0 0;
            list-style: none;
            height: 1%;
        }
        #columns .widget .widget-content ul.images li {
            display: inline;
            float: left;
        }
        #columns .widget .widget-content ul.images img {
            display: inline;
            float: left;
            margin: 0 0 7px 7px;
        }
        
        
        body h1
        {
        font-size: 40px;
        font-family: "Comic Sans MS", Arial, Verdana, Sans-Serif;
        }
        




        .widget-head a.remove  {
            float: right;
            display: inline;
            background: url(img/buttons.gif) no-repeat -24px 0;
            width: 14px;
            height: 14px;
            margin: 8px 4px 8px 0;
            text-indent: -9999em;
            outline: none;
        }
        
        .widget-head a.edit  {
            float: right;
            display: inline;
            background: url(img/buttons.gif) no-repeat;
            width: 24px;
            height: 14px;
            text-indent: -9999em;
            margin: 8px 4px 8px 4px;
            outline: none;
        }
        
        .widget-head a.collapse  {
            float: left;
            display: inline;
            background: url(img/buttons.gif) no-repeat -52px 0;
            width: 14px;
            height: 14px;
            text-indent: -9999em;
            margin: 8px 0 8px 4px;
            outline: none;
        }
        
        .widget-placeholder { border: 2px dashed #999;}
        #column1 .widget-placeholder { margin: 30px 35px 0 25px; }
        #column2 .widget-placeholder { margin: 30px 20px 0 20px; }
        #column3 .widget-placeholder { margin: 30px 25px 0 35px; }
        
        .edit-box {
            overflow: hidden;
            background: #333 url(img/widget-content-bg.png) repeat-x;
            margin-bottom: 2px;
            padding: 10px 0;
        }
        
        .edit-box li.item {
            padding: 10px 0;
            overflow: hidden;
            float: left;
            width: 100%;
            clear: both;
        }
        
        
        .edit-box label {
            float: left;
            width: 30%;
            color: #FFF;
            padding: 0 0 0 10px;
        }
        
        .edit-box ul.colors li {
            width: 20px;
            height: 20px;
            border: 1px solid #EEE;
            float: left;
            display: inline;
            margin: 0 5px 0 0;
            cursor: pointer;
        }
        



        Je ne sais pas si ca t'aidera un peu plus.. (?)
        • Partager sur Facebook
        • Partager sur Twitter

        Question bête?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown