jueves, 12 de julio de 2012

jQuery: Autocomplete con resaltdo, tpl y subserach

$(function() {
            
                var projects = [
                    {
                        value: "jquery",
                        label: "jQuery",
                        desc: "the write less, do more, JavaScript library",
                        icon: "jquery_32x32.png"
                    },
                    {
                        value: "jquery-ui",
                        label: "jQuery UI",
                        desc: "the official user interface library for jQuery",
                        icon: "jqueryui_32x32.png"
                    },
                    {
                        value: "sizzlejs",
                        label: "Sizzle JS",
                        desc: "a pure-JavaScript CSS selector engine",
                        icon: "sizzlejs_32x32.png"
                    }
                ];

                function custom_source(request, response) {
                    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
                    response($.grep(projects, function(value) {
                        return matcher.test(value.label)
                            || matcher.test(value.desc);
                    }));
                }

                var auto = $( "#project" ).autocomplete({
                    minLength: 0,
                    source: custom_source, //projects o  "algo.php",
                    //                    search: "desc",
                    focus: function( event, ui ) {
                        $( "#project" ).val( ui.item.label );
                        return false;
                    },
                    select: function( event, ui ) {
                        $( "#project" ).val( ui.item.label );
                        $( "#project-id" ).val( ui.item.value );
                        $( "#project-description" ).html( ui.item.desc );
                        $( "#project-icon" ).attr( "src", "images/" + ui.item.icon );

                        return false;
                    }
                })
                .data( "autocomplete" )._renderItem = function( ul, item ) {                    
  //                  console.log(item);                    
//console.log($(this).val());
//console.log($("#project").val());

                    var mostrar = "<a>" + item.label + "<br>" + item.desc + "</a>";

                    if($("#project").val())
                        mostrar = __highlight(mostrar, $("#project").val());
                    
                    return $( "<li></li>" )
                    .data( "item.autocomplete", item )
                    .append( mostrar )
                    .appendTo( ul );
                };
                
//                console.info(auto);
                function __highlight(s, t) {
                  var matcher = new RegExp("("+$.ui.autocomplete.escapeRegex(t)+")", "ig" );
                  return s.replace(matcher, '<b style="color:blue">$1</b>');
                }

            });

Documentacion Oficial

Test Online:


jueves, 28 de junio de 2012

PHP: logueo con LDAP

<?php

function authLDAP($username, $password){
    $ldap_domain = 'midominio';

    $adServer = "miservidor";
    $ldapconn = ldap_connect($adServer) or die("Could not connect to LDAP server.");

    $ldaprdn = $username;    

    # Descomentar si la App corre bajo Apache2 sobre Windows Server
    #ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3)

    $ldapbind = ldap_bind($ldapconn, "$ldaprdn@$ldap_domain", $password);

    if($ldapbind)
        return true;
    else
        return false;
}

authLDAP("sad", "asd");

?>

jueves, 7 de junio de 2012

javascript: Simple Libreria js

(function(){
    var Iniciador =function(){
        this.nombre = '';
            
        this.saludar = function(){
            console.log('hola');            
            return this;
        } 

        this.despedir= function(){
            console.log('adios!');            
            return this;
        }                                    
    }
    this.C = new Iniciador();          
}).call(this);   

C.saludar()
console.log("saludar y despedir....")    
C.saludar().despedir();
Test rck:
http://jsfiddle.net/ric47121/AAn6e/

javascript: agregar metodos a una clase de forma dinamica (prototype)

var Persona =function(){
    this.nombre = '';

    this.saludar = function(){
        console.log('hola');            
    }       
}

Persona.prototype.despedir = function(){ //agrego metodo de forma dinamica
   console.log('adios');                    
}
      
var pepe = new Persona();

pepe.saludar();
pepe.despedir();
Test rck:
http://jsfiddle.net/ric47121/ayQwa/

jQuery: textbox disabled y enviado por POST

HTML
<select name="docTipo" id="solapaDatosPersonales_docTipo" class="columna2" onchange="cambioTipoDoc(this)">
 <option value="1">DNI</option>
 <option value="2">NO INFORMADO</option>    
</select>

<br/>
<input type="text" name="docNro" id="solapaDatosPersonales_docNro" class="columna4" value="asd"/>
JS
function cambioTipoDoc(control){
    console.log(control.value)
    if(control.value == 2){ //no informado
        //$("#solapaDatosPersonales_docNro").attr("disabled", "disabled");
        $("#solapaDatosPersonales_docNro").attr("readonly", "readonly");
        $("#solapaDatosPersonales_docNro").css("background", "#f0f0f0");
    }
    else{
        $("#solapaDatosPersonales_docNro").removeAttr("readonly");
         $("#solapaDatosPersonales_docNro").css("background", "#fff");
    }
}
Test rck:
http://jsfiddle.net/ric47121/nDhLe/

miércoles, 6 de junio de 2012

JavaScript: Colecciones findBy

function getprop(x) { return function(o) { return o[x]; } }
    
var pablo = {name: 'pablo',edad: 15};     
//var p ='name'
//console.log(pablo['name'])//pablo
//console.log(pablo[p])//pablo    
    
    var amigos = {
        arr_amigos : [{name: 'pepe',edad: 52},{name: 'ruben',edad: 12},{name: 'oscar',edad: 32}],
        findBy : function (prop, value){
                    return _.find(this.arr_amigos, function(p){ return p[prop] == value; });  
                }                                        
    }    
    
//console.log(amigos)
//console.log(_.find(amigos.arr_amigos, function(p){ return p.name == 'pepe'; })) //ok
console.log(amigos.findBy("name","pepe"))        //ok​​​​​​​​​​​

Test rck:
http://jsfiddle.net/ric47121/wnCKk/

UndersCore.js: map, filter, find (javascript como funcional)

/*
var res;

res = _.map([1, 2, 3], function(num){ return num * 3; });
console.log(res); //3,6,9

res = _.map({one : 1, two : 2, three : 3}, function(num, key){ return num * 3; });
console.log(res); //3,6,9
*/

/*------*/
var amigos = [{name: 'pepe',edad: 52},{name: 'ruben',edad: 12},{name: 'oscar',edad: 32}];

var amigosMayores = _.filter(amigos, function(p){ return p.edad > 18 })
console.log(amigosMayores); //pepe y oscar

var nombres = _.map(amigos, function(p){ return p.name })
console.log(nombres); //["pepe", "ruben", "oscar"] 
                                         
var pe = _.find(amigos, function(p){ return p.name == 'pepe'; });                                         
console.log(pe);

Test rck:
http://jsfiddle.net/ric47121/NPfQX/1/

Pagina Oficial:
http://documentcloud.github.com/underscore/