From f23d19923061d23a1cf7ca75de67f3441c6da4dc Mon Sep 17 00:00:00 2001 From: danielvincent <danielgrippi@gmail.com> Date: Fri, 15 Oct 2010 16:40:16 -0700 Subject: [PATCH] added slider to getting started flow --- app/views/layouts/application.html.haml | 1 + app/views/users/getting_started.html.haml | 162 ++++++++-------- public/javascripts/easySlider1.7.js | 226 ++++++++++++++++++++++ public/javascripts/view.js | 10 + public/stylesheets/sass/application.sass | 9 + 5 files changed, 327 insertions(+), 81 deletions(-) create mode 100644 public/javascripts/easySlider1.7.js diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0e21eb7de3..22a5a4f8a0 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -30,6 +30,7 @@ = javascript_include_tag 'fileuploader' = javascript_include_tag 'view', 'image_picker', 'stream' + = javascript_include_tag 'easySlider1.7' = render 'js/websocket_js' diff --git a/app/views/users/getting_started.html.haml b/app/views/users/getting_started.html.haml index 530c4038e5..b0ea13a361 100644 --- a/app/views/users/getting_started.html.haml +++ b/app/views/users/getting_started.html.haml @@ -10,84 +10,84 @@ .description Do the stuff below to further complete some things. -%h2 - %u - Edit your profile - âž” - Define your aspects âž” - Find your friends - - -%h3 - Your Profile - .description - This info will be available to whomever you connect with on Diaspora. - -%h4 - Your name - = text_field_tag :first_name, nil, :placeholder => "First name" - = text_field_tag :last_name, nil, :placeholder => "Last name" - -%h4 - Your birthday - %br - = select_date - -%h4 - Your bio - = text_area_tag :bio, nil, :placeholder => "Fill me out" - -%h4 - Your photo - %br - = file_field_tag :photo - - -%br -%br -%br -%h2 - Edit your profile âž” - %u - Define your aspects - âž” - Find your friends - -%h3 - Your aspects - .description - These will be blah blah blah blah and some stuff. - -%h4 - Aspect name - = text_field_tag :aspect_name, nil, :placeholder => "New aspect" - -%br -%br -%br -%h2 - Edit your profile âž” - Define your aspects âž” - %u - Find your friends - - -%h3 - Your friends - .description - Find your friends on Diaspora, Facebook, or send them an invite via email. - -.span-5 - %h4 - On Diaspora - = text_field_tag :diaspora_handle, nil, :placeholder => "Diaspora handle" - -.span-5 - %h4 - On Facebook - = text_field_tag :facebook_handle, nil, :placeholder => "Name" - -.span-5 - %h4 - Invite - = text_field_tag :email, nil, :placeholder => "Email", :type => "email" +#slider + %ul + %li + %h2 + %u + Edit your profile + âž” + Define your aspects âž” + Find your friends + + + %h3 + Your Profile + .description + This info will be available to whomever you connect with on Diaspora. + + %h4 + Your name + = text_field_tag :first_name, nil, :placeholder => "First name" + = text_field_tag :last_name, nil, :placeholder => "Last name" + + %h4 + Your birthday + %br + = select_date + + %h4 + Your bio + = text_area_tag :bio, nil, :placeholder => "Fill me out" + + %h4 + Your photo + %br + = file_field_tag :photo + + + %li + %h2 + Edit your profile âž” + %u + Define your aspects + âž” + Find your friends + + %h3 + Your aspects + .description + These will be blah blah blah blah and some stuff. + + %h4 + Aspect name + = text_field_tag :aspect_name, nil, :placeholder => "New aspect" + + + %li + %h2 + Edit your profile âž” + Define your aspects âž” + %u + Find your friends + + + %h3 + Your friends + .description + Find your friends on Diaspora, Facebook, or send them an invite via email. + + .span-5 + %h4 + On Diaspora + = text_field_tag :diaspora_handle, nil, :placeholder => "Diaspora handle" + + .span-5 + %h4 + On Facebook + = text_field_tag :facebook_handle, nil, :placeholder => "Name" + + .span-5 + %h4 + Invite + = text_field_tag :email, nil, :placeholder => "Email", :type => "email" diff --git a/public/javascripts/easySlider1.7.js b/public/javascripts/easySlider1.7.js new file mode 100644 index 0000000000..beaa2376e4 --- /dev/null +++ b/public/javascripts/easySlider1.7.js @@ -0,0 +1,226 @@ +/* + * Easy Slider 1.7 - jQuery plugin + * written by Alen Grakalic + * http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding + * + * Copyright (c) 2009 Alen Grakalic (http://cssglobe.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * Built for jQuery library + * http://jquery.com + * + */ + +/* + * markup example for $("#slider").easySlider(); + * + * <div id="slider"> + * <ul> + * <li><img src="images/01.jpg" alt="" /></li> + * <li><img src="images/02.jpg" alt="" /></li> + * <li><img src="images/03.jpg" alt="" /></li> + * <li><img src="images/04.jpg" alt="" /></li> + * <li><img src="images/05.jpg" alt="" /></li> + * </ul> + * </div> + * + */ + +(function($) { + + $.fn.easySlider = function(options){ + + // default configuration properties + var defaults = { + prevId: 'prevBtn', + prevText: 'Previous', + nextId: 'nextBtn', + nextText: 'Next', + controlsShow: true, + controlsBefore: '', + controlsAfter: '', + controlsFade: true, + firstId: 'firstBtn', + firstText: 'First', + firstShow: false, + lastId: 'lastBtn', + lastText: 'Last', + lastShow: false, + vertical: false, + speed: 800, + auto: false, + pause: 2000, + continuous: false, + numeric: false, + numericId: 'controls' + }; + + var options = $.extend(defaults, options); + + this.each(function() { + var obj = $(this); + var s = $("li", obj).length; + var w = $("li", obj).width(); + var h = $("li", obj).height(); + var clickable = true; + obj.width(w); + obj.height(h); + obj.css("overflow","hidden"); + var ts = s-1; + var t = 0; + $("ul", obj).css('width',s*w); + + if(options.continuous){ + $("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px")); + $("ul", obj).append($("ul li:nth-child(2)", obj).clone()); + $("ul", obj).css('width',(s+1)*w); + }; + + if(!options.vertical) $("li", obj).css('float','left'); + + if(options.controlsShow){ + var html = options.controlsBefore; + if(options.numeric){ + html += '<ol id="'+ options.numericId +'"></ol>'; + } else { + if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>'; + html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>'; + html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>'; + if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>'; + }; + + html += options.controlsAfter; + $(obj).after(html); + }; + + if(options.numeric){ + for(var i=0;i<s;i++){ + $(document.createElement("li")) + .attr('id',options.numericId + (i+1)) + .html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>') + .appendTo($("#"+ options.numericId)) + .click(function(){ + animate($("a",$(this)).attr('rel'),true); + }); + }; + } else { + $("a","#"+options.nextId).click(function(){ + animate("next",true); + }); + $("a","#"+options.prevId).click(function(){ + animate("prev",true); + }); + $("a","#"+options.firstId).click(function(){ + animate("first",true); + }); + $("a","#"+options.lastId).click(function(){ + animate("last",true); + }); + }; + + function setCurrent(i){ + i = parseInt(i)+1; + $("li", "#" + options.numericId).removeClass("current"); + $("li#" + options.numericId + i).addClass("current"); + }; + + function adjust(){ + if(t>ts) t=0; + if(t<0) t=ts; + if(!options.vertical) { + $("ul",obj).css("margin-left",(t*w*-1)); + } else { + $("ul",obj).css("margin-left",(t*h*-1)); + } + clickable = true; + if(options.numeric) setCurrent(t); + }; + + function animate(dir,clicked){ + if (clickable){ + clickable = false; + var ot = t; + switch(dir){ + case "next": + t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1; + break; + case "prev": + t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1; + break; + case "first": + t = 0; + break; + case "last": + t = ts; + break; + default: + t = dir; + break; + }; + var diff = Math.abs(ot-t); + var speed = diff*options.speed; + if(!options.vertical) { + p = (t*w*-1); + $("ul",obj).animate( + { marginLeft: p }, + { queue:false, duration:speed, complete:adjust } + ); + } else { + p = (t*h*-1); + $("ul",obj).animate( + { marginTop: p }, + { queue:false, duration:speed, complete:adjust } + ); + }; + + if(!options.continuous && options.controlsFade){ + if(t==ts){ + $("a","#"+options.nextId).hide(); + $("a","#"+options.lastId).hide(); + } else { + $("a","#"+options.nextId).show(); + $("a","#"+options.lastId).show(); + }; + if(t==0){ + $("a","#"+options.prevId).hide(); + $("a","#"+options.firstId).hide(); + } else { + $("a","#"+options.prevId).show(); + $("a","#"+options.firstId).show(); + }; + }; + + if(clicked) clearTimeout(timeout); + if(options.auto && dir=="next" && !clicked){; + timeout = setTimeout(function(){ + animate("next",false); + },diff*options.speed+options.pause); + }; + + }; + + }; + // init + var timeout; + if(options.auto){; + timeout = setTimeout(function(){ + animate("next",false); + },options.pause); + }; + + if(options.numeric) setCurrent(0); + + if(!options.continuous && options.controlsFade){ + $("a","#"+options.prevId).hide(); + $("a","#"+options.firstId).hide(); + }; + + }); + + }; + +})(jQuery); + + + diff --git a/public/javascripts/view.js b/public/javascripts/view.js index 26b3fea551..f8b2fb8b25 100644 --- a/public/javascripts/view.js +++ b/public/javascripts/view.js @@ -73,6 +73,9 @@ $(document).ready(function(){ $(".reshare_box").hide(); }; }); + + $("#slider").easySlider({speed:400, numeric:true}); + $("img", "#left_pane").tipsy({live:true}); $(".add_aspect_button", "#aspect_nav").tipsy({gravity:'w'}); @@ -133,3 +136,10 @@ $(".make_profile_photo").live("click", function(){ }); }); +$(".getting_started_box").live("click",function(evt){ + $(this).animate({ + left: parseInt($(this).css('left'),30) == 0 ? + -$(this).outerWidth() : + 0 + },function(evt){ $(this).css('left', '1000px')}); +}); diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 1414e73ece..9ba66b8df8 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -1243,3 +1243,12 @@ ul#breadcrumb &:last-child &:after :content '' + +#slider ul, #slider li + :margin 0 + :padding 0 + :list-style none + +#slider, #slider li + :width 1000px + :overflow hidden -- GitLab