<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5574167861091104541</id><updated>2024-09-11T21:22:36.959-05:00</updated><category term="SharePoint"/><category term="jQuery"/><category term="AspNet"/><category term="ExtJs"/><category term="Silverlight"/><category term="XML"/><title type='text'>Sharepoint - jQuery - ExtJs - AspNet</title><subtitle type='html'>Sharepoint Perú</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-5135189936116102545</id><published>2011-02-03T00:32:00.000-05:00</published><updated>2011-02-03T00:34:27.343-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ExtJs"/><title type='text'>Calendario Tipo Google Calendar con ExtJs</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Hace tiempo realice un proyecto sobre un calendario tipo GOOGLE que tenia que tener la funcionalidad de agregar eventos por fecha y hora definidas por el usuario. Por eso tuve la necesidad de usar el calendario de ExtJs. Pero utilice un calendario la cual un amigo mio Carlos Mendez de Mexico habia realizado cambios de la versión original y me pareció interesante la cual yo también adicione nuevas funcionalidades.    &lt;br /&gt;
&lt;br /&gt;
- Los archivos que utilice son:&lt;br /&gt;
&lt;pre class=&quot;brush: css;&quot;&gt;&lt;link href=&quot;Script/extJS/calendar/calendar.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt;
&lt;/pre&gt;&lt;pre class=&quot;brush: js;&quot;&gt;&lt;script src=&quot;Script/extJS/calendar/e2cs_pack_0.0.16.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;Script/extJS/calendar/locale/e2cs_es.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;Script/extJS/calendar/source/calendar.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;Script/extJS/calendar/source/monthview.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;Script/extJS/calendar/source/weekview.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;Script/extJS/calendar/source/dayview.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;Script/extJS/calendar/source/task.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script src=&quot;Script/js/ReservaArea.js&quot;&gt;
&lt;/script&gt;

&lt;/pre&gt;- Codigo para el calendario y algunas configuraciones adicionales. con acceso a Base de datos.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: js;&quot;&gt;/********** VALIDAR LAS FECHAS DESDE HASTA **************************/
Ext.apply(Ext.form.VTypes, {
    daterange : function(val, field) {
        var date = field.parseDate(val);
        if(!date){
            return;
        }
        if (field.startDateField &amp;amp;&amp;amp; (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
            var start = Ext.getCmp(field.startDateField);
            start.setMaxValue(date);
            start.validate();
            this.dateRangeMax = date;
        }
        else if (field.endDateField &amp;amp;&amp;amp; (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
            var end = Ext.getCmp(field.endDateField);
            end.setMinValue(date);
            end.validate();
            this.dateRangeMin = date;
        }
        return true;
    }
});/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
var ID_DNI = &quot;&quot;;
var ID_tipoarea = &quot;&quot;;
Ext.onReady(onReadyCallAreas);
function onReadyCallAreas()
{
    ID_tipoarea=cogerVariable(&quot;idtipoarea&quot;);
    if(ID_tipoarea !=&quot;&quot; &amp;amp;&amp;amp; ID_tipoarea != undefined )
    {
        readControls_Login();
      //  ID_DNI = ValidarSessionUsuario();
        //  var DNI_return =  &quot;&quot;;
        var AddResultItinerarios = new Ext.data.Connection();
        AddResultItinerarios.request({
            url: URLWebService + &#39;/SessionActive&#39;,
            params: {
                    tiposession: &#39;usuario&#39;
                    },
            method: &#39;POST&#39;,
            scope: this,
            callback: function(options, success, response){
            if (success){
                var xml = response.responseText;
                var re = /\n/;
                xml = xml.replace(re, &#39;&#39;);
                re = /\r/;
                xml = xml.replace(re, &#39;&#39;);
                var ObjectRes =  Ext.decode(xml);
                ObjectRes= ObjectRes.MensajeResultado;
                var return_Estado = ObjectRes.ESTADO;
                var return_Mensaje = ObjectRes.MENSAJE ;
                var return_ID_RETURN = ObjectRes.ID_RETURN ; /* dni usuario */
                var return_TIPO_RETURN = ObjectRes.TIPO_RETURN ; /* usuario - empresa */
                NombreLogin  = ObjectRes.DETALLE ;
                    if(parseInt(return_Estado) == 1)
                    {
                        if(return_TIPO_RETURN == &quot;usuario&quot;)
                            {
                                 ID_DNI = return_ID_RETURN;
                            }

                    }
                    CalendarReserva(ID_tipoarea);
          }
          }
        });
        
    }
    else
    {
        location.href=&quot;index.jsp&quot;;
    }
}

function cogerVariable(variable){
    var tipo = typeof variable;
    var direccion = location.href;

    if (tipo == &quot;string&quot;){
        var posicion = direccion.indexOf(&quot;?&quot;);
        posicion = direccion.indexOf(variable,posicion) + variable.length;
    }
    else if (tipo == &quot;number&quot;){
        var posicion=0;
        for (var contador = 0 ; contador &amp;lt; variable + 1 ; contador++){
            posicion = direccion.indexOf(&quot;=&quot;,++posicion);
            if (posicion == -1)posicion=999;
        }
    }
    if (direccion.charAt(posicion) == &quot;=&quot;){
        var final = direccion.indexOf(&quot;&amp;amp;&quot;,posicion);
        if (final == -1){final=direccion.length;};
        return direccion.substring(posicion + 1,final);
    }
}
var CReserva;
var tmptest;
var dataStore;

function CalendarReserva(v_idtipo){


﻿  var buttonx1= new Ext.menu.Item({id: &#39;buttonx1_task&#39;, iconCls:&#39;x-calendar-month-btnmv_task&#39;,﻿  text: &quot;Custom menu test 1&quot;});
﻿  var buttonx2= new Ext.menu.Item({id: &#39;buttonx2_task&#39;,iconCls:&#39;x-calendar-month-btnmv_task&#39;,﻿  text: &quot;Custom menu test 2&quot;});

﻿  var buttonz1= new Ext.menu.Item( {id: &#39;buttonz1_task&#39;, iconCls:&#39;x-calendar-month-btnmv_task&#39;,﻿  text: &quot;Custom action 1&quot;});
﻿  var buttonz2= new Ext.menu.Item( {id: &#39;buttonz2_task&#39;,iconCls:&#39;x-calendar-month-btnmv_task&#39;,﻿  text: &quot;Custom action 2&quot;});

﻿  var boton_daytimertask  = new Ext.menu.Item({id: &#39;btnTimerTask&#39;, iconCls:&#39;task_time&#39;, text: &quot;Set Task Alarm....&quot;});
﻿  var boton_daytimertaskb = new Ext.menu.Item({id: &#39;btnTimerOff&#39; , iconCls:&#39;task_time_off&#39;, text: &quot;Delete Task&#39;s Alarm....&quot;});
﻿  var button_sched_1= new Ext.menu.Item({id: &#39;buttonx1_task&#39;,iconCls:&#39;x-calendar-month-btnmv_task&#39;,text: &quot;Custom menu  on sched test 1&quot;});
﻿  var button_sched_2= new Ext.menu.Item({id: &#39;buttonx2_task&#39;,iconCls:&#39;x-calendar-month-btnmv_task&#39;,text: &quot;Custom menu  on sched test 2&quot;});

    dataStore = new Ext.data.JsonStore({
         root: &#39;Reservas&#39;,
         //totalProperty: &#39;oTotReg&#39;,
            id: &#39;__id&#39;,
            fields: [&#39;IdReserva&#39;,
                    &#39;fechaHasta&#39;,&#39;fechaDesde&#39;,
                    &#39;fechaRegistro&#39;,&#39;estado&#39;,
                    &#39;Color&#39;,
                    &#39;total&#39;, &#39;Detalle&#39;,
                    &#39;usuario.Dni&#39;,
                    &#39;usuario.Nombres&#39;,
                    &#39;usuario.Apellidos&#39;,
                    &#39;empresaarea.IdEmpresaArea&#39;,
                    &#39;empresaarea.Nombre&#39;,
                    &#39;empresaarea.Descripcion&#39;,
                    &#39;empresaarea.Imagen&#39;,
                    &#39;empresaarea.Precio&#39;,
                    &#39;empresaarea.Direccion&#39;
                ],
       url: URLWebService + &#39;/ListarReservas&#39;,
       baseParams: {
           method:   &#39;post&#39;,
            idarea: v_idtipo
       },
        remoteSort: true,
        timeout : 5000

    });
       dataStore.on(&#39;beforeload&#39;, function() {
            dataStore.baseParams = {
                 idarea: v_idtipo
            };
        });
         dataStore.load({callback: function(records,o,s){
                              CReserva.refreshCalendarView();
                        }});
        dataStore.on(&#39;exception&#39;, function(obj, type, action, options, response, arg){
            handleError(type, response);
        });

﻿  //var calendarstoretest= new Ext.data.Store({reader:reader,data:dummyData });
﻿  tmptest= new Ext.ECalendar({});  // for use functions in calendar.js
﻿  var weekrange = tmptest.getDateRangeOfWeekByDate(0,new Date());
﻿  CReserva = new Ext.ECalendar({
﻿  ﻿  bodyBorder:true,
﻿  ﻿  id:&#39;calendarReserva&#39;,
﻿  ﻿  name:&#39;calendarReserva&#39;,
﻿  ﻿  bodyBorder:true,
﻿  ﻿  header:false,
﻿  ﻿  title:&#39;Areas Deportivas Reservadas&#39;,
﻿  ﻿  mytitle:&#39; 001&#39;,
﻿  ﻿  height:520,
                width:630,
﻿  ﻿  fieldsRefer:{ //0.0.11
﻿  ﻿  ﻿  id:&#39;IdReserva&#39;,
﻿  ﻿  ﻿  subject:&#39;usuario.Dni&#39;,
﻿  ﻿  ﻿  description:&#39;Detalle&#39;,
﻿  ﻿  ﻿  color:&#39;Color&#39;,//------
﻿  ﻿  ﻿  startdate:&#39;fechaDesde&#39;,
﻿  ﻿  ﻿  enddate:&#39;fechaHasta&#39;,
﻿  ﻿  ﻿  priority:&#39;estado&#39;,
﻿  ﻿  ﻿  parent:&#39;usuario.Dni&#39;,
﻿  ﻿  ﻿  html:&#39;empresaarea.Nombre&#39;,
﻿  ﻿  ﻿  location:&#39;empresaarea.IdEmpresaArea&#39;,
                        alldaytask:&#39;total&#39; ,
                        isHoliday:&#39;Detalle&#39;
﻿  ﻿  },
﻿  ﻿  storeOrderby:&#39;usuario.Dni&#39;, ﻿  //0.0.11
﻿  ﻿  storeOrder:&#39;DESC&#39;,﻿  ﻿  //0.0.11
﻿  ﻿  showCal_tbar: true,
﻿  ﻿  showRefreshbtn:true,
﻿  ﻿  currentView: &#39;month&#39;,
﻿  ﻿  currentdate: new Date(),
﻿  ﻿  dateSelector: true,
﻿  ﻿  dateSelectorIcon: &#39;images/date.png&#39;,
﻿  ﻿  dateSelectorIconCls: &#39;x-cmscalendar-icon-date-selector&#39;,
﻿  ﻿  dateformat :&#39;d-m-Y&#39;,
﻿  ﻿  iconCls: &#39;x-cmscalendar-icon-main&#39;,
﻿  ﻿  dateSelector:true,
﻿  ﻿  store:dataStore,
﻿  ﻿  monitorBrowserResize:true,
﻿  ﻿  widgetsBind: {bindMonth:null,bindDay:null,binWeek:null},
﻿  ﻿  tipmaxLength: 200, ﻿  ﻿  //0.0.15
﻿  ﻿  tplTaskTip : new Ext.XTemplate(
﻿  ﻿  &#39;&lt;tpl for=&quot;.&quot;&gt;
{starxl}{startval}
{endxl}{endval}&lt;hr color=&quot;\&#39;#003366\&#39;noshade&quot; /&gt;
{details}&lt;/tpl&gt;&#39;
    ﻿  ),
﻿  ﻿  tplTaskZoom: new Ext.XTemplate(
﻿  ﻿  &#39;&lt;tpl for=&quot;.&quot;&gt;&#39;,
﻿  ﻿  ﻿  &#39;&lt;div class=&quot;ecal-show-basetasktpl-div&quot;&gt;&lt;b&gt;Subject:&lt;/b&gt;{subject}
&#39;,
﻿  ﻿  ﻿  &#39;&lt;b&gt;Starts:&lt;/b&gt;{startdate}
&lt;b&gt;Ends:&lt;/b&gt;{enddate}&#39;,
﻿  ﻿  ﻿  &#39;
&lt;b&gt;Details:&lt;/b&gt;


&lt;div&gt;&lt;hr /&gt;&lt;div&gt;{description}


&lt;div&gt;&lt;hr /&gt;&#39;,
﻿  ﻿  &#39;&#39;
﻿  ﻿  ),
﻿  ﻿  iconToday:&#39;images/cms_calendar.png&#39;,
﻿  ﻿  iconMonthView:&#39;images/calendar_view_month.png&#39;,
﻿  ﻿  iconWeekView:&#39;images/calendar_view_week.png&#39;,
﻿  ﻿  iconDayView:&#39;images/calendar_view_day.png&#39;,
﻿  ﻿  //iconSchedView:&#39;images/calendar_view_schedule.png&#39;, //0.0.10  // NEW :)
﻿  ﻿  loadMask:true, //0.0.12  we dont need this saple here cause all the data is loaded its suits better  for Serverside loading
﻿  ﻿  customMaskText:&#39;Reserva Area
Espere un momento...!
Procesando informacion.&#39;, //0.0.12
﻿  ﻿  //-------------------------------------------
﻿  ﻿  mview:{
﻿  ﻿  ﻿  header: true,
﻿  ﻿  ﻿  headerFormat:&#39;F-Y&#39;,
﻿  ﻿  ﻿  headerUseTpl:true,
﻿  ﻿  ﻿  headerTpl: new Ext.XTemplate(&#39;&lt;tpl for=&quot;.&quot;&gt;{title} - {datetouse:this.fmtfecha}&lt;/tpl&gt;&#39;,
﻿  ﻿  ﻿  ﻿  {
﻿  ﻿  ﻿  ﻿  ﻿  fmtfecha:function(value){
﻿  ﻿  ﻿  ﻿  ﻿  ﻿  return value.format(&#39;d/m/Y&#39;);
﻿  ﻿  ﻿  ﻿  ﻿  }
﻿  ﻿  ﻿  }),
﻿  ﻿  ﻿  headerData:{
﻿  ﻿  ﻿  ﻿  title:&#39;Reserva tu Area Deportiva - Vista Mensual &#39;,
﻿  ﻿  ﻿  ﻿  datetouse:new Date()
﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  headerButtons: true,
﻿  ﻿  ﻿  dayAction:&#39;viewday&#39;,    //dayAction: //viewday , event, window
﻿  ﻿  ﻿  //moreMenuItems:[buttonx1,buttonx2], /* botones del menu principal ***/
﻿  ﻿  ﻿  showTaskcount: false,
﻿  ﻿  ﻿  startDay:0,
﻿  ﻿  ﻿  taskStyle:&#39;margin-top:2px;&#39;, //Css style for text in day(if it has tasks and showtaskcount:true)
﻿  ﻿  ﻿  showTaskList: true,
﻿  ﻿  ﻿  showNumTasks:10,
﻿  ﻿  ﻿  TaskList_launchEventOn:&#39;click&#39;, //0.0.11
﻿  ﻿  ﻿  TaskList_tplqTip: new Ext.XTemplate( &#39;&lt;tpl for=&quot;.&quot;&gt;{location}{starxl}{startval}
{endxl}{endval}&lt;/tpl&gt;


&lt;hr color=&quot;\&#39;#003366\&#39;&quot; noshade=&quot;&quot; /&gt;{details}
&#39; ), //0.0.11
﻿  ﻿  ﻿  ShowMenuItems:[1,1,1,1,1,0],  //0.0.11  - ADD, nextmonth, prevmonth, chg Week , CHG Day, chg Sched,
﻿  ﻿  ﻿  //TaskList_moreMenuItems:[buttonz1,buttonz2], ﻿    //0.0.11
﻿  ﻿  ﻿  TaskList_ShowMenuItems:[1,1,1]//0.0.11 ﻿  - Add, DELETE, EDIT
﻿  ﻿  },
﻿  ﻿  wview:{
﻿  ﻿  ﻿  headerlabel:&#39;Week #&#39;,
﻿  ﻿  ﻿  headerButtons: true,
﻿  ﻿  ﻿  dayformatLabel:&#39;D j&#39;,
﻿  ﻿  ﻿  headerUseTpl:true,﻿  ﻿  ﻿  ﻿  ﻿  //0.0.15 new property to adapt the title header customizable
﻿  ﻿  ﻿  headerTpl: new Ext.XTemplate(&#39;&lt;tpl for=&quot;.&quot;&gt;{title}-Desde {initday:this.formatx} Hasta {enday:this.formatx}&lt;/tpl&gt;&#39;,{formatx:function(value){return value.format(&#39;d/m/Y&#39;);}}),
﻿  ﻿  ﻿  headerData:{title:&#39;Reserva tu Area Deportiva - Vista Semanal &#39;, initday:weekrange[0],enday:weekrange[1]},
﻿  ﻿  ﻿  //moreMenuItems:[buttonx1,buttonx2], /* botones del menu principal ***/
﻿  ﻿  ﻿  style: &#39;google&#39;,
﻿  ﻿  ﻿  hourFormat: &#39;G:i&#39;,
﻿  ﻿  ﻿  alldayTaksMore:&#39;window&#39;,
﻿  ﻿  ﻿  alldayTasksMaxView:6,
﻿  ﻿  ﻿  taskAdd_timer_dblclick:true, ﻿  //0.0.15
﻿  ﻿  ﻿  scrolltoHour:true,
﻿  ﻿  ﻿  startTime: &#39;10:00:00 am&#39;,
﻿  ﻿  ﻿  endTime:   &#39;10:00:00 pm&#39;,
﻿  ﻿  ﻿  store: null,
﻿  ﻿  ﻿  task_width:25,
﻿  ﻿  ﻿  tasksOffset:40,
﻿  ﻿  ﻿  headerDayClick:&#39;viewday&#39;,
﻿  ﻿  ﻿  ShowMenuItems:[1,1,1,1,1,0],﻿  //0.0.11  add, go next w , go prev w ,  chg month , chg day, chg sched
﻿  ﻿  ﻿  task_ShowMenuItems:[1,1,1,1,1], //0.0.11  add, delete, edit, go next w , go prev w
﻿  ﻿  ﻿  task_eventLaunch:&#39;dblclick&#39;,﻿  ﻿  //0.0.11
﻿  ﻿  ﻿  startDay:0, //sundays   0.0.14
﻿  ﻿  ﻿  task_clsOver:&#39;test_taskovercss&#39;,
﻿  ﻿  ﻿  forceTaskFit:true, // 0.0.14
﻿  ﻿  ﻿  allday24HinsideBody:true
﻿  ﻿  },
﻿  ﻿  dview:{
﻿  ﻿  ﻿  header:true,
﻿  ﻿  ﻿  headerFormat:&#39;l - d - F  - Y&#39;,
﻿  ﻿  ﻿  headerUseTpl:true,﻿  ﻿  //0.0.15 new property to adapt the title header customizable
﻿  ﻿  ﻿  headerTpl: new Ext.XTemplate(&#39;&lt;tpl for=&quot;.&quot;&gt;{title}-{datetouse:this.formatx}&lt;/tpl&gt;&#39;,﻿  {
﻿  ﻿  ﻿  ﻿  formatx:function(value){return value.format(&#39;l - d / F  / Y&#39;);}
﻿  ﻿  ﻿  }),﻿  ﻿  ﻿  //0.0.15
﻿  ﻿  ﻿  headerData:{title:&#39;Reserva tu Area Deportiva - Vista Por Dia &#39;,﻿  datetouse:new Date()},﻿  ﻿  ﻿  ﻿  //0.0.15
﻿  ﻿  ﻿  headerButtons: true,
﻿  ﻿  ﻿  moreMenuItems:[],
﻿  ﻿  ﻿  // day specific
﻿  ﻿  ﻿  hourFormat: &#39;G:i&#39;,
﻿  ﻿  ﻿  startTime: &#39;10:00:00 am&#39;,
﻿  ﻿  ﻿  endTime:   &#39;10:00:00 pm&#39;,
﻿  ﻿  ﻿  // task settings
﻿  ﻿  ﻿  store: null,
﻿  ﻿  ﻿  task_increment:1,
﻿  ﻿  ﻿  taskBaseColor: &#39;#ffffff&#39;,
﻿  ﻿  ﻿  task_useBorderStyle:true,﻿    ﻿  ﻿  // 0.0.15 (on day and week bodies for the moment)
﻿  ﻿  ﻿  task_useBordercolor:&#39;#225588&#39;,﻿  ﻿  // 0.0.15 companion property for task_useBorderStyle
﻿  ﻿  ﻿  task_width:68,
﻿  ﻿  ﻿  tasksOffset:&#39;5&#39;,
﻿  ﻿  ﻿  taskAdd_dblclick: true,﻿  ﻿  ﻿  ﻿  //added on 0.0.7
﻿  ﻿  ﻿  taskAdd_timer_dblclick:true,﻿  ﻿  //0.0.11
﻿  ﻿  ﻿  useMultiColorTasks: false,
﻿  ﻿  ﻿  multiColorTasks:[],
﻿  ﻿  ﻿  tasks:[],
﻿  ﻿  ﻿  //moreMenuItems:[﻿  boton_daytimertask,﻿  boton_daytimertaskb﻿  ],
﻿  ﻿  ﻿  task_clsOver:&#39;test_taskovercss&#39;,
﻿  ﻿  ﻿  ShowMenuItems:[1,1,1,1,1,0],﻿  ﻿  //0.0.11 ADD, next day, prev day , chg Month , CHG Week, chg Sched, (for daybody menu)
﻿  ﻿  ﻿  task_DDeditable:true, ﻿  ﻿  ﻿      //0.0.11
﻿  ﻿  ﻿  task_eventLaunch:&#39;dblclick&#39;,  ﻿  ﻿  //0.0.11 &#39;click, dblclick, if set to &#39;&#39; then no action is taken
﻿  ﻿  ﻿  task_ShowMenuItems:[1,1,1,1,1],﻿  ﻿  //0.0.11 ADD, delete, edit, Next day , Prev Day  (for Taks/events)
﻿  ﻿  ﻿  customHTMLinpos:&#39;before&#39;,﻿  ﻿  ﻿  //0.0.13  Feature request
﻿  ﻿  ﻿  forceTaskFit: false﻿  ﻿  ﻿  ﻿  ﻿  //0.0.14
﻿  ﻿  }
﻿  });

﻿  //dayClick only event on this object
﻿  CReserva.viewmonth.on({
﻿  ﻿  &#39;dayClick&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function(datex, mviewx, calx) {
﻿  ﻿  ﻿  ﻿  ﻿  //alert (&quot;dayclick event for &quot; + datex);
﻿  ﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  ﻿  scope:this
﻿  ﻿  },
﻿  ﻿  &#39;beforeMonthChange&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function(currentdate,newdate) {
﻿  ﻿  ﻿  ﻿  ﻿  CReserva.viewmonth.headerData.datetouse=newdate;
﻿  ﻿  ﻿  ﻿  ﻿  return true;
﻿  ﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  ﻿  scope:this
﻿  ﻿  },
﻿  ﻿  &#39;afterMonthChange&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function(newdate) {
﻿  ﻿  ﻿  ﻿  ﻿  //alert (&quot;Month changed to &quot; + newdate.format(&#39;m/Y&#39;) ) ;
﻿  ﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  ﻿  scope:this
﻿  ﻿  }
﻿  });
﻿  CReserva.viewweek.on({
﻿  ﻿  &#39;dblClickTaskAllDay&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function(task,dxview,calendar) {

﻿  ﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  ﻿  scope:this
﻿  ﻿  },
﻿  ﻿  &#39;beforeWeekChange&#39;:{
﻿  ﻿  ﻿  fn: function (currentDate, newDate){
﻿  ﻿  ﻿  ﻿  ﻿  var testdate=CReserva.viewweek.getDatesforWeek(newDate);
﻿  ﻿  ﻿  ﻿  ﻿  CReserva.viewweek.headerData.enday=testdate[1];
﻿  ﻿  ﻿  ﻿  ﻿  CReserva.viewweek.headerData.initday﻿  =testdate[0];
﻿  ﻿  ﻿  ﻿  ﻿  return true;
﻿  ﻿  ﻿  }
﻿  ﻿  },
﻿  ﻿  &#39;afterWeekChange&#39;:{
﻿  ﻿  ﻿  fn: function(newdate){
﻿  ﻿  ﻿  ﻿  return false;
﻿  ﻿  ﻿  }
﻿  ﻿  }
﻿  });
﻿  //&#39;beforeDayChange&#39; and  &#39;afterDayChange&#39; unique events on day view
﻿  CReserva.viewday.on({
﻿  ﻿  &#39;beforeDayChange&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function(currentdate, newdate) {
﻿  ﻿  ﻿  ﻿  ﻿  CReserva.viewday.headerData.datetouse=newdate;
﻿  ﻿  ﻿  ﻿  ﻿  return true;
﻿  ﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  ﻿  scope:this
﻿  ﻿  },
﻿  ﻿  &#39;afterDayChange&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function(newdate) {
﻿  ﻿  ﻿  ﻿  ﻿  //alert (&quot;changed to &quot; + newdate.format(&#39;m/d/Y&#39;));
﻿  ﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  ﻿  scope:this
﻿  ﻿  }
﻿  });
﻿  CReserva.on({
                &#39;onRefresh&#39;: {
﻿  ﻿  ﻿  ﻿  fn: function(refview,datatask,showItems,myactions) {
﻿  ﻿  ﻿  ﻿  ﻿  //alert(&#39;ss&#39;);
﻿  ﻿  ﻿  ﻿  }
﻿  ﻿  },
//﻿  ﻿  &#39;beforeContextMenuTask&#39;: {
//﻿  ﻿  ﻿  ﻿  fn: function(refview,datatask,showItems,myactions) {
//﻿  ﻿  ﻿  ﻿  ﻿  ﻿   return true;
//﻿  ﻿  ﻿  ﻿  }
//﻿  ﻿  },
// ﻿  ﻿  this code it&#39;s not necessary
//﻿  ﻿  &#39;beforeChangeDate&#39;: { //Ok revison made
//﻿  ﻿  ﻿  fn: function( newdate , calobj){
//﻿  ﻿  ﻿  ﻿  //return false;
//﻿  ﻿  ﻿  }
//﻿  ﻿  },
﻿  ﻿  &#39;beforeChangeView&#39;:{ // Ok revision made
﻿  ﻿  ﻿  ﻿  fn: function (newView,OldView,calendarOBJ){
﻿  ﻿  ﻿  ﻿  ﻿  if (newView==OldView){
﻿  ﻿  ﻿  ﻿  ﻿  ﻿  return false;
﻿  ﻿  ﻿  ﻿  ﻿  }
﻿  ﻿  ﻿  ﻿  ﻿  //var r=confirm(&quot;Change from &quot; + OldView + &quot; to &quot; + newView);
﻿  ﻿  ﻿  ﻿  ﻿  //return r;
﻿  ﻿  ﻿  ﻿  },scope:this
﻿  ﻿  },
//﻿  ﻿  &#39;beforeTaskDelete&#39;: {
//﻿  ﻿  ﻿  ﻿  fn: function (datatask,dxview) {
//﻿  ﻿  ﻿  ﻿  ﻿  return false;
//﻿  ﻿  ﻿  ﻿  ﻿  // do your stuff to check if the event/task could be deleted
//﻿  ﻿  ﻿  ﻿  }, scope:this
//﻿  ﻿  },
//﻿  ﻿  &#39;beforeTaskEdit&#39;: {
//﻿  ﻿  ﻿  ﻿  fn: function (datatask,dxview) {
//﻿  ﻿  ﻿  ﻿  ﻿  return false;
//﻿  ﻿  ﻿  ﻿  }, scope:this
//﻿  ﻿  },
﻿  ﻿  &#39;beforeTaskMove&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function (datatask,Taskobj,dxview,TaskEl) { // return &quot;true&quot; to cancel or &quot;false&quot; to go on

                                        var task = datatask;
                                        var dnitask = String(task[2]);
                                        /*verificar si el usuario existe y si las reservas es del usuario */
                                        var dniVal = String(ID_DNI);
                                        if(dniVal != &quot;&quot;)
                                        {
                                            if(dniVal == dnitask)
                                                {
                                                    return true;
                                                }else
                                                    {
                                                         Ext.Msg.alert(&#39;Alerta&#39;  , &#39;No tiene permisos para editar esta reserva.&#39;);
                                                        return false;
                                                    }
                                        }else
                                            {
                                                Ext.Msg.alert(&#39;Alerta&#39;  , &#39;Ingrese al Sistema&#39;);
                                                 return false;
                                            }
﻿  ﻿  ﻿  ﻿  }, scope:this
﻿  ﻿  },
﻿  ﻿  &#39;afterChangeDate&#39;:{
﻿  ﻿  ﻿  fn: function( newdate , calobj){
﻿  ﻿  ﻿  ﻿  //alert (&quot;Date changed to:&quot; + newdate.format(&#39;d-m-Y&#39;));
﻿  ﻿  ﻿  }
﻿  ﻿  },
﻿  ﻿  &#39;onChangeView&#39;:{
﻿  ﻿  ﻿  fn: function(newView, oldView, calobj){
﻿  ﻿  ﻿  ﻿  //Ext.get(&quot;samplebox_cview&quot;).update(&quot;&lt;b&gt;Current View:&lt;/b&gt; &quot; + newView);
                               // alert(&#39;onChangeView&#39; + newView + &#39;-&#39; + oldView);
﻿  ﻿  ﻿  },scope: this
﻿  ﻿  },
﻿  ﻿  &#39;taskAdd&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function( datex ) {
﻿  ﻿  ﻿  ﻿  ﻿  //alert (&quot;Adding Task for &quot; + datex);
                                        //ShowFormNuevaReserva(datex);
                                          var dniVal = String(ID_DNI);
                                        if(dniVal != &quot;&quot;)
                                        {
                                           ShowFormNuevaReserva(datex);
                                        }else
                                            {
                                                Ext.Msg.alert(&#39;Alerta&#39;  , &#39;Ingrese al Sistema para poder reservar&#39;);
                                                 return false;
                                            }

﻿  ﻿  ﻿  ﻿  }
﻿  ﻿  },
﻿  ﻿  &#39;taskDblClick&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function (task,dxview,calendar,refviewname,record){
                                        var dni = task[2];
                                        var datatest=&#39;&#39;;
﻿  ﻿  ﻿  ﻿  ﻿  //datatest+=&#39;id-task:&#39;  + task[1] + &#39; &#39; + task[2] + &#39;
&#39;;
﻿  ﻿  ﻿  ﻿  ﻿  datatest+=&#39;&#39;;
 ﻿  ﻿  ﻿  ﻿  ﻿  datatest+=&#39;&#39;;
 ﻿  ﻿  ﻿  ﻿  ﻿  datatest+=&#39;&#39;;
﻿  ﻿  ﻿  ﻿  ﻿  datatest+=&#39;


&lt;table style=&quot;width: 300px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Usuario:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39; + dni + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Desde:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;    + task[3] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Hasta:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;   + task[4] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Monto Total:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;S/. &#39;  + task[8] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Detalle:&lt;/b&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;     + task[9] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&#39;;
﻿  ﻿  ﻿  ﻿  ﻿  //datatest+=&#39;Location: &#39;     + task[7] + &#39;
&#39;;

﻿  ﻿  ﻿  ﻿  ﻿  Ext.Msg.alert(&#39;Detalle Reserva&#39;  , datatest);
﻿  ﻿  ﻿  ﻿  },
﻿  ﻿  ﻿  ﻿  scope:this
﻿  ﻿  },
﻿  ﻿  &#39;onTaskDelete&#39;:{
﻿  ﻿  ﻿  fn:function(datatask){
//﻿  ﻿  ﻿  ﻿  var r=confirm(&quot;Delete event &quot; + datatask[1] + &quot; &quot; + datatask[2] + &quot;...? YES/NO&quot; );
//﻿  ﻿  ﻿  ﻿  return r;
//
                                var task = datatask;
                                var dnitask = String(task[2]);
                                /*verificar si el usuario existe y si las reservas es del usuario */
                                var dniVal = String(ID_DNI);
                                if(dniVal != &quot;&quot;)
                                {
                                    if(dniVal == dnitask)
                                        {
                                            ShowPopupDeleteReserva(String(task[1]));
                                        }else
                                            {
                                                 Ext.Msg.alert(&#39;Alerta&#39;  , &#39;No tiene permisos para eliminar esta reserva.&#39;);
                                                return false;
                                            }
                                }else
                                    {
                                        Ext.Msg.alert(&#39;Alerta&#39;  , &#39;Ingrese al Sistema&#39;);
                                         return false;
                                    }



﻿  ﻿  ﻿  ﻿  // do your stuf for deletion and return the value
﻿  ﻿  ﻿  },scope:this
﻿  ﻿  },
﻿     &#39;afterTaskDelete&#39;:{
﻿     ﻿  ﻿  fn: function(datatask,action){
﻿  ﻿  ﻿  ﻿  //action ? alert(&quot;Event: &quot; + datatask[1] + &quot; &quot; + datatask[2] + &quot; Deleted&quot;): alert(&quot;Event Delete was canceled..!&quot;);
﻿  ﻿  ﻿  ﻿  // perform any action after deleting the event/task

﻿  ﻿  ﻿  },scope:this
 ﻿      },
﻿     &#39;onTaskEdit&#39;:{
﻿  ﻿  ﻿  fn:function(datatask){
                                var task = datatask;
                                var dnitask = String(task[2]);
                                /*verificar si el usuario existe y si las reservas es del usuario */
                                var dniVal = String(ID_DNI);
                                if(dniVal != &quot;&quot;)
                                {
                                    if(dniVal == dnitask)
                                        {
                                            ShowFormEditarReserva(String(task[1]));
                                        }else
                                            {
                                                 Ext.Msg.alert(&#39;Alerta&#39;  , &#39;No tiene permisos para editar esta reserva.&#39;);
                                                return false;
                                            }
                                }else
                                    {
                                        Ext.Msg.alert(&#39;Alerta&#39;  , &#39;Ingrese al Sistema&#39;);
                                         return false;
                                    }
﻿  ﻿  ﻿  ﻿  // do your stuf for editing and return the value
﻿  ﻿  ﻿  },scope:this
﻿      },
﻿      &#39;afterTaskEdit&#39;:{
﻿     ﻿  ﻿  fn: function(datatask,action){
﻿  ﻿  ﻿  ﻿  // perform any action after deleting the event/task
//﻿  ﻿  ﻿  ﻿  if (action){
//﻿  ﻿  ﻿  ﻿  ﻿  alert(&quot;Event: &quot; + datatask[1] + &quot; &quot; + datatask[2] + &quot; Edited&quot;);
//﻿  ﻿  ﻿  ﻿  } else {
//﻿  ﻿  ﻿  ﻿  ﻿  alert(&quot;Event Edit was canceled..!&quot;);
//﻿  ﻿  ﻿  ﻿  }
//﻿  ﻿  ﻿  ﻿  return false;
﻿  ﻿  ﻿  },scope:this
﻿      },
﻿  ﻿  &#39;TaskMoved&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function (newDataTask,Taskobj,dxview,TaskEl) {   // do some stuff
﻿  ﻿  ﻿  ﻿  ﻿  var test=21;  // use breakpoint in firefox here
﻿  ﻿  ﻿  ﻿  ﻿  var task = newDataTask;
                                        var dnitask = String(task[2]);
                                        /*verificar si el usuario existe y si las reservas es del usuario */
                                        var dniVal = String(ID_DNI);
                                        if(dniVal != &quot;&quot;)
                                        {
                                            if(dniVal == dnitask)
                                                {
                                                     /* actualizar la reserva */
                                                       Ext.MessageBox.show({
                                                           msg: &#39;Actualizando los Datos , por favor espere...&#39;,
                                                           progressText: &#39;Actualizando...&#39;,
                                                           width:300,
                                                           wait:true//,
                                                           //waitConfig: {interval:200}//,
                                                           //icon:&#39;ext-mb-download&#39;, //custom class in msg-box.html
                                                           //animEl: &#39;mb7&#39;
                                                     });
                                                     var AddResultItinerarios = new Ext.data.Connection();
                                                        AddResultItinerarios.request({
                                                            url: URLWebService + &#39;/UpdateReserva&#39;,
                                                            params: {
                                                                        tipoupdate:&#39;fecha&#39;,
                                                                        idreserva:String(task[1]),
                                                                        fechadesde:String(task[3]),
                                                                        fechahasta:String(task[4])
                                                                    },
                                                            method: &#39;POST&#39;,
                                                            scope: this,
                                                            callback: function(options, success, response){
                                                            if (success){
                                                                 Ext.MessageBox.hide();
                                                                var xml = response.responseText;
                                                                var re = /\n/;
                                                                xml = xml.replace(re, &#39;&#39;);
                                                                re = /\r/;
                                                                xml = xml.replace(re, &#39;&#39;);
                                                                var ObjectRes =  Ext.decode(xml);
                                                               // var ObjectRes= Ext.util.JSON.encode(xml);
                                                                ObjectRes= ObjectRes.MensajeResultado;
                                                                var return_Estado = ObjectRes.ESTADO;
                                                                var return_Mensaje = ObjectRes.MENSAJE ;
                                                                Ext.MessageBox.show({
                                                                   title: &#39;Resultado&#39;,
                                                                   msg: return_Mensaje,
                                                                   buttons: Ext.MessageBox.OK,
                                                                   fn: function(){
                                                                    if(return_Estado == 1)
                                                                    {
                                                                          dataStore.load({callback: function(records,o,s){
                                                                                  CReserva.refreshCalendarView();
                                                                            }});
                                                                    }else
                                                                    {
                                                                    }

                                                                   }
                                                               });
                                                          }
                                                          }
                                                        });
                                            /******************************************************************/
                                                }else
                                                    {

                                                    }
                                        }else
                                            {
                                              //  Ext.Msg.alert(&#39;Alerta&#39;  , &#39;Ingrese al Sistema&#39;);
                                            }


                                                  
//﻿  ﻿  ﻿  ﻿  ﻿  var myrecordtask = CReserva.store.getAt( (parseInt(task[6])-1) ); //Alert...!   base number of index are 1  not 0
//﻿  ﻿  ﻿  ﻿  ﻿  myrecordtask.set(&#39;startdate&#39;,task[3] );
//﻿  ﻿  ﻿  ﻿  ﻿  myrecordtask.set(&#39;enddate&#39;,task[4] );
//﻿  ﻿  ﻿  ﻿  ﻿  CReserva.store.commitChanges();

﻿  ﻿  ﻿  ﻿  }, scope:this
﻿  ﻿  },
﻿  ﻿  &#39;customMenuAction&#39;:{
﻿  ﻿  ﻿  ﻿  fn: function (MenuId, Currentview,datatask,objEl,dxview){
﻿  ﻿  ﻿  ﻿  ﻿  var datatest = &#39;&#39;;
                                        var task;
                                        var dni;
﻿  ﻿  ﻿  ﻿  ﻿  if (Currentview==&#39;month&#39;){
﻿  ﻿  ﻿  ﻿  ﻿  ﻿  task = datatask;
                                                dni = task[2];
                                                  datatest=&#39;&#39;;
                                                    //datatest+=&#39;id-task:&#39;  + task[1] + &#39; &#39; + task[2] + &#39;
&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;


&lt;table style=&quot;width: 300px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Usuario:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39; + dni + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Desde:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;    + task[3] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Hasta:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;   + task[4] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Monto Total:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;S/. &#39;  + task[8] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Detalle:&lt;/b&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;     + task[9] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&#39;;
                                                    //datatest+=&#39;Location: &#39;     + task[7] + &#39;
&#39;;


                                                Ext.Msg.alert(&#39;Detalle Reserva&#39;  , datatest);
﻿  ﻿  ﻿  ﻿  ﻿  } else if (Currentview==&#39;day&#39;){
﻿  ﻿  ﻿  ﻿  ﻿  ﻿  task = datatask;
                                                dni = task[2];
                                                 datatest=&#39;&#39;;
                                                    //datatest+=&#39;id-task:&#39;  + task[1] + &#39; &#39; + task[2] + &#39;
&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;


&lt;table style=&quot;width: 300px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Usuario:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39; + dni + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Desde:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;    + task[3] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Hasta:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;   + task[4] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Monto Total:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;S/. &#39;  + task[8] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Detalle:&lt;/b&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;     + task[9] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&#39;;
                                                    //datatest+=&#39;Location: &#39;     + task[7] + &#39;
&#39;;

                                                Ext.Msg.alert(&#39;Detalle Reserva&#39;  , datatest);
﻿  ﻿  ﻿  ﻿  ﻿  } else if (Currentview==&#39;week&#39;){
﻿  ﻿  ﻿  ﻿  ﻿  ﻿  task = datatask;
                                                dni = task[2];
                                                datatest=&#39;&#39;;
                                                    //datatest+=&#39;id-task:&#39;  + task[1] + &#39; &#39; + task[2] + &#39;
&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;


&lt;table style=&quot;width: 300px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Usuario:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39; + dni + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Desde:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;    + task[3] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Hasta:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;   + task[4] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Monto Total:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;S/. &#39;  + task[8] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Detalle:&lt;/b&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;     + task[9] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&#39;;
                                                    //datatest+=&#39;Location: &#39;     + task[7] + &#39;
&#39;;

                                                Ext.Msg.alert(&#39;Detalle Reserva&#39;  , datatest);
﻿  ﻿  ﻿  ﻿  ﻿  } else if (Currentview==&#39;scheduler&#39;){
﻿  ﻿  ﻿  ﻿  ﻿  ﻿  task = datatask;
                                                dni = task[2];
                                                 datatest=&#39;&#39;;
                                                    //datatest+=&#39;id-task:&#39;  + task[1] + &#39; &#39; + task[2] + &#39;
&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;&#39;;
                                                    datatest+=&#39;


&lt;table style=&quot;width: 300px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Usuario:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39; + dni + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Desde:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;    + task[3] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Hasta:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;   + task[4] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Monto Total:&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;S/. &#39;  + task[8] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;b&gt;Detalle:&lt;/b&gt; &lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&#39;     + task[9] + &#39;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&#39;;
                                                    //datatest+=&#39;Location: &#39;     + task[7] + &#39;
&#39;;

                                                Ext.Msg.alert(&#39;Detalle Reserva&#39;  , datatest);
﻿  ﻿  ﻿  ﻿  ﻿  }
﻿  ﻿  ﻿  ﻿  },scope:this
﻿  ﻿  }

﻿  });
﻿  CReserva.render(&#39;calendar&#39;);

           
      // CReserva.refreshCalendarView();
﻿  Ext.EventManager.onWindowResize( function(){CReserva.refreshCalendarView();});
}

function handleError(type, response){
    switch (type)
    {
        case &#39;remote&#39;:
            alert(response.raw.errors);
            break;
        case &#39;response&#39;:
            if ((response.isTimeout !== undefined) &amp;amp;&amp;amp; (response.isTimeout === true))
            {
                alert(&#39;The request has timed out. Please try again.&#39;)
            }
            else
            {
                alert(&#39;An unexpected error has occured.&#39;);
            }
            break;
    }
}

function ValidarSessionUsuario()
 {
   var DNI_return =  &quot;&quot;;
    var AddResultItinerarios = new Ext.data.Connection();
    AddResultItinerarios.request({
        url: URLWebService + &#39;/SessionActive&#39;,
        params: {
                tiposession: &#39;usuario&#39;
                },
        method: &#39;POST&#39;,
        scope: this,
        callback: function(options, success, response){
        if (success){
            var xml = response.responseText;
            var re = /\n/;
            xml = xml.replace(re, &#39;&#39;);
            re = /\r/;
            xml = xml.replace(re, &#39;&#39;);
            var ObjectRes =  Ext.decode(xml);
            ObjectRes= ObjectRes.MensajeResultado;
            var return_Estado = ObjectRes.ESTADO;
            var return_Mensaje = ObjectRes.MENSAJE ;
            var return_ID_RETURN = ObjectRes.ID_RETURN ; /* dni usuario */
            var return_TIPO_RETURN = ObjectRes.TIPO_RETURN ; /* usuario - empresa */
                if(parseInt(return_Estado) == 1)
                {
                    if(return_TIPO_RETURN == &quot;usuario&quot;)
                        {
                             DNI_return = return_ID_RETURN;
                        }
                   
                }
      }
      }
    });
    return DNI_return;
 }

 /********** FORM PANEL PARA EDITAR LA RESERVA******************************************/
var winIti ;
var panelContentIti ;

function ShowFormEditarReserva(IdReserva)
{
    try
    {
        //fechaSel
      var record =  dataStore.getAt(dataStore.find(&#39;IdReserva&#39;,IdReserva));

      /* validar si la reserva ya esta confirmada */
      var estadoConf = record.data.estado;
      if(String(estadoConf)== &quot;2&quot;)
          {
               Ext.Msg.alert(&#39;Alerta&#39;  , &#39;La reserva ya fue confirmada. No puede editar.&#39;);
               return false;
          }


      var dni_ = record.data[&#39;usuario.Dni&#39;];
      var fecha_ = record.data.fechaDesde;
      var detalle_ = record.data.Detalle;
        //var fecha = Ext.util.Format.date(fechaSel, &#39;d/m/Y g:i a&#39;);
        var fechaSel = Ext.util.Format.date(fecha_, &#39;d/m/Y&#39;);
      //  alert(fechaSel);

    var var_hora_sal_edit =  record.data.fechaDesde.substring(11,16);

    var var_hora_ret_edit = record.data.fechaHasta.substring(11,16);



     var txtusuario = new Ext.form.TextField({
        name: &#39;txtusuario&#39;,
        id: &#39;txtusuario&#39;,
        fieldLabel: &#39;Usuario&#39;,
        allowBlank:false,
        readOnly: true,
        value:dni_,
        align:&#39;left&#39;,
        width:170
    });
﻿   var txtdetalle = new Ext.form.TextArea({
        name: &#39;txtdetalle&#39;,
        id: &#39;txtdetalle&#39;,
        fieldLabel: &#39;Detalle&#39;,
        allowBlank:true,
        value:detalle_,
        readOlny: true,
        align:&#39;left&#39;,
        width:360
    });
﻿   /********** CREAR LA FECHA SALIDA *****************/
    var  startDateEdit= new Ext.form.DateField ({
        name: &#39;startDateEdit&#39;,
        id: &#39;startDateEdit&#39;,
        width : 100,
        value:fechaSel,
        format : &quot;d/m/Y&quot;,
        //vtype: &#39;daterange&#39;,
        //endDateField: &#39;endDateEdit&#39; ,
        fieldLabel:&#39;Fecha Desde&#39;,
        allowBlank:false,
        altFormats : &quot;d/m/y&quot;,
        readOnly:true

    });
    var startDate_hora = new Ext.form.TimeField({
              fieldLabel:&#39;Hora Desde&#39;,
                name: &#39;startDate_hora&#39;,
                id: &#39;startDate_hora&#39;,
                //format : &#39;g:i a&#39;,
                value:var_hora_sal_edit,
              format:&quot;H:i a&quot;,
                width:100 ,
                increment: 60,
                editable:false,
                 minValue: &#39;10:00am&#39;,
                 maxValue: &#39;22:00pm&#39;,
                        allowBlank:false
        });
    /********** CREAR LA FECHA RETORNO *****************/

  //  endDateEdit.setValue(fechaSel + 1 );
    var endDate_hora = new Ext.form.TimeField({
              fieldLabel:&#39;Hora Hasta&#39;,
                name: &#39;endDate_hora&#39;,
                id: &#39;endDate_hora&#39;,
               format:&quot;H:i a&quot;,
               value:var_hora_ret_edit,
                minValue: &#39;10:00am&#39;,
                 maxValue: &#39;22:00pm&#39;,
                width:100 ,
                increment: 60,
                editable:false,
                        allowBlank:false

        });



    /*********************/
           if (!winIti) {

            panelContentIti = new Ext.form.FormPanel({
                labelWidth: 75,
                xtype: &#39;panel&#39;,
                frame:true,
                region:&#39;center&#39;,
                layout: &#39;form&#39;,
                bodyStyle:&#39;padding:5px 5px 0&#39;,
                width: 480,
                 items: [

                      {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnWidth: .6,
                            layout: &#39;form&#39;,
                            items: [txtusuario]
                        }
                         ,
                        {
                            columnWidth:.4,
                            layout: &#39;form&#39;
                        } ]
                    } ,
                    {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnWidth: .5,
                            layout: &#39;form&#39;,
                            items: [startDateEdit]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: &#39;form&#39;//,
                          //  items: [ startDate_hora ]
                        } ]
                    } ,
                      {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnWidth: .5,
                            layout: &#39;form&#39;,
                            items: [startDate_hora]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: &#39;form&#39;,
                            items: [ endDate_hora ]
                        } ]
                    } ,
                    txtdetalle ,
                     {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnHeight:.2,
                            layout: &#39;form&#39;
                        }
                         ]
                    }
                ],
                   buttons: [{
                    text: &#39;Guardar&#39;,
                    id:&#39;btnSave&#39;,
                    handler: function()
                    {
                        if(!panelContentIti.getForm().isValid())
                        {
                          return false;
                        }

                        var _txtusuario=  Ext.get(&#39;txtusuario&#39;).dom;
                        var _txtdetalle=  Ext.get(&#39;txtdetalle&#39;).dom;
                        var _startDateEdit =  Ext.get(&#39;startDateEdit&#39;).dom;
                        var _startDate_hora =  Ext.get(&#39;startDate_hora&#39;).dom;
                      //  var _endDateEdit =  Ext.get(&#39;endDateEdit&#39;).dom;
                        var _endDate_hora =  Ext.get(&#39;endDate_hora&#39;).dom;

                        if(_txtusuario.value == &quot;&quot;)
                        {
                            _txtusuario.focus();
                                Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Faltan ingresar datos!.&#39;);
                            return false;
                        }

                        if(_startDateEdit.value == &quot;&quot;)
                        {
                            _startDateEdit.focus();
                                Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Faltan ingresar datos!.&#39;);
                            return false;
                        }
//                        if(_endDateEdit.value == &quot;&quot;)
//                        {
//                            _endDateEdit.focus();
//                                Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Faltan ingresar datos!.&#39;);
//                            return false;
//                        }

//                        if(!_startDateEdit.validate())
//                        {
//                            _startDateEdit.focus();
//﻿                          Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Campo incorrecto!.&#39;);
//                            return false;
//                        }

//                        if(!_endDateEdit.validate())
//                        {
//                            _endDateEdit.focus();
//﻿                          Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Campo incorrecto!.&#39;);
//                            return false;
//                        }
                        _startDateEdit =   _startDateEdit.value;
                        _startDate_hora = _startDate_hora.value;
                        var iLen_e = String(_startDate_hora).length;
                        var s_hora_em_ = String(_startDate_hora).substring(iLen_e, iLen_e - 2).toUpperCase().trim();
                        var new_hora_em =String(_startDate_hora).substring(0, iLen_e - 2) ;
                        var HIni_In= new_hora_em;
                        if(s_hora_em_ == &#39;AM&#39;) {new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 am&#39; ;}
                        else{new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 pm&#39; ;}

                       _endDate_hora = _endDate_hora.value;
                        var iLen_ef = String(_endDate_hora).length;
                        var s_hora_fin_ = String(_endDate_hora).substring(iLen_ef, iLen_ef - 2).toUpperCase().trim();
                        var new_hora_fin =String(_endDate_hora).substring(0, iLen_ef - 2) ;
                        var HFin_In= new_hora_fin;
                        if(s_hora_fin_ == &#39;AM&#39;) {new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 am&#39; ;}
                        else{new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 pm&#39; ;}
                           /**********************************/

 
﻿  var fec = _startDateEdit.split(&quot;/&quot;);
        var horai = HIni_In.split(&quot;:&quot;);
        var horaf =  HFin_In.split(&quot;:&quot;);
﻿  var dat1 = new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horai[0]),parseFloat(horai[1]),00);
﻿  var dat2 =  new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horaf[0]),parseFloat(horaf[1]),00);

﻿  var fin = dat2.getTime() - dat1.getTime();

        var horasVal = parseFloat(fin);
        if(horasVal &amp;lt;= 0)
            {
                   Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;La fecha hasta debe ser mayor a la fecha desde!.&#39;);
                   return false;
            }
﻿  var Nro_Horas = Math.floor(fin / (1000 * 60 * 60 ));

/** verificar si existe una reserva en esa fecha */
   var objec = dataStore;
   var fec_v = fec[1] + &#39;/&#39; + fec[0] + &#39;/&#39; + fec[2];
   var horaI_v = _startDate_hora.substring(0, 2);
   var horaF_v = _endDate_hora.substring(0, 2);
    var estPrue= false;
    for(var i = 0; i &amp;lt;  objec.getCount(); i = i +1)
    {
        var fechaDesdeV =objec.data.get(i).data.fechaDesde ;
        var fechaHastaV =objec.data.get(i).data.fechaHasta ;
        var id_reservV =objec.data.get(i).data.IdReserva ;
        var fechaDesde_ =fechaDesdeV.substring(0, 10) ;

  //var record =  dataStore.getAt(dataStore.find(&#39;IdReserva&#39;,IdReserva));
       
        if(fechaDesde_ == fec_v)
        {
             var horaCompletaIni_v =fechaDesdeV.substring(11, 13);
             var horaCompletaFin_v =fechaHastaV.substring(11, 13);

             var horaIrecord =parseInt(record.data.fechaDesde.substring(11, 13));
             var horaFrecord =parseInt(record.data.fechaHasta.substring(11, 13));
//             alert(parseInt(horaI_v) +&#39; &amp;gt;= &#39; +parseInt(horaIrecord) +&#39; &amp;amp;&amp;amp; &#39; + parseInt(horaI_v) +&#39; &amp;lt;= &#39; +
//                 parseInt(horaFrecord)+&#39; &amp;amp;&amp;amp; &#39; + parseInt(horaF_v)+&#39; &amp;gt;= &#39; + parseInt(horaIrecord)+&#39; &amp;amp;&amp;amp; &#39; + parseInt(horaF_v)+&#39; &amp;lt;= &#39; +
//                 parseInt(horaFrecord));
             if((parseInt(horaI_v) &amp;gt;= parseInt(horaIrecord)) &amp;amp;&amp;amp; (parseInt(horaI_v) &amp;lt;= parseInt(horaFrecord)) &amp;amp;&amp;amp; (parseInt(horaF_v) &amp;gt;= parseInt(horaIrecord)) &amp;amp;&amp;amp; (parseInt(horaF_v) &amp;lt;= parseInt(horaFrecord)))
                 {

                     estPrue= false;
                     break;
                 }

               if(parseInt(id_reservV) != parseInt(IdReserva))
                   {
                        if(parseInt(horaI_v) == parseInt(horaCompletaIni_v))
                         {
                             estPrue = true; /**existe */
                             break;
                         }
                       if(parseInt(horaF_v) == parseInt(horaCompletaFin_v))
                         {
                             estPrue = true; /**existe */
                             break;
                         }
                        if((parseInt(horaI_v) &amp;gt; parseInt(horaCompletaIni_v)) &amp;amp;&amp;amp; (parseInt(horaI_v) &amp;lt; parseInt(horaCompletaFin_v)) )
                         {
                             estPrue = true; /**existe */
                             break;
                         }
                          if((parseInt(horaF_v) &amp;gt; parseInt(horaCompletaIni_v)) &amp;amp;&amp;amp; (parseInt(horaF_v) &amp;lt; parseInt(horaCompletaFin_v)) )
                         {
                             estPrue = true; /**existe */
                             break;
                         }

                   }

        }
    }
      if(estPrue)
            {
                   Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;En la hora seleccionada ya existe una reserva!.&#39;);
                   return false;
            }
﻿  //return dias;
     Ext.MessageBox.show({
       msg: &#39;Guardando los Datos , por favor espere...&#39;,
       progressText: &#39;Guardando...&#39;,
       width:300,
       wait:true//,
       //waitConfig: {interval:200}//,
       //icon:&#39;ext-mb-download&#39;, //custom class in msg-box.html
       //animEl: &#39;mb7&#39;
 });

 var AddResultItinerarios = new Ext.data.Connection();
                    AddResultItinerarios.request({
                        url: URLWebService + &#39;/UpdateReserva&#39;,
                        params: {
                                tipoupdate:&#39;reserva&#39;,
                                fechadesde: String(_startDateEdit + &#39; &#39; + new_hora_em),
                                fechahasta: String(_startDateEdit + &#39; &#39; +new_hora_fin),
                                dni:_txtusuario.value.replace(/^\s*|\s*$/g,&quot;&quot;),
                                idempresaarea: String(ID_tipoarea),
                                horas:String(Nro_Horas),
                                detalle:_txtdetalle.value.replace(/^\s*|\s*$/g,&quot;&quot;),
                                idreserva: String(IdReserva)
                                },
                        method: &#39;POST&#39;,
                        scope: this,
                        callback: function(options, success, response){
                        if (success){
                              Ext.MessageBox.hide();
                            var xml = response.responseText;
                            var re = /\n/;
                            xml = xml.replace(re, &#39;&#39;);
                            re = /\r/;
                            xml = xml.replace(re, &#39;&#39;);
                            var ObjectRes =  Ext.decode(xml);
                            ObjectRes= ObjectRes.MensajeResultado;
                            var return_Estado = ObjectRes.ESTADO;
                            var return_Mensaje = ObjectRes.MENSAJE ;
                            Ext.MessageBox.show({
                               title: &#39;Resultado&#39;,
                               msg: return_Mensaje,
                               buttons: Ext.MessageBox.OK,
                               fn: function(){
                                if(return_Estado == 1)
                                {
                                    winIti.close();
                                      dataStore.load({callback: function(records,o,s){
                                              CReserva.refreshCalendarView();
                                        }});
                                   // CReserva.refreshCalendarView();
                                }else
                                {
                                }

                               }
                           });
                      }
                      }
                    });

                      
                    }
                    }, {
                    text: &#39;Cancelar&#39;,
                    handler: function(){
                       winIti.close();
                    }
                 }]
            });
            winIti = new Ext.Window({
                title: &#39;EDITAR RESERVA&#39;,
                id:&#39;winIti&#39; ,
                closable: false,
                resizable: false,
                hideParent :false,
                autoScroll:true,
                closeAction: &#39;close&#39;,
                width: 500,
                border:false,
                modal:true,
                plain: true,
                autoScroll:true,
                listeners:{show:function() {
                    this.loadMask = new Ext.LoadMask(this.body, {
                        msg:&#39;Espere por favor...&#39;
                    });
                }} ,
                items: [panelContentIti]
            });
            
           winIti.on(&#39;beforehide&#39;,destroyProjectWindowIti);
       }
        winIti.show();
    }
    catch(err){
        alert(err.description);
    }
}

function destroyProjectWindowIti() {
﻿  if (winIti != null) {
﻿  ﻿  winIti = null;
﻿  }
}
 /********** FORM PANEL PARA NUEVA RESERVA******************************************/
var winNuevReserva ;
var panelContentNewreserva ;

function ShowFormNuevaReserva(fechaSel)
{
    try
    {
        //var fecha = Ext.util.Format.date(fechaSel, &#39;d/m/Y g:i a&#39;);
        var fechaSel = Ext.util.Format.date(fechaSel, &#39;d/m/Y&#39;);
      //  alert(fechaSel);
    //var var_fecha_sal = fecha.substring(0,10);
//    var var_hora_sal =  var_fecha_sal_.substring(11,var_fecha_sal_.lenght);
//    var var_hora_sal_AP =  var_fecha_sal_.substring(16,var_fecha_sal_.lenght);
//    var_hora_sal =var_hora_sal.substring(0,5).trim() + &#39; &#39; + replaceAll(var_hora_sal_AP,&#39;.&#39;,&#39;&#39;).toUpperCase().trim();

 //   var var_fecha_ret = fecha.substring(0,10);
//    var var_hora_ret = var_fecha_ret_.substring(11,var_fecha_ret_.lenght);
//    var var_hora_ret_AP =  var_fecha_ret_.substring(16,var_fecha_ret_.lenght);
//    var_hora_ret =var_hora_ret.substring(0,5).trim() + &#39; &#39; + replaceAll(var_hora_ret_AP,&#39;.&#39;,&#39;&#39;).toUpperCase().trim();
    var d_fecha = new Date();
    d_fecha.setDate(d_fecha.getDate()+3);
    d_fecha = Ext.util.Format.date(d_fecha, &#39;d/m/Y&#39;);

     var txtusuario = new Ext.form.TextField({
        name: &#39;txtusuario&#39;,
        id: &#39;txtusuario&#39;,
        fieldLabel: &#39;Usuario&#39;,
        allowBlank:false,
        readOnly: true,
        value:ID_DNI,
        align:&#39;left&#39;,
        width:170
    });
﻿   var txtdetalle = new Ext.form.TextArea({
        name: &#39;txtdetalle&#39;,
        id: &#39;txtdetalle&#39;,
        fieldLabel: &#39;Detalle&#39;,
        allowBlank:true,
        readOlny: true,
        align:&#39;left&#39;,
        width:360
    });
﻿   /********** CREAR LA FECHA SALIDA *****************/
    var  startDateEdit= new Ext.form.DateField ({
        name: &#39;startDateEdit&#39;,
        id: &#39;startDateEdit&#39;,
        width : 100,
        value:fechaSel,
        format : &quot;d/m/Y&quot;,
        minValue:String(d_fecha),
        //vtype: &#39;daterange&#39;,
        //endDateField: &#39;endDateEdit&#39; ,
        fieldLabel:&#39;Fecha Desde&#39;,
        allowBlank:false,
        altFormats : &quot;d/m/y&quot;

    });
    var startDate_hora = new Ext.form.TimeField({
              fieldLabel:&#39;Hora Desde&#39;,
                name: &#39;startDate_hora&#39;,
                id: &#39;startDate_hora&#39;,
                //format : &#39;g:i a&#39;,
              format:&quot;H:i a&quot;,
                width:100 ,
                increment: 60,
                editable:false,
                 minValue: &#39;10:00am&#39;,
                 maxValue: &#39;22:00pm&#39;,
                        allowBlank:false
        });
    /********** CREAR LA FECHA RETORNO *****************/
    var endDateEdit= new Ext.form.DateField ({
        name: &#39;endDateEdit&#39;,
        id: &#39;endDateEdit&#39;,
        width : 100,
        //vtype: &#39;daterange&#39;,
       // startDateField: &#39;startDateEdit&#39;,
        fieldLabel:&#39;Fecha Hasta&#39;,
        value:fechaSel,
        format : &quot;d/m/Y&quot;,
        allowBlank:false,
        altFormats : &quot;d/m/y&quot;

    });
  //  endDateEdit.setValue(fechaSel + 1 );
    var endDate_hora = new Ext.form.TimeField({
              fieldLabel:&#39;Hora Hasta&#39;,
                name: &#39;endDate_hora&#39;,
                id: &#39;endDate_hora&#39;,
               format:&quot;H:i a&quot;,
                minValue: &#39;10:00am&#39;,
                 maxValue: &#39;22:00pm&#39;,
                width:100 ,
                increment: 60,
                editable:false,
                        allowBlank:false

        });



    /*********************/
           if (!winNuevReserva) {

            panelContentNewreserva = new Ext.form.FormPanel({
                labelWidth: 75,
                xtype: &#39;panel&#39;,
                frame:true,
                region:&#39;center&#39;,
                layout: &#39;form&#39;,
                bodyStyle:&#39;padding:5px 5px 0&#39;,
                width: 480,
                 items: [

                      {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnWidth: .6,
                            layout: &#39;form&#39;,
                            items: [txtusuario]
                        }
                         ,
                        {
                            columnWidth:.4,
                            layout: &#39;form&#39;
                        } ]
                    } ,
                    {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnWidth: .5,
                            layout: &#39;form&#39;,
                            items: [startDateEdit]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: &#39;form&#39;//,
                          //  items: [ startDate_hora ]
                        } ]
                    } ,
                      {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnWidth: .5,
                            layout: &#39;form&#39;,
                            items: [startDate_hora]
                        }
                         ,
                        {
                            columnWidth:.5,
                            layout: &#39;form&#39;,
                            items: [ endDate_hora ]
                        } ]
                    } ,
                    txtdetalle ,
                     {
                        layout:&#39;column&#39;,
                        items:[
                        {
                            columnHeight:.2,
                            layout: &#39;form&#39;
                        }
                         ]
                    }
                ],
                   buttons: [{
                    text: &#39;Guardar&#39;,
                    id:&#39;btnSave&#39;,
                    handler: function()
                    {
                        if(!panelContentNewreserva.getForm().isValid())
                        {
                          return false;
                        }

                        var _txtusuario=  Ext.get(&#39;txtusuario&#39;).dom;
                        var _txtdetalle=  Ext.get(&#39;txtdetalle&#39;).dom;
                        var _startDateEdit =  Ext.get(&#39;startDateEdit&#39;).dom;
                        var _startDate_hora =  Ext.get(&#39;startDate_hora&#39;).dom;
                      //  var _endDateEdit =  Ext.get(&#39;endDateEdit&#39;).dom;
                        var _endDate_hora =  Ext.get(&#39;endDate_hora&#39;).dom;

                        if(_txtusuario.value == &quot;&quot;)
                        {
                            _txtusuario.focus();
                                Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Faltan ingresar datos!.&#39;);
                            return false;
                        }

                        if(_startDateEdit.value == &quot;&quot;)
                        {
                            _startDateEdit.focus();
                                Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Faltan ingresar datos!.&#39;);
                            return false;
                        }
//                        if(_endDateEdit.value == &quot;&quot;)
//                        {
//                            _endDateEdit.focus();
//                                Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Faltan ingresar datos!.&#39;);
//                            return false;
//                        }

//                        if(!_startDateEdit.validate())
//                        {
//                            _startDateEdit.focus();
//﻿                          Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Campo incorrecto!.&#39;);
//                            return false;
//                        }

//                        if(!_endDateEdit.validate())
//                        {
//                            _endDateEdit.focus();
//﻿                          Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;Campo incorrecto!.&#39;);
//                            return false;
//                        }
                        _startDateEdit =   _startDateEdit.value;
                        _startDate_hora = _startDate_hora.value;
                        var iLen_e = String(_startDate_hora).length;
                        var s_hora_em_ = String(_startDate_hora).substring(iLen_e, iLen_e - 2).toUpperCase().trim();
                        var new_hora_em =String(_startDate_hora).substring(0, iLen_e - 2) ;
                        var HIni_In= new_hora_em;
                        if(s_hora_em_ == &#39;AM&#39;) {new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 am&#39; ;}
                        else{new_hora_em = new_hora_em.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 pm&#39; ;}

                       _endDate_hora = _endDate_hora.value;
                        var iLen_ef = String(_endDate_hora).length;
                        var s_hora_fin_ = String(_endDate_hora).substring(iLen_ef, iLen_ef - 2).toUpperCase().trim();
                        var new_hora_fin =String(_endDate_hora).substring(0, iLen_ef - 2) ;
                        var HFin_In= new_hora_fin;
                        if(s_hora_fin_ == &#39;AM&#39;) {new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 am&#39; ;}
                        else{new_hora_fin = new_hora_fin.replace(/^\s*|\s*$/g,&quot;&quot;) + &#39;:00 pm&#39; ;}
                           /**********************************/

 
﻿  var fec = _startDateEdit.split(&quot;/&quot;);
        var horai = HIni_In.split(&quot;:&quot;);
        var horaf =  HFin_In.split(&quot;:&quot;);
﻿  var dat1 = new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horai[0]),parseFloat(horai[1]),00);
﻿  var dat2 =  new Date(fec[2], parseFloat(fec[1])-1, parseFloat(fec[0]),parseFloat(horaf[0]),parseFloat(horaf[1]),00);

﻿  var fin = dat2.getTime() - dat1.getTime();

        var horasVal = parseFloat(fin);
        if(horasVal &amp;lt;= 0)
            {
                   Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;La fecha hasta debe ser mayor a la fecha desde!.&#39;);
                   return false;
            }
﻿  var Nro_Horas = Math.floor(fin / (1000 * 60 * 60 ));

/** verificar si existe una reserva en esa fecha */
   var objec = dataStore;
   var fec_v = fec[1] + &#39;/&#39; + fec[0] + &#39;/&#39; + fec[2];
   var horaI_v = _startDate_hora.substring(0, 2);
   var horaF_v = _endDate_hora.substring(0, 2);
    var estPrue= false;
    for(var i = 0; i &amp;lt;  objec.getCount(); i = i +1)
    {
        var fechaDesdeV =objec.data.get(i).data.fechaDesde ;
        var fechaHastaV =objec.data.get(i).data.fechaHasta ;
        var fechaDesde_ =fechaDesdeV.substring(0, 10) ;

        if(fechaDesde_ == fec_v)
        {
             var horaCompletaIni_v =fechaDesdeV.substring(11, 13);
             var horaCompletaFin_v =fechaHastaV.substring(11, 13);

             if(parseInt(horaI_v) == parseInt(horaCompletaIni_v))
                 {
                     estPrue = true; /**existe */
                     break;
                 }
               if(parseInt(horaF_v) == parseInt(horaCompletaFin_v))
                 {
                     estPrue = true; /**existe */
                     break;
                 }
                if((parseInt(horaI_v) &amp;gt; parseInt(horaCompletaIni_v)) &amp;amp;&amp;amp; (parseInt(horaI_v) &amp;lt; parseInt(horaCompletaFin_v)) )
                 {
                     estPrue = true; /**existe */
                     break;
                 }
                  if((parseInt(horaF_v) &amp;gt; parseInt(horaCompletaIni_v)) &amp;amp;&amp;amp; (parseInt(horaF_v) &amp;lt; parseInt(horaCompletaFin_v)) )
                 {
                     estPrue = true; /**existe */
                     break;
                 }
        }
    }
      if(estPrue)
            {
                   Ext.MessageBox.alert(&#39;Mensaje&#39;, &#39;En la hora seleccionada ya existe una reserva!.&#39;);
                   return false;
            }
            


﻿  //return dias;
     Ext.MessageBox.show({
       msg: &#39;Guardando los Datos , por favor espere...&#39;,
       progressText: &#39;Guardando...&#39;,
       width:300,
       wait:true//,
       //waitConfig: {interval:200}//,
       //icon:&#39;ext-mb-download&#39;, //custom class in msg-box.html
       //animEl: &#39;mb7&#39;
 });

 var AddResultItinerarios = new Ext.data.Connection();
                    AddResultItinerarios.request({
                        url: URLWebService + &#39;/InsertReserva&#39;,
                        params: {
                                fechadesde: String(_startDateEdit + &#39; &#39; + new_hora_em),
                                fechahasta: String(_startDateEdit + &#39; &#39; +new_hora_fin),
                                dni:_txtusuario.value.replace(/^\s*|\s*$/g,&quot;&quot;),
                                idempresaarea: String(ID_tipoarea),
                                horas:String(Nro_Horas),
                                detalle:_txtdetalle.value.replace(/^\s*|\s*$/g,&quot;&quot;)
                                },
                        method: &#39;POST&#39;,
                        scope: this,
                        callback: function(options, success, response){
                        if (success){
                              Ext.MessageBox.hide();
                            var xml = response.responseText;
                            var re = /\n/;
                            xml = xml.replace(re, &#39;&#39;);
                            re = /\r/;
                            xml = xml.replace(re, &#39;&#39;);
                            var ObjectRes =  Ext.decode(xml);
                            ObjectRes= ObjectRes.MensajeResultado;
                            var return_Estado = ObjectRes.ESTADO;
                            var return_Mensaje = ObjectRes.MENSAJE ;
                            Ext.MessageBox.show({
                               title: &#39;Resultado&#39;,
                               msg: return_Mensaje,
                               buttons: Ext.MessageBox.OK,
                               fn: function(){
                                if(return_Estado == 1)
                                {
                                    winNuevReserva.close();
                                      dataStore.load({callback: function(records,o,s){
                                              CReserva.refreshCalendarView();
                                        }});
                                   // CReserva.refreshCalendarView();
                                }else
                                {
                                }

                               }
                           });
                      }
                      }
                    });

                      
                    }
                    }, {
                    text: &#39;Cancelar&#39;,
                    handler: function(){
                       winNuevReserva.close();
                    }
                 }]
            });
            winNuevReserva = new Ext.Window({
                title: &#39;NUEVA RESERVA&#39;,
                id:&#39;winEditItinerario&#39; ,
                closable: false,
                resizable: false,
                hideParent :false,
                autoScroll:true,
                closeAction: &#39;close&#39;,
                width: 500,
                border:false,
                modal:true,
                plain: true,
                autoScroll:true,
                listeners:{show:function() {
                    this.loadMask = new Ext.LoadMask(this.body, {
                        msg:&#39;Espere por favor...&#39;
                    });
                }} ,
                items: [panelContentNewreserva]
            });
            
           winNuevReserva.on(&#39;beforehide&#39;,destroyProjectWindowNewReserva);
       }
        winNuevReserva.show();
    }
    catch(err){
        alert(err.description);
    }
}

function destroyProjectWindowNewReserva() {
﻿  if (winNuevReserva != null) {
﻿  ﻿  winNuevReserva = null;
﻿  }
}

/***** FORM PARA ELIMINAR LA RESERVA ***/
 function ShowPopupDeleteReserva(IdReserva)
 {
    var record =  dataStore.getAt(dataStore.find(&#39;IdReserva&#39;,IdReserva));
      var estadoConf = record.data.estado;
      if(String(estadoConf)== &quot;2&quot;)
          {
               Ext.Msg.alert(&#39;Alerta&#39;  , &#39;La reserva ya fue confirmada. No puede eliminar.&#39;);
               return false;
          }

    Ext.Msg.show({
        title:&#39;Alerta&#39;,
        msg: &#39;Desea eliminar la Reserva: &quot;&#39;+ record.data.Detalle +&#39;&quot; ?&#39;,
        buttons: Ext.Msg.YESNO,
        fn:function(btn)
        {
            if(btn==&#39;yes&#39;)
            {
                   /**********************************/
                     Ext.MessageBox.show({
                       msg: &#39;Procesando , por favor espere...&#39;,
                       progressText: &#39;Eliminando...&#39;,
                       width:300,
                       wait:true//,
                       //waitConfig: {interval:200}//,
                       //icon:&#39;ext-mb-download&#39;, //custom class in msg-box.html
                       //animEl: &#39;mb7&#39;
                 });
                  var AddResultItinerarios = new Ext.data.Connection();
                    AddResultItinerarios.request({
                        url: URLWebService + &#39;/DeleteReserva&#39;,
                        params: {
                                tipodelete: &#39;id&#39;,
                                idreserva:String(IdReserva)
                                },
                        method: &#39;POST&#39;,
                        scope: this,
                        callback: function(options, success, response){
                        if (success){
                              Ext.MessageBox.hide();
                            var xml = response.responseText;
                            var re = /\n/;
                            xml = xml.replace(re, &#39;&#39;);
                            re = /\r/;
                            xml = xml.replace(re, &#39;&#39;);
                            var ObjectRes =  Ext.decode(xml);
                            ObjectRes= ObjectRes.MensajeResultado;
                            var return_Estado = ObjectRes.ESTADO;
                            var return_Mensaje = ObjectRes.MENSAJE ;
                            Ext.MessageBox.show({
                               title: &#39;Resultado&#39;,
                               msg: return_Mensaje,
                               buttons: Ext.MessageBox.OK,
                               fn: function(){
                                if(return_Estado == 1)
                                {
                                      dataStore.load({callback: function(records,o,s){
                                              CReserva.refreshCalendarView();
                                        }});
                                       //  CReserva.refreshCalendarView();
                                }else
                                {
                                }

                               }
                           });
                      }
                      }
                    });
            }
            else{

            }
            }
     });
 }
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/tpl&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Recursos:&lt;br /&gt;
&lt;br /&gt;
El Proyecto que realice lo subi al GoogleCode:&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/reservaarea/&quot;&gt;http://code.google.com/p/reservaarea/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Pagina del calendario:&lt;br /&gt;
&lt;a href=&quot;http://e2cs.mm-mendez.com/index.php?language=en&quot;&gt;http://e2cs.mm-mendez.com/index.php?language=en&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Archivos del calendario:&lt;br /&gt;
&lt;a href=&quot;http://www.sencha.com/forum/showthread.php?37241-E2CS-EventCalendar-(v0.0.16)&amp;amp;s=78307fda83765dcbd28374eff6b089e5&quot;&gt;http://www.sencha.com/forum/showthread.php?37241-E2CS-EventCalendar-(v0.0.16)&amp;amp;s=78307fda83765dcbd28374eff6b089e5&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/5135189936116102545/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2011/02/calendario-tipo-google-calendar-con.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5135189936116102545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5135189936116102545'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2011/02/calendario-tipo-google-calendar-con.html' title='Calendario Tipo Google Calendar con ExtJs'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-4850982394304017002</id><published>2011-02-03T00:05:00.001-05:00</published><updated>2011-02-03T00:34:27.343-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ExtJs"/><title type='text'>Validando Fechas usando ExtJs</title><content type='html'>- Usando ExtJs, validamos la fecha&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: js;&quot;&gt;/********** VALIDAR LAS FECHAS DESDE HASTA **************************/
Ext.apply(Ext.form.VTypes, {
    daterange : function(val, field) {
        var date = field.parseDate(val);
        if(!date){
            return;
        }
        if (field.startDateField &amp;&amp; (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
            var start = Ext.getCmp(field.startDateField);
            start.setMaxValue(date);
            start.validate();
            this.dateRangeMax = date;
        }
        else if (field.endDateField &amp;&amp; (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
            var end = Ext.getCmp(field.endDateField);
            end.setMinValue(date);
            end.validate();
            this.dateRangeMin = date;
        }
        return true;
    }
});
&lt;/pre&gt;&lt;br /&gt;
Fecha Inicio:&lt;br /&gt;
&lt;pre class=&quot;brush: js;&quot;&gt;var  startDateEdit= new Ext.form.DateField ({
        name: &#39;startDateEdit&#39;,
        id: &#39;startDateEdit&#39;,
        width : 100,
        value:fechaSel,
        format : &quot;d/m/Y&quot;,
        vtype: &#39;daterange&#39;,
        endDateField: &#39;endDateEdit&#39; ,
        fieldLabel:&#39;Fecha Desde&#39;,
        allowBlank:false,
        altFormats : &quot;d/m/y&quot;,
        readOnly:true

    });
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fecha Fin:&lt;br /&gt;
&lt;pre class=&quot;brush: js;&quot;&gt;var endDateEdit= new Ext.form.DateField ({
        name: &#39;endDateEdit&#39;,
        id: &#39;endDateEdit&#39;,
        width : 100,
        vtype: &#39;daterange&#39;,
        startDateField: &#39;startDateEdit&#39;,
        fieldLabel:&#39;Fecha Hasta&#39;,
        value:fechaSel,
        format : &quot;d/m/Y&quot;,
        allowBlank:false,
        altFormats : &quot;d/m/y&quot;

    });
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/4850982394304017002/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2011/02/validando-fechas-usando-extjs.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4850982394304017002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4850982394304017002'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2011/02/validando-fechas-usando-extjs.html' title='Validando Fechas usando ExtJs'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-7596109059418312343</id><published>2009-11-03T00:14:00.002-05:00</published><updated>2009-11-06T14:53:29.294-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Access List Sharepoint using jQuery and LINQ and IHttpHandler</title><content type='html'>Javascript &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En el siguiente método, que paso en el nombre de la lista, al controlador de URL, y algunos parámetros de la consulta:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: js;&quot;&gt;/ / menu items solicitud  
   $. ajax ((  
       DataType: &#39;json&#39;,  
       url: &#39;_layouts / data / list.ashx&#39;,  
       Datos: (consulta: &#39;get&#39;, la lista: &#39;navegación&#39;),  
    éxito: function (data) (  
     / / omitido  
    )  
   ));  
&lt;/pre&gt;&lt;br /&gt;
Visual Studio 2008 SharePoint proyecto &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He creado un proyecto nuevo de SharePoint en Visual Studio 2008. El archivo. Ashx contiene una directiva de página con la misma clase que el. Cs. Para que el controlador de trabajar, he añadido la estructura de los archivos siguientes al proyecto: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•Templates / &lt;br /&gt;
&lt;br /&gt;
•Layouts / &lt;br /&gt;
&lt;br /&gt;
•Data / &lt;br /&gt;
&lt;br /&gt;
•List.ashx &lt;br /&gt;
&lt;br /&gt;
•List.cs &lt;br /&gt;
&lt;br /&gt;
De C # Espacios de nombres &lt;br /&gt;
&lt;br /&gt;
Mi clase de controlador (List.cs) utiliza los espacios de nombres siguientes: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;

using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Workflow;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
&lt;/pre&gt;&lt;br /&gt;
La clase debe heredar de la IHttpHandler: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public class List : IHttpHandler
&lt;/pre&gt;&lt;br /&gt;
C # IHttpHandler &lt;br /&gt;
No te olvides de poner en práctica IsReusable &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;#region IHttpHandler Members

    public bool IsReusable
    {
        // Return false in case your Managed Handler cannot be reused for another request.
        // Usually this would be false in case you have some state information preserved per request.
        get { return true; }
    }
&lt;/pre&gt;&lt;br /&gt;
De C # Proceso de Solicitud de &lt;br /&gt;
El código de abajo simplemente obtiene el parámetro de &quot;consulta&quot; y la utiliza para asignar a una función específica. También se dará cuenta de que estoy utilizando la clase JavaScriptSerializer para devolver el JSON. Este modelo me permite utilizar fácilmente jQuery para consultar las listas de SharePoint. Lo único más eficiente sería, evidentemente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public void ProcessRequest(HttpContext context)
    {
        string query = context.Request.Params[&quot;query&quot;];

        context.Response.Clear();
        context.Response.ContentType = &quot;application/json&quot;;

        if (!string.IsNullOrEmpty(query))
        {
            try
            {
                IEnumerable items = null;
                switch (query)
                {
                    case &quot;GetUser&quot;:
                        GetUser(context);
                        return;
                    case &quot;get&quot;:
                        items = GetItems();
                        break;
                    //omitted
                }

                JavaScriptSerializer ser = new JavaScriptSerializer();
                context.Response.Write(ser.Serialize(items));

            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }
        }
    }

    #endregion
&lt;/pre&gt;&lt;br /&gt;
C # LINQ &lt;br /&gt;
El código siguiente se utiliza para devolver una lista de 2-dimensional. Se recupera la lista a través de un parámetro de cabecera de la petición conocida como &quot;lista&quot;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;private IEnumerable GetItems()
    {
        string listName = HttpContext.Current.Request.Params[&quot;list&quot;].ToString();
        SPList list = SPContext.Current.Web.Lists[listName];

        var items = from SPListItem item in list.Items
                    select new { Name = item.Name, Value = item[&quot;value&quot;].ToString() };

        return items;
    }
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/7596109059418312343/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/11/access-list-sharepoint-using-jquery-and.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7596109059418312343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7596109059418312343'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/11/access-list-sharepoint-using-jquery-and.html' title='Access List Sharepoint using jQuery and LINQ and IHttpHandler'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-975486856764258500</id><published>2009-11-02T22:23:00.003-05:00</published><updated>2009-11-06T14:53:50.042-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Sharepoint Access GetUserProfile</title><content type='html'>Esta función muestra como se puede acceder&lt;em&gt; UserProfileManager&lt;/em&gt; para&amp;nbsp;traer toda la información del usuario; para recuperar los datos usamos JSON.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using Microsoft.Office.Server;   
using Microsoft.Office.Server.Administration;   
using Microsoft.Office.Server.UserProfiles;   
using Microsoft.SharePoint;   
using Microsoft.SharePoint.Administration; 
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;private void GetUser(HttpContext context)
    {
        string key = HttpContext.Current.Request.Params[&quot;id&quot;].ToString();
        int id = Convert.ToInt32(key);
        object user = null;

        string siteURL = SPContext.Current.Site.Url;
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(siteURL))
            {
                ServerContext serverContext = ServerContext.GetContext(context);
                UserProfileManager profileManager = new UserProfileManager(serverContext);
                SPUser spUser = site.RootWeb.Users.GetByID(id);
                UserProfile profile = profileManager.GetUserProfile(spUser.LoginName);

                user = new
                {
                    Account = profile[&quot;AccountName&quot;].Value,
                    Title = profile[&quot;Title&quot;].Value,
                    First = profile[&quot;FirstName&quot;].Value,
                    Last = profile[&quot;LastName&quot;].Value,
                    PreferredName = profile[&quot;PreferredName&quot;].Value,
                    WorkPhone = profile[&quot;WorkPhone&quot;].Value,
                    Fax = profile[&quot;Fax&quot;].Value,
                    WorkEmail = profile[&quot;WorkEmail&quot;].Value,
                    Office = profile[&quot;Office&quot;].Value,
                    Manager = profile[&quot;Manager&quot;].Value

                };
            }
        });

        JavaScriptSerializer ser = new JavaScriptSerializer();
        context.Response.Write(ser.Serialize(user));
    }
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/975486856764258500/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/11/sharepoint-access-getuserprofile.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/975486856764258500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/975486856764258500'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/11/sharepoint-access-getuserprofile.html' title='Sharepoint Access GetUserProfile'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-5649859271180349479</id><published>2009-11-02T22:00:00.004-05:00</published><updated>2009-11-06T14:54:07.246-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Access List Sharepoint using jQuery</title><content type='html'>&lt;pre class=&quot;brush: js; theme: default;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;&amp;#104;ttp://jqueryjs.googlecode.com/files/jquery&amp;#45;1.3.2.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
 
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    $(document).ready(function() &amp;#123;
        var soapEnv =
            &quot;&amp;lt;soapenv:Envelope xmlns:soapenv=&amp;#39;&amp;#104;ttp://schemas.xmlsoap.org/soap/envelope/&amp;#39;&amp;gt; &amp;#92;
                &amp;lt;soapenv:Body&amp;gt; &amp;#92;
                     &amp;lt;GetListItems xmlns=&amp;#39;&amp;#104;ttp://schemas.microsoft.com/sharepoint/soap/&amp;#39;&amp;gt; &amp;#92;
                        &amp;lt;listName&amp;gt;Tasks&amp;lt;/listName&amp;gt; &amp;#92;
                        &amp;lt;viewFields&amp;gt; &amp;#92;
                            &amp;lt;ViewFields&amp;gt; &amp;#92;
                               &amp;lt;FieldRef Name=&amp;#39;Title&amp;#39; /&amp;gt; &amp;#92;
                           &amp;lt;/ViewFields&amp;gt; &amp;#92;
                        &amp;lt;/viewFields&amp;gt; &amp;#92;
                    &amp;lt;/GetListItems&amp;gt; &amp;#92;
                &amp;lt;/soapenv:Body&amp;gt; &amp;#92;
            &amp;lt;/soapenv:Envelope&amp;gt;&quot;;
 
        $.ajax(&amp;#123;
            url: &quot;&amp;#95;vti&amp;#95;bin/lists.asmx&quot;,
            type: &quot;POST&quot;,
            dataType: &quot;xml&quot;,
            data: soapEnv,
            complete: processResult,
            contentType: &quot;text/xml; charset=&amp;#92;&quot;utf&amp;#45;8&amp;#92;&quot;&quot;
        &amp;#125;);
    &amp;#125;);
 
    function processResult(xData, status) &amp;#123;
        $(xData.responseXML).find(&quot;z&amp;#92;&amp;#92;:row&quot;).each(function() &amp;#123;
            var liHtml = &quot;&amp;lt;li&amp;gt;&quot; &amp;#43; $(this).attr(&quot;ows&amp;#95;Title&quot;) &amp;#43; &quot;&amp;lt;/li&amp;gt;&quot;;
            $(&quot;#tasksUL&quot;).append(liHtml);
        &amp;#125;);
    &amp;#125;
&amp;lt;/script&amp;gt;
 
&amp;lt;ul id=&quot;tasksUL&quot;/&amp;gt; 
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/5649859271180349479/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/11/access-list-sharepoint-using-jquery.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5649859271180349479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5649859271180349479'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/11/access-list-sharepoint-using-jquery.html' title='Access List Sharepoint using jQuery'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-4042034363589433294</id><published>2009-10-21T00:18:00.003-05:00</published><updated>2009-11-06T14:54:40.226-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Kaldeera Advanced Forms in SharePoint</title><content type='html'>Necesitas &lt;b&gt;aplicaciones basadas en formularios web sin necesidad de desarrollos &lt;/b&gt;personalizados?&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJZoLQrm7Tpc5LAADzI1i9F_VR04U23HFcclGNQJmAnqJFKpz5WPwfjKeNNHW15PQUYyvH1z_-H1XNr3owwiZ9mLgiGyFQsh0izyb1ElEBMlS7AsPmSwRaU-BIglyIswqvTJK0zLnA7Ns/s1600-h/kaldera.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJZoLQrm7Tpc5LAADzI1i9F_VR04U23HFcclGNQJmAnqJFKpz5WPwfjKeNNHW15PQUYyvH1z_-H1XNr3owwiZ9mLgiGyFQsh0izyb1ElEBMlS7AsPmSwRaU-BIglyIswqvTJK0zLnA7Ns/s640/kaldera.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Ahora esto es posible mediante &lt;b&gt;Kaldeeera Advanced Forms &lt;/b&gt;y las listas estándar de SharePoint!&lt;br /&gt;
Resultados inmediatos! … &lt;b&gt;sin necesidad de programar!&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;KAF &lt;/b&gt;es una herramienta que nos permite &lt;b&gt;modificar los formularios estándar&lt;/b&gt; de SharePoint® y crear potentes aplicaciones basadas en formularios web.&lt;br /&gt;
&lt;b&gt;&amp;nbsp;Agrupa y muestra&lt;/b&gt; la información de una forma más intuitiva, mediante pestañas. A la vez que nos permite añadir en los formularios elementos como: &amp;nbsp;textos, imágenes, Web Parts, … &lt;br /&gt;
Ocultar campos o mostrar campos “no editables” ya no supone ningún problema con &lt;b&gt;Kaldeera Advanced Forms.&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Con KAF y su editor de formularios podrás alcanzar los resultados que esperabas, sin costes adicionales de desarrollo. Su tecnología, basada en la aplicación de reglas, disminuye el tiempo de implantación.&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Ya no es necesario comprar multiples soluciones y componentes … Con KAF dispondrás de &lt;b&gt;todas las funcionalidades en un solo producto!&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Disfruta de &lt;b&gt;verdaderos formularios web con toda la potencia de SharePoint!&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Funcionalidades&lt;/b&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul&gt;&lt;li&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;Edición de los formularios estándar de las listas de SharePoint (&lt;b&gt;new/edit/display&lt;/b&gt;).&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Múltiples definiciones &lt;/b&gt;de formularios para una misma lista. &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Múltiples &lt;b&gt;reglas de aplicación&lt;/b&gt; basadas en:&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote dir=&quot;ltr&quot; style=&quot;margin-right: 0px;&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;- El usuario que accede al elemento&lt;br /&gt;
- Los valores del elemento&lt;br /&gt;
- Las propiedades del perfil del usuario&lt;br /&gt;
- Los grupos de seguridad a los que pertenece el usuario&lt;br /&gt;
- Parámetros de la página.&lt;br /&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Modifica el “layout” de los formularios &lt;/b&gt;pudiendo introducir los siguientes elementos:&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote dir=&quot;ltr&quot; style=&quot;margin-right: 0px;&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;- Textos y contenidos HTML&lt;br /&gt;
- Imágenes&lt;br /&gt;
- WebParts&lt;br /&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Agrupación de campos &lt;/b&gt;mediante TAB’s (pestañas)&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Protección de columnas &lt;/b&gt;(view/edit)&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Import/Export &lt;/b&gt;de la definición para traspaso entre entornos (ej: test, producción, …)&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Condiciones&lt;b&gt; &lt;/b&gt;basadas en variables&lt;b&gt; &lt;/b&gt;[Hoy]&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Asignación de la definición a nivel de “&lt;b&gt;Content Type&lt;/b&gt;”&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &#39;calibri&#39;,&#39;sans-serif&#39;; font-size: 11pt; line-height: 115%;&quot;&gt;&lt;/span&gt;Mínima instalación y configuración. &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Soporta cualquier arquitectura de granja de Microsoft SharePoint &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Basado en tecnología 100% Microsoft SharePoint&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Integración total con MOSS 2007 + WSS 3.0&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8fXxm0xAsl1bLeQDnG50NvLezbQXXdg4jrqz-6hoYDrWOiLKJGLlw97LWpfVwmJtV_ldCy6uwT4XNWgLK0wNtCRwiYm2UpoQTVbLFTJ_dc5ugYx9HIY7PElBm95WDdJ24ss13E3NEo-Q/s1600-h/kaf3_ok.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8fXxm0xAsl1bLeQDnG50NvLezbQXXdg4jrqz-6hoYDrWOiLKJGLlw97LWpfVwmJtV_ldCy6uwT4XNWgLK0wNtCRwiYm2UpoQTVbLFTJ_dc5ugYx9HIY7PElBm95WDdJ24ss13E3NEo-Q/s640/kaf3_ok.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9Y6lyH5QKmaTYn3fPYM3W7Ls5RSzcuzZiOfzqo3Jf3sBye0nL7al60Qj4fGNL2JTBXyvpAsWZ1pFT-DXgEmBkxOhDrrjsEJDbmlz8dzh4bTKo8lC66bae2dEuQlQs8d4Hg6FLlTLbiqk/s1600-h/kaf2_ok.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9Y6lyH5QKmaTYn3fPYM3W7Ls5RSzcuzZiOfzqo3Jf3sBye0nL7al60Qj4fGNL2JTBXyvpAsWZ1pFT-DXgEmBkxOhDrrjsEJDbmlz8dzh4bTKo8lC66bae2dEuQlQs8d4Hg6FLlTLbiqk/s640/kaf2_ok.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Link: &amp;nbsp;&lt;a href=&quot;http://www.kaldeera.com/Paginas/KAF.aspx&quot;&gt;http://www.kaldeera.com/Paginas/KAF.aspx&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4042034363589433294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4042034363589433294'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/kaldeera-advanced-forms-in-sharepoint.html' title='Kaldeera Advanced Forms in SharePoint'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJZoLQrm7Tpc5LAADzI1i9F_VR04U23HFcclGNQJmAnqJFKpz5WPwfjKeNNHW15PQUYyvH1z_-H1XNr3owwiZ9mLgiGyFQsh0izyb1ElEBMlS7AsPmSwRaU-BIglyIswqvTJK0zLnA7Ns/s72-c/kaldera.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-7998308275414997174</id><published>2009-10-20T23:40:00.003-05:00</published><updated>2009-10-20T23:50:50.350-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight"/><title type='text'>Configurar Silverlight en SharePoint</title><content type='html'>&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;Hay una serie de pasos con los que hay que cumplir para que una aplicación Silverlight&lt;span style=&quot;color: #351c75;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #4f81bd;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;color: #351c75;&quot;&gt;no tenga inconvenientes infraestructurales&lt;/span&gt; &lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;dentro de Sharepoint:&lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tanto Sharepoint Services como MOSS necesitan tener instalado el &lt;/span&gt;&lt;span style=&quot;color: #4f81bd;&quot;&gt;&lt;b&gt;&lt;i&gt;Service Pack 1&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;    &lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;En el server necesitamos &lt;/span&gt;&lt;span style=&quot;color: #4f81bd;&quot;&gt;&lt;b&gt;&lt;i&gt;.Net 3.5&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;    &lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Web.Silverlight.dll (del SDK de Silverlight) debe estar disponible como un assembly en el &lt;/span&gt;&lt;span style=&quot;color: #4f81bd;&quot;&gt;&lt;b&gt;&lt;i&gt;Global Assembly Cache&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt; (GAC). Puedo saber rápidamente si es así mediante la siguiente línea de comandos: &lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&lt;i&gt;gacutil -l | FINDSTR System.Web.Silverlight?&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;    &lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #4f81bd;&quot;&gt;&lt;b&gt;&lt;i&gt;En nuestra máquina de desarrollo&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt; necesitaremos: &lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin-left: 36pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;a. Microsoft Silverlight Tools for Visual Studio 2008 &lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-left: 36pt;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;b. Instalar las Visual Studio Extensions para Windows SharePoint Services (VSeWSS) 1.2 &lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Configurar .NET 3.5 (AJAX) y Silverlight en el &lt;/span&gt;&lt;span style=&quot;color: #4f81bd;&quot;&gt;&lt;b&gt;&lt;i&gt;web.config&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt; (en realidad el modo práctico de hacer esto es crear una aplicación Silverlight con su Web Site de prueba con Visual Studio y mirar el web.config de dicho sitio de prueba) &lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;¡No olviden registrar la extensión &lt;/span&gt;&lt;span style=&quot;color: #4f81bd;&quot;&gt;&lt;b&gt;&lt;i&gt;.xap como un tipo MIME&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt; (application/x-silverlight-2-b1) en la IIS Web application!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPphzafkbIqj_VonlxRFo9H1QHAqJv5zH4QaHl6dpuZ6ksag8FowaW9nZYHmK0hmI1cBg0l6UB8AP3OMwbyd5vT-Fu260VmttClu1bRglrKBBSRyAaYG28MmHLJ97yw6z1XV1pHPVgH9I/s1600-h/image_be34628bb87d45b0a4f578c033984308_071504B3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPphzafkbIqj_VonlxRFo9H1QHAqJv5zH4QaHl6dpuZ6ksag8FowaW9nZYHmK0hmI1cBg0l6UB8AP3OMwbyd5vT-Fu260VmttClu1bRglrKBBSRyAaYG28MmHLJ97yw6z1XV1pHPVgH9I/s400/image_be34628bb87d45b0a4f578c033984308_071504B3.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;&amp;nbsp;&lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span style=&quot;color: #4c4c4c;&quot;&gt;El amigo Tobias Zimmergren (Sharepoint MVP) se ha tomado la molestia de graficar un paso a paso en &lt;/span&gt;&lt;a href=&quot;http://www.zimmergren.net/archive/2008/12/10/how-to-sharepoint-and-silverlight-2-0-%E2%80%93-part-1.aspx&quot;&gt;http://www.zimmergren.net/archive/2008/12/10/how-to-sharepoint-and-silverlight-2-0-%E2%80%93-part-1.aspx&lt;span style=&quot;color: #4c4c4c;&quot;&gt; que - seguramente - disipará las dudas que puedan quedarles.&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;http://www.zimmergren.net/archive/2008/12/10/how-to-sharepoint-and-silverlight-2-0-%E2%80%93-part-1.aspx&quot;&gt;   &lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/7998308275414997174/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/configurar-silvelight-en-sharepoint.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7998308275414997174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7998308275414997174'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/configurar-silvelight-en-sharepoint.html' title='Configurar Silverlight en SharePoint'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPphzafkbIqj_VonlxRFo9H1QHAqJv5zH4QaHl6dpuZ6ksag8FowaW9nZYHmK0hmI1cBg0l6UB8AP3OMwbyd5vT-Fu260VmttClu1bRglrKBBSRyAaYG28MmHLJ97yw6z1XV1pHPVgH9I/s72-c/image_be34628bb87d45b0a4f578c033984308_071504B3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-8962892297774868593</id><published>2009-10-20T23:22:00.003-05:00</published><updated>2009-10-21T08:18:16.158-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Webpart BotDetect CAPTCHA</title><content type='html'>Este artículo describe los pasos para crear un SharePoint Web Part usando el &lt;a href=&quot;http://es.captcha.biz/captcha-descarga.html?version=aspnet&quot; title=&quot;Prueba gratis de BotDetect ASP.NET CAPTCHA&quot;&gt;Lanapsoft BotDetect CAPTCHA control&lt;/a&gt;. Es una WebPart muy simple que le permite validar entrada de usuario, comparándola con el código mostrado en la imagen CAPTCHA.&lt;br /&gt;
&lt;h2&gt;Prerequisitos&lt;/h2&gt;&lt;ul class=&quot;steps&quot;&gt;&lt;li&gt;Microsoft Visual Studio 2005&lt;/li&gt;
&lt;li&gt;Microsoft Windows SharePoint Services&lt;/li&gt;
&lt;li&gt;BotDetect CAPTCHA 2.0.11 para ASP.NET 2.0&lt;/li&gt;
&lt;/ul&gt;En este artículo asumimos que usted está corriendo Visual Studio 2005 en un servidor corriendo Windows SharePoint Services o Microsoft Office SharePoint Server 2007.&lt;br /&gt;
Comience descargando el &lt;a href=&quot;http://captcha.biz/doc/asp.net/2.0/LanapWebPart.zip&quot;&gt;ejemplo de proyecto SharePoint Web Part&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;Paso 1: Crear un nuevo proyecto de WebPart Library&lt;/h2&gt;&lt;ol class=&quot;continued&quot;&gt;&lt;li&gt;Comience Visual Studio 2005&lt;/li&gt;
&lt;li&gt;En el menú de Archivo, apunte a Nuevo, y luego haga click en Proyectos&lt;/li&gt;
&lt;li&gt;En el cuadro de diálogo &quot; Nuevo Proyecto &quot;, haga click en Proyectos Visual C#, y luego seleccione plantilla Web Control Library (Librería de Control Web)&lt;/li&gt;
&lt;li&gt;Digite &quot;LanapWebPart&quot; como el nombre y especifique un lugar para los archivos del proyecto, luego haga click en OK&lt;/li&gt;
&lt;/ol&gt;Para crear una WebPart, tiene que agregar una referencia a los ensambles Microsoft.SharePoint, System.XML y Lanap.BotDetect.&lt;br /&gt;
&lt;h2&gt;Paso 2: Configuraciones Iniciales del Proyecto&lt;/h2&gt;Antes de que comience a trabajar con el código para WebPart, primero debe hacer los siguientes cambios a la configuración de su proyecto:&lt;br /&gt;
&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Configure el número de la versión&lt;/li&gt;
&lt;li&gt;Haga un nombre-fuerte para el ensamble&lt;/li&gt;
&lt;/ul&gt;Para configurar el número de versión:&lt;br /&gt;
&lt;ol class=&quot;continued&quot;&gt;&lt;li&gt;En el explorador de soluciones (Solution Explorer), haga doble-click en AssemblyInfo.cs.&lt;/li&gt;
&lt;li&gt;Edite la siguiente línea: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;[assembly: AssemblyVersion(&quot;1.0.*&quot;)]&lt;/pre&gt;para que diga:&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;[assembly: AssemblyVersion (&quot;1.0.0.0&quot;)]&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;Para darle un nombre-fuerte al ensamble:&lt;br /&gt;
&lt;ol class=&quot;continued&quot;&gt;&lt;li&gt;Click derecho en el nombre de su proyecto y seleccione propiedades&lt;/li&gt;
&lt;li&gt;Escoja la pestaña de Signing (Firma)&lt;/li&gt;
&lt;li&gt;Chequee la opción de &quot; Sing the assembly&quot; (Firme el ensamble)&lt;/li&gt;
&lt;li&gt;En &quot;Choose a strong name key file&quot; (escoja un nombre fuerte en el archivo llave) escoja &quot;&lt;new...&gt;&quot;(nuevo)&lt;/new...&gt;&lt;/li&gt;
&lt;li&gt;En nuevo diálogo escriba el nombre de algún archivo y opcionalmente una contraseña&lt;/li&gt;
&lt;li&gt;Guarde la configuración del proyecto&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Paso 3: Agregando directivas de nombres&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Agregue lo siguiente usando directivas que se encuentran cerca del comienzo de su código:&lt;br /&gt;
usando Microsoft.SharePoint.WebPartPages; &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System.Xml.Serialization;
using System.Web.UI.HtmlControls;
using Lanap.BotDetect;&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Paso 4: Defininendo datos de Toolbox (Barra de herramientas)&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Reemplace la siguiente línea: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;[ToolboxData(&quot;&amp;lt;{0}:WebCustomControl1 runat=server&amp;gt;&quot;)]&lt;/pre&gt;con esta línea:&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;[ToolboxData(&quot;&amp;lt;{0}:LanapSimpleWebPart runat=server&amp;gt;&quot;)]&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Paso 5: Heredando desde la clase base WebPart&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Reemplace esta línea de código: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public class WebCustomControl1 : WebControl&lt;/pre&gt;por &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;public class LanapSimpleWebPart : WebPart&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Paso 6: Definiendo un nombre XML para la clase WebPart entera&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Agregar esta línea de código sobre la declaración para su clase WebPart: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;[XmlRoot(Namespace=&quot;LanapWebPart&quot;)]&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Paso 7: Definiendo la Lógica y Renderizado para su WebPart&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Después de que complete los pasos previos, puede definir la lógica y el renderizado para su WebPart. Vamos a agregar un objeto Lanap.BotDetect.Captcha (mostrando la imagen CAPTCHA), una TextBox (Cuadro de texto, introduciendo el código CAPTCHA), un Button (botón,invocando la validación CAPTCHA ), y una Label (etiqueta, mostrando el resultado de la validación CAPTCHA)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Microsoft.SharePoint.WebPartPages;
using System.Xml.Serialization;
using System.Web.UI.HtmlControls;
using Lanap.BotDetect;

namespace LanapWebPart
{
  [XmlRoot(Namespace = &quot;LanapWebPart&quot;)]
  [ToolboxData(&quot;&amp;lt;{0}:LanapSimpleWebPart runat=server&amp;gt;&quot;)]
  public class LanapSimpleWebPart : WebPart
  {
    private TextBox _inputText;
    private Button _submitButton;
    private Label _messageLabel;
    private Lanap.BotDetect.Captcha _captchaControl;

    protected override void CreateChildControls()
    {
      base.CreateChildControls();

      _captchaControl = new Lanap.BotDetect.Captcha();
      _captchaControl.ID = &quot;LanapCaptcha&quot;;

      _inputText = new TextBox();
      _inputText.ID = &quot;InputText&quot;;

      _submitButton = new Button();
      _submitButton.ID = &quot;SubmitButton&quot;;
      _submitButton.Text = &quot;Validate&quot;;
   
      _submitButton.Click +=
        new EventHandler(submitButton_Click);

      _messageLabel = new Label();
      _messageLabel.ID = &quot;MessageLabel&quot;;

      this.Controls.Add(_captchaControl);
      this.Controls.Add(_inputText);
      this.Controls.Add(_submitButton);
      this.Controls.Add(_messageLabel);
    }

    void submitButton_Click(object sender, EventArgs e)
    {
      string captchaText = 
        ((TextBox)Controls[1]).Text.Trim().ToUpper();
    
      ((TextBox)Controls[1]).Text = null;

      if (_captchaControl.Validate(captchaText))
      {
        ((Label)Controls[3]).Text = &quot;Success!&quot;;
      }
      else
      {
        ((Label)Controls[3]).Text = &quot;Error!&quot;;
      }
    }
  }
}&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Paso 8: Registrando un ensamble WebPart como un SafeControl (control de seguridad)&lt;/h2&gt;&lt;ol class=&quot;continued&quot;&gt;&lt;li&gt;Abra el archivo web.config en su sitio SharePoint.&lt;/li&gt;
&lt;li&gt;Agregue las siguientes líneas en el bloque &lt;safecontrols&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;&lt;safecontrol&gt;
    Assembly=&quot;LanapWebPart, Version=1.0.0.0, Culture=neutral,
    PublicKeyToken=82da7a1cd3cc100b&quot;
  Namespace=&quot;LanapWebPart&quot;
  TypeName=&quot;*&quot;
  Safe=&quot;True&quot;
/&amp;gt;&lt;/safecontrol&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;/safecontrols&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Reemplace el valor de PublicKeyToken (82da7a1cd3cc100b) con el valor actual para su ensamble WebPart. Para determinar el valor correcto de PublicKeyToken para el atributo Ensamble de la etiqueta &lt;safecontrol&gt;de su WebPart, use el sn.exe utilidad de línea de comandos: &lt;br /&gt;
&lt;pre class=&quot;brush: text;&quot;&gt;sn.exe -T C:\inetpub\wwwroot\bin\SimpleWebPart.dll&lt;/pre&gt;&lt;/safecontrol&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Paso 9: Registre Http Handlers (Manipuladores Http)&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Agregue las sigueintes línea a la sección &lt;system.web&gt;del archivo &quot;Web.config&quot; de SharePoint: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;&lt;httphandlers&gt;
  &lt;add path=&quot;BotDetectCaptcha.ashx&quot; verb=&quot;*&quot;&gt;
    type=&quot;Lanap.BotDetect.CaptchaHandler, Lanap.BotDetect&quot; /&amp;gt;
&lt;/add&gt;&lt;/httphandlers&gt;&lt;/pre&gt;&lt;/system.web&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Agregue las sigueintes línea a la sección &lt;system.web&gt;del archivo &quot;Web.config&quot; de SharePoint: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;&lt;appsettings&gt;
  &lt;add key=&quot;LBD_RequestPath&quot; value=&quot;BotDetectCaptcha.ashx&quot;&gt;
&lt;/add&gt;&lt;/appsettings&gt;&lt;/pre&gt;&lt;/system.web&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Modifique la declaración del elemento &lt;sessionstate&gt;&lt;/sessionstate&gt;para que incluya el atributo sessionIDManagerType con el siguiente valor: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;&lt;sessionstate cookieless=&quot;AutoDetect&quot; mode=&quot;InProc&quot;&gt;
      timeout=&quot;20&quot; sessionIDManagerType=&quot;
        Lanap.BotDetect.Persistence.CustomSessionIDManager, 
        Lanap.BotDetect&quot; /&amp;gt;&lt;/sessionstate&gt;&lt;/pre&gt;Este es una solución requerida para el CAPTCHA audio para que funcione correctamente para usuarios de IE 7.0 Vista y Google Chrome, explicado aquí &lt;a href=&quot;http://es.captcha.biz/doc/asp.net/captcha-preguntas.html#implementation-vista&quot;&gt;Preguntas Frecuentes de BotDetect ASP.NET CAPTCHA&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Paso 10: Despliegue su WebPart &lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Para desplegar su WebPart a un sitio SharePoint, copie el ensamble de su WebPart a la carpeta C:\inetpub\wwwroot\bin de su servidor SharePoint (o a la carpeta de caché del ensamble global en C:\windows\assembly)&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Paso 11: Crear un archivo de definición de WebPart (.dwp)&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Un archivo de definición WebPart (.dwp) es un simple archivo XML que contiene configuraciones de propiedades para una única WebPart. Para importar su WebPart en una página WebPart, simplemente suba el archivo .dwp. Despues de subir la WebPart, puede mostrar la WebPart arrastrándola en una de las zonas de su página WebPart.&lt;br /&gt;
Dos propiedades son requeridas en el archivo .dwp: Assembly(ensamble) y TypeName(Tipo de Nombre). Sin embargo, para mostrar un nombre y una descripción por defecto para la WebPart después de que sea importada, debería incluir también las propiedades Title(Título) y Description(Descripción). Si quiere establecer las propiedades de otras WebPart mientras se produce la importación, puede definirlas en un archivo .dwp. Un archivo .dwp adopta la siguiente forma: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;&lt;webpart xmlns=&quot;http://schemas.microsoft.com/WebPart/v2&quot;&gt;
   &lt;assembly&gt;AssemblyName(with no .dll extension),
      Version=VersionNumber, Culture=Culture,
      PublicKeyToken=PublicKeyToken&lt;/assembly&gt;
   &lt;typename&gt;WebPartNamespace.WebPartClassName&lt;/typename&gt;
   
   &lt;description&gt;WebPartDescription&lt;/description&gt;
&lt;/webpart&gt;&lt;/pre&gt;Su parte .dwp WebParte debería verse como esta:&lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;&lt;webpart xmlns=&quot;http://schemas.microsoft.com/WebPart/v2&quot;&gt;
  &lt;assembly&gt;LanapWebPart, Version=1.0.0.0, Culture=Neutral,
    PublicKeyToken=def148956c61a16b&lt;/assembly&gt;
  &lt;typename&gt;LanapWebPart.LanapSimpleWebPart&lt;/typename&gt;
  
  &lt;description&gt;This web part shows Lanapsoft BotDetect
    Captcha image and validates user input&lt;/description&gt;
&lt;/webpart&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Parte 12: Importanto su WebPart en una página WebPart&lt;/h2&gt;Para usar y probar su WebPart, impórtela en una página WebPart en un servidor corriendo Windows SharePoint Services o Microsoft Office SharePoint Server 2007.&lt;br /&gt;
&lt;ol class=&quot;continued&quot;&gt;&lt;li&gt;Abra una página WebPart en su servidor.&lt;/li&gt;
&lt;li&gt;Seleccione Editar Página(Editar Página) desde el menú Site Actions (Acciones del Sitio) en rincón derecho-arriba de la página, y haga click en Add a Web Part in one of the zones (Agregar una WebPart en una de las zonas).&lt;/li&gt;
&lt;li&gt;En el cuadro de diálogo Add WebParts (Agregar WebParts), haga click en Advanced WebPart gallery and options (Galería WebPart y opciones avanzadas) en el rincón abajo-derecha.&lt;/li&gt;
&lt;li&gt;En el panel Add WebParts (Agregar WebParts), haga click en Import (Importar).&lt;/li&gt;
&lt;li&gt;Explore hasta el lugar del archivo SimpleWebPart.dwp, y luego haga click en el botón Upload (Subir). Luego de subir, la página se refrescará, y &quot;My Simple Web Part&quot; (Mi simple WebPart) debería aparecer dejabo de Importe WebPart (WebPart importada).&lt;/li&gt;
&lt;li&gt;Arrastre el ícono que está después de &quot; My Simple Web Part &quot; a una zona en la página WebPart.&lt;/li&gt;
&lt;li&gt;Escriba texto en el cuadro de texto, y luego haga click en Set Web Part Title (Establecer el título de la WebPart).&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;h2&gt;Notas y solución de problemas&lt;/h2&gt;&lt;ul class=&quot;continued&quot;&gt;&lt;li&gt;Para usar el construido de WebPart en la manera descrita en un sitio anónimo de SharePoint, el IIS acceso de cuenta de usuario anónimo (IUSR_&lt;server_name&gt;&lt;/server_name&gt;) debería otorgarle persmisos de lectura a Lanap.BotDetect.dll. Alternativamente, puede usar el ensamble Lanap.BotDetect.dll &lt;a href=&quot;http://es.captcha.biz/doc/asp.net/2.0/gac-implementacion.html&quot; title=&quot;Usar BotDetect ASP.NET CAPTCHA con .NET 2.0 GAC&quot;&gt;desde GAC&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Asegúrese de que Session State (Estado de Sesión) es permitido en la sección &lt;httpmodules&gt;&lt;/httpmodules&gt;del archivo web.config de SharePoint: &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;&lt;add name=&quot;Session&quot;&gt;
  type=&quot;System.Web.SessionState.SessionStateModule&quot; /&amp;gt;&lt;/add&gt;&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLq6DoxLDld7bx1L9eeRyJkuGTJFLwqZ78C2Qg-2QPe9kn8V6U3-Z5S1ZeG6oRtMqfwdfvi9RkIg_kPuMHk7lwgsiwqvNR48iB978o0_XICuc2UtqYyDZz9TgTrcYDZd3lZZZZoqZGE_U/s1600-h/untitled.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLq6DoxLDld7bx1L9eeRyJkuGTJFLwqZ78C2Qg-2QPe9kn8V6U3-Z5S1ZeG6oRtMqfwdfvi9RkIg_kPuMHk7lwgsiwqvNR48iB978o0_XICuc2UtqYyDZz9TgTrcYDZd3lZZZZoqZGE_U/s640/untitled.bmp&quot; vr=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/8962892297774868593/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/webpart-botdetect-captcha.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/8962892297774868593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/8962892297774868593'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/webpart-botdetect-captcha.html' title='Webpart BotDetect CAPTCHA'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLq6DoxLDld7bx1L9eeRyJkuGTJFLwqZ78C2Qg-2QPe9kn8V6U3-Z5S1ZeG6oRtMqfwdfvi9RkIg_kPuMHk7lwgsiwqvNR48iB978o0_XICuc2UtqYyDZz9TgTrcYDZd3lZZZZoqZGE_U/s72-c/untitled.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-6500770661602179790</id><published>2009-10-20T14:43:00.003-05:00</published><updated>2009-10-21T12:09:57.689-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><title type='text'>Menu Carrusel Flash</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Un Menu hecho en flash consumiendo un archivo xml.&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_VPTdFUaZusFBxNXBWwU7uwqwMZc8y7Hrjo3FUBV-dg7-o7Zzb2n77GW6fNysRgGGKLtQuL5nA_c1qDXm6Ih49QNhTaLw0nRJyj0EdKXQBHInQhyphenhyphenVh5SLJIr-HwS1cfCKOXLMcnzBJDk/s1600-h/carrusel.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_VPTdFUaZusFBxNXBWwU7uwqwMZc8y7Hrjo3FUBV-dg7-o7Zzb2n77GW6fNysRgGGKLtQuL5nA_c1qDXm6Ih49QNhTaLw0nRJyj0EdKXQBHInQhyphenhyphenVh5SLJIr-HwS1cfCKOXLMcnzBJDk/s640/carrusel.JPG&quot; vr=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
ARCHIVO ACTION SCRIPT EN FLASH&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: as3;&quot;&gt;// ++++ Carrusel v1.0 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ajustes para la carga del xml
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
// para no tener que escribir la ruta completa de las clases que usaremos más adelante
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Matrix;
// -----------------------------------------------------------------------------
// ----- ajustes personalizables -----------------------------------------------
// -----------------------------------------------------------------------------
// ancho carrusel en px
var ancho_carrusel:Number = 850;
// ancho de miniatura en su punto máx (en el centro del carrusel) en px
var ancho_miniatura:Number = 200;
// velocidad en escala inversa, cuanto menor sea su valor más rápido gira
var v_giro:Number=70;
var reflejar:Boolean = true;
// color de fondo para que el reflejo quede bien
var color_fondo:Number = 0xF4F4F4;
// array donde metemos los elementos del XML
var x0:Number = 365;
var y0:Number = 185;
var urlfoto__:String=&quot;&quot;
var cantop_:Number;
 var DatoRuta = new LoadVars();
    DatoRuta.load(&quot;Datos_Menu/rutaweb.xml&quot;);
  DatoRuta.onLoad=function(){
   urlfoto__=this.rutaweb; //&quot;D:/Cristhian/Descargas/Imágenes rotatorias 3D/&quot;
   cantop_=this.cantop;
//trace(&quot;rutaweb = &quot;+this.rutaweb);

 };
 
var url_fotos:String =urlfoto__ + &quot;Datos_Menu/imagenesMenu.xml&quot;;
// &quot;D:/Cristhian/Descargas/Imágenes rotatorias 3D/Datos_Menu/imagenesMenu.txt&quot;;
var dir_minis:String =urlfoto__ ; 
//+ &quot;images/menu/&quot;;
 //&quot;D:/Cristhian/Descargas/Imágenes rotatorias 3D/menu/&quot;;

   
 
// ------------------------------------------------------------------------------
// ----- fin ajustes personalizables --------------------------------------------
// ------------------------------------------------------------------------------
// objeto XML que carga la lista de miniaturas
// Hasta aquí hemos definido una serie de ajustes iniciales.
var IMG_array:Array;
var incre:Number = 0;
var num_fotos:Number;
var num_fotos_cargadas:Number;
var radio:Number = (ancho_carrusel-ancho_miniatura-10)*0.5;
var miniaturasXML:XML = new XML();
miniaturasXML.onLoad = cargarMiniaturas;
miniaturasXML.load(url_fotos);
// funcion que se ejecuta al cargar el XML
function cargarMiniaturas():Void {
 IMG_array = this.firstChild.childNodes;
 num_fotos = cantop_;
 //num_fotos = IMG_array.length;
 var contenedor:MovieClip = _root.createEmptyMovieClip(&quot;contenedor_mc&quot;, _root.getNextHighestDepth());
 contenedor._y = y0;
 contenedor._visible = false;
 var carrusel:MovieClip = contenedor.createEmptyMovieClip(&quot;carrusel_miniaturas_mc&quot;, contenedor.getNextHighestDepth());
 // lo posiciono donde nos conviene
 carrusel._x = x0;
 //carrusel._y = y0;
 num_fotos_cargadas = 0;
 for (var k:Number = 0; k&lt;num_fotos; !=&quot;-1)&quot; (num_fotos_cargadas=&quot;&quot; (ruta.indexof(?.png?)=&quot;&quot; +=&quot;&quot; -k?+orden);=&quot;&quot; 0=&quot;&quot; ?+num_fotos);=&quot;&quot; ?+num_fotos_cargadas+?=&quot;&quot; ?+orden+?=&quot;&quot; ?+ruta,dentro);=&quot;&quot; ?_blank?);=&quot;&quot; ?_self?);=&quot;&quot; _alpha=&quot;&quot; _self?);=&quot;&quot; a=&quot;&quot; acciones=&quot;&quot; al=&quot;&quot; aquí=&quot;&quot; bytesloaded:number,=&quot;&quot; bytestotal:number)=&quot;&quot; carga=&quot;&quot; cargadas:=&quot;&quot; cargamos=&quot;&quot; cargar=&quot;&quot; caso=&quot;&quot; clic=&quot;&quot; clip.forcesmoothing=&quot;true;&quot; clip.getnexthighestdepth());=&quot;&quot; clip.orden=&quot;orden;&quot; clip:movieclip=&quot;contenedor_mc.carrusel_miniaturas_mc.createEmptyMovieClip(&amp;quot;foto_&amp;quot;+orden,&quot; clip=&quot;&quot; coef:number=&quot;target_mc._width/ancho_miniatura;&quot; comienza=&quot;&quot; completado=&quot;&quot; considerado=&quot;&quot; contendrá=&quot;&quot; contenedor_mc.carrusel_miniaturas_mc.getnexthighestdepth());=&quot;&quot; crearminiatura(img_array[k].attributes.nombre,k,img_array[k].attributes.urlw);=&quot;&quot; cuando=&quot;&quot; de=&quot;&quot; definimos=&quot;&quot; dentro.forcesmoothing=&quot;true;&quot; dentro:movieclip=&quot;clip.createEmptyMovieClip(&amp;quot;foto&amp;quot;,&quot; detector=&quot;&quot; disponible=&quot;&quot; el=&quot;&quot; else=&quot;&quot; en=&quot;&quot; este=&quot;&quot; eventos=&quot;&quot; foto=&quot;&quot; geturl(?http:=&quot;&quot; geturl(this.urlfoto__=&quot;&quot; ha=&quot;&quot; hacer=&quot;&quot; hemos=&quot;&quot; if=&quot;&quot; imagen=&quot;&quot; k++)=&quot;&quot; la=&quot;&quot; lo=&quot;&quot; mi_mcl.addlistener(milistener);=&quot;&quot; mi_mcl.loadclip(?http:=&quot;&quot; mi_mcl.loadclip(dir_minis+ruta,dentro);=&quot;&quot; mi_mcl:moviecliploader=&quot;new&quot; milistener.onloadinit=&quot;function(target_mc:MovieClip)&quot; milistener.onloadprogress=&quot;function(target_mc:MovieClip,&quot; milistener.onloadstart=&quot;function(target_mc:MovieClip)&quot; milistener:object=&quot;new&quot; miniatura=&quot;&quot; miniaturas=&quot;&quot; mostrar=&quot;&quot; moviecliploader();=&quot;&quot; moviecliploader=&quot;&quot; no=&quot;&quot; num_fotos_cargadas++;=&quot;&quot; object();=&quot;&quot; objeto=&quot;&quot; oportuno=&quot;&quot; para=&quot;&quot; podéis=&quot;&quot; ponemos=&quot;&quot; poner=&quot;&quot; precarga,=&quot;&quot; ruta=&quot;+ruta+&quot; se=&quot;&quot; target_mc._alpha=&quot;0;&quot; target_mc._height=&quot;int(target_mc._height/coef);&quot; target_mc._width=&quot;ancho_miniatura;&quot; target_mc._x=&quot;-(int(target_mc._width*0.5));&quot; target_mc._y=&quot;0;&quot; target_mc.onrelease=&quot;function()&quot; target_mc.smoothbitmap();=&quot;&quot; temp_array:array=&quot;ruta.split(&amp;quot;.png&amp;quot;);&quot; tenemos=&quot;&quot; trace(?nom=&quot;+IMG_array[k].attributes.nombre+&quot; trace(?onloadinit:=&quot;&quot; tutorial.asp?id_tuto=&quot;+temp_array[0], &quot; un=&quot;&quot; una=&quot;&quot; url=&quot;+IMG_array[k].attributes.urlw);
 }

}

function crearMiniatura(ruta:String, orden:Number,urlw:String):Void {
  
 //trace(&quot; urlw,=&quot;&quot; var=&quot;&quot; www.tutoriales-flash.com=&quot;&quot; www.tutoriales-flash.com?,=&quot;&quot; y=&quot;&quot; ya=&quot;&quot; {=&quot;&quot; |=&quot;&quot; };=&quot;&quot; }=&quot;&quot;&gt;=num_fotos) {
   setTimeout(_root.girar_carrusel,500);
  }
 };
}
function girar_carrusel() {
 contenedor_mc._y = y0-contenedor_mc._height;
 if (reflejar) {
  var reflejo:MovieClip = _root.createEmptyMovieClip(&quot;reflejo_miniaturas_mc&quot;, _root.getNextHighestDepth());
  reflejo._yscale = -100;
  reflejo._y = contenedor_mc._y+contenedor_mc._height*2+1;
  var myMatrix:Matrix = new Matrix();
  myMatrix.createGradientBox(ancho_carrusel,contenedor_mc._height,Math.PI/2,0,-15);
  var sombreado:MovieClip = _root.createEmptyMovieClip(&quot;sombreado_mc&quot;, _root.getNextHighestDepth());
  var colors:Array = [color_fondo, color_fondo, color_fondo];
  var alphas:Array = [40, 90, 100];
  var ratios:Array = [0, 160, 255];
  sombreado.beginGradientFill(&quot;linear&quot;,colors,alphas,ratios,myMatrix);
  sombreado.moveTo(0,0);
  sombreado.lineTo(ancho_carrusel,0);
  sombreado.lineTo(ancho_carrusel,contenedor_mc._height);
  sombreado.lineTo(0,contenedor_mc._height);
  sombreado.lineTo(0,0);
  sombreado._y = y0+1;
  sombreado._x = x0-sombreado._width*0.5;
 }
 delete contenedor_mc.onEnterFrame;
 contenedor_mc.onEnterFrame = function() {
  incre += (_root._xmouse-x0)/_root.v_giro;
  for (var k:Number = 0; k&amp;lt;=num_fotos; k++) {
   this.carrusel_miniaturas_mc[&quot;foto_&quot;+k].girar();
  }
  if (reflejar) {
   var bmp:BitmapData = new BitmapData(ancho_carrusel+100, this._height, true, 0x00000000);
   var myRectangle:Rectangle = new Rectangle(0, 0, ancho_carrusel+100, this._height);
   bmp.draw(this,new Matrix(),new ColorTransform(),&quot;normal&quot;,myRectangle,true);
   _root.reflejo_miniaturas_mc.attachBitmap(bmp,1,&quot;auto&quot;,true);
  }
 };
 contenedor_mc._visible = true;
}
MovieClip.prototype.girar = function() {
 var degrees:Number = _root.incre+(360*this.orden/num_fotos);
 var radians:Number = degrees*Math.PI/180;
 if (Math.sin(radians)&amp;lt;0) {
  this._alpha = 15;
 } else {
  this._alpha = 100;
 }
 this._x = radio*Math.cos(radians);
 this._xscale = (1-Math.cos(radians+Math.PI*0.5))*99-99;
 this.swapDepths(int(this._xscale*10));

 
 //this.swapDepths(Math.round(this._xscale) + 100);
 
};
&lt;/pre&gt;&lt;br /&gt;
ARCHIVO XML&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;- 
&lt;exploracion carpeta=&quot;miniaturas&quot;&gt;
  &lt;archivo nombre=&quot;images/menu/1.png&quot; size=&quot;3&quot; urlw=&quot;forms1/default.aspx&quot;&gt; 
  &lt;archivo nombre=&quot;images/menu/2.png&quot; size=&quot;3&quot; urlw=&quot;forms2/default.aspx&quot;&gt; 
  &lt;archivo nombre=&quot;images/menu/3.png&quot; size=&quot;3&quot; urlw=&quot;forms3/default.aspx&quot;&gt; 
  &lt;archivo nombre=&quot;images/menu/4.png&quot; size=&quot;3&quot; urlw=&quot;forms4/default.aspx&quot;&gt; 
  &lt;archivo nombre=&quot;images/menu/5.png&quot; size=&quot;3&quot; urlw=&quot;forms5/default.aspx&quot;&gt; 
  &lt;archivo nombre=&quot;images/menu/6.png&quot; size=&quot;3&quot; urlw=&quot;forms6/default.aspx&quot;&gt; 
  &lt;archivo nombre=&quot;images/menu/7.png&quot; size=&quot;3&quot; urlw=&quot;forms7/default.aspx&quot;&gt; 
  &lt;archivo nombre=&quot;images/menu/8.png&quot; size=&quot;3&quot; urlw=&quot;forms8/default.aspx&quot;&gt; 
  &lt;/exploracion&gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/6500770661602179790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/menu-carrusel-flash.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/6500770661602179790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/6500770661602179790'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/menu-carrusel-flash.html' title='Menu Carrusel Flash'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_VPTdFUaZusFBxNXBWwU7uwqwMZc8y7Hrjo3FUBV-dg7-o7Zzb2n77GW6fNysRgGGKLtQuL5nA_c1qDXm6Ih49QNhTaLw0nRJyj0EdKXQBHInQhyphenhyphenVh5SLJIr-HwS1cfCKOXLMcnzBJDk/s72-c/carrusel.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-5557401359136625656</id><published>2009-10-20T14:21:00.001-05:00</published><updated>2009-10-20T14:22:15.635-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AspNet"/><title type='text'>BusyBox AspNet</title><content type='html'>A menudo necesidad de proporcionar un mensaje al usuario informandole que su solicitud esta procesando &quot;Request&quot;. Al igual que muestra el reloj en el puntero ratón permite al usuario de Windows saber que el sistema está ocupado procesando su última petición, tengo un sencillo, limpio, y la solución a la prestación de este efecto en las páginas web. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJjOrZYvrnJScA8ZdaSet1Vf39o9QEB3IRbXof-yBsXCBoIZP0Q1Hcu1dEUpAHagaUxY7_V66K53fyr8P8kVld4TmMwhha_kYH6jRom-DrW8_G6onD_CIdooKjXoAwElTxUzr7R0CC4CY/s1600-h/busyBox.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJjOrZYvrnJScA8ZdaSet1Vf39o9QEB3IRbXof-yBsXCBoIZP0Q1Hcu1dEUpAHagaUxY7_V66K53fyr8P8kVld4TmMwhha_kYH6jRom-DrW8_G6onD_CIdooKjXoAwElTxUzr7R0CC4CY/s400/busyBox.JPG&quot; vr=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Demo: &lt;a href=&quot;http://blogs.crsw.com/mark/samples/BusyBoxDemo/Default.aspx&quot;&gt;http://blogs.crsw.com/mark/samples/BusyBoxDemo/Default.aspx&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Descargas: &lt;a href=&quot;http://www.busybox.net/&quot;&gt;http://www.busybox.net/&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='enclosure' type='BusyBox' href='http://www.busybox.net/' length='0'/><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/5557401359136625656/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/busybox-aspnet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5557401359136625656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5557401359136625656'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/busybox-aspnet.html' title='BusyBox AspNet'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJjOrZYvrnJScA8ZdaSet1Vf39o9QEB3IRbXof-yBsXCBoIZP0Q1Hcu1dEUpAHagaUxY7_V66K53fyr8P8kVld4TmMwhha_kYH6jRom-DrW8_G6onD_CIdooKjXoAwElTxUzr7R0CC4CY/s72-c/busyBox.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-2619621632995649812</id><published>2009-10-15T15:25:00.001-05:00</published><updated>2009-10-16T08:22:44.144-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Windows SharePoint Services Development</title><content type='html'>&lt;div style=&quot;text-align: left; width: 425px;&quot;&gt;&lt;a href=&quot;http://www.slideboom.com/presentations/103460/DEV02---Windows-SharePoint-Services-Development-Part-2---The-User-Interface&quot; style=&quot;color: #0000cc; display: block; font: 14px Helvetica,Arial,Sans-serif; margin: 12px 0px 3px; text-decoration: underline;&quot; title=&quot;DEV02 - Windows SharePoint Services Development Part 2 - The User Interface&quot;&gt;DEV02 - Windows SharePoint Services Development Part 2 - The User Interface&lt;/a&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0&quot; height=&quot;370&quot; id=&quot;onlinePlayer&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.slideboom.com/player/player.swf?id_resource=103460&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;flashVars&quot; value=&quot;title=DEV02 - Windows SharePoint Services Development Part 2 - The User Interface&amp;url=http://www.slideboom.com/presentations/103460/DEV02---Windows-SharePoint-Services-Development-Part-2---The-User-Interface&amp;mode=0&amp;idResource=103460&amp;siteUrl=http://www.slideboom.com&amp;embed=1&amp;startAuto=0&amp;autoReplay=0&amp;autoOpenShareScreen=1&quot; /&gt;&lt;embed src=&quot;http://www.slideboom.com/player/player.swf?id_resource=103460&quot; width=&quot;425&quot; height=&quot;370&quot; name=&quot;onlinePlayer&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;allowScriptAccess=&quot;always&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; allowFullScreen=&quot;true&quot; flashVars=&quot;title=DEV02 - Windows SharePoint Services Development Part 2 - The User Interface&amp;url=http://www.slideboom.com/presentations/103460/DEV02---Windows-SharePoint-Services-Development-Part-2---The-User-Interface&amp;mode=0&amp;idResource=103460&amp;siteUrl=http://www.slideboom.com&amp;embed=1&amp;startAuto=0&amp;autoReplay=0&amp;autoOpenShareScreen=1&quot; &gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: tahoma,arial; font-size: 11px; height: 26px; padding-top: 2px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/2619621632995649812/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/windows-sharepoint-services-development.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/2619621632995649812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/2619621632995649812'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/windows-sharepoint-services-development.html' title='Windows SharePoint Services Development'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-7464954885643966852</id><published>2009-10-15T14:28:00.003-05:00</published><updated>2009-10-20T12:06:09.293-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AspNet"/><title type='text'>Validator RadioButtonList and CheckBoxList</title><content type='html'>Hace tiempo tuve un problema al momento de validar un:&lt;br /&gt;
&lt;br /&gt;
CheckBoxList y un RadioButtonList;&amp;nbsp;investigando encontre con esta solucion y la optimice&amp;nbsp;, espero les ayude bastante y de alli me comentan como les fue y si les resulto de ayuda.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQDN0fhPdzeXkGnxQ2poXdxH8H74MpBwMU6Ya_hQUryuL5OZlLNpRWtLEOVpi-olbOOTpHL7VGTGtC_MdWY_qOhtbAmEdQO73_Ads0dY6aiiNTJZ42I_aaReCKEevtQnMNJpnN6RWwM48/s1600-h/checklistbox.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img $r=&quot;true&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQDN0fhPdzeXkGnxQ2poXdxH8H74MpBwMU6Ya_hQUryuL5OZlLNpRWtLEOVpi-olbOOTpHL7VGTGtC_MdWY_qOhtbAmEdQO73_Ads0dY6aiiNTJZ42I_aaReCKEevtQnMNJpnN6RWwM48/s320/checklistbox.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinktNUQxFRikGAXIU2pNu4DKbdg6CqhVSfxm0eG0DUxOjv7UOi-u-YYn6-6c3YamFudcapkjKXtHAZSy8RZ1Gr0t9KVwKtPhlZ-EzeXtzgE6cbb1lrsKYD3cWF5Lu28aEYWbOxTwEs1Lo/s1600-h/radiobuttonlist.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img $r=&quot;true&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinktNUQxFRikGAXIU2pNu4DKbdg6CqhVSfxm0eG0DUxOjv7UOi-u-YYn6-6c3YamFudcapkjKXtHAZSy8RZ1Gr0t9KVwKtPhlZ-EzeXtzgE6cbb1lrsKYD3cWF5Lu28aEYWbOxTwEs1Lo/s320/radiobuttonlist.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #cc0000;&quot;&gt;CheckBoxList Validator&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: vbnet;&quot;&gt;Public Class RequiredFieldValidatorForCheckBoxLists


Inherits BaseValidator

Private Const SCRIPTBLOCK As String = &quot;RFV4CL&quot;

Protected Overloads Overrides Function ControlPropertiesValid() As Boolean

Dim ctrl As Control = FindControl(ControlToValidate)

If ctrl IsNot Nothing Then

Dim _listctrl As CheckBoxList = DirectCast(ctrl, CheckBoxList)

Return (_listctrl IsNot Nothing)

Else

Return False

End If

End Function



Protected Overloads Overrides Function EvaluateIsValid() As Boolean

Return EvaluateIsChecked()

End Function



Protected Overloads Overrides Sub OnPreRender(ByVal e As EventArgs)

MyBase.OnPreRender(e)

If EnableClientScript Then

Me.ClientScript()

End If



End Sub



Private Sub ClientScript()

Dim sb_Script As New StringBuilder()

sb_Script.Append(&quot;&lt;script javascript??=&quot;&quot; language=&quot;&quot;&gt;
&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;function cb_verify(sender) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;var val = document.getElementById(document.getElementById(sender.id).controltovalidate);&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;var col = val.getElementsByTagName(&quot;&quot;*&quot;&quot;);&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;if ( col != null ) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;for ( i = 0; i &lt; col.length; i++ ) {&quot;)&lt;/P&gt;
&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;if (col.item(i).tagName == &quot;&quot;INPUT&quot;&quot;) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;if ( col.item(i).checked ) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;return true;&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;return false;&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;
&lt;/script&gt; &quot;)

Page.ClientScript.RegisterClientScriptBlock([GetType](), SCRIPTBLOCK, sb_Script.ToString())

Page.ClientScript.RegisterExpandoAttribute(ClientID, &quot;evaluationfunction&quot;, &quot;cb_verify&quot;)

End Sub





Private Function EvaluateIsChecked() As Boolean

Dim _cbl As CheckBoxList = DirectCast(FindControl(ControlToValidate), CheckBoxList)

For Each li As ListItem In _cbl.Items

If li.Selected Then

Return True

End If

Next

Return False

End Function

End Class 

&lt;/pre&gt;&lt;span style=&quot;background-color: white; color: #cc0000;&quot;&gt;RadioButtonList Validator&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: vbnet;&quot;&gt;Public Class RequiredFieldValidatorForRadioButtonList


Inherits BaseValidator

Private Const SCRIPTBLOCK As String = &quot;RFV4CL&quot;


Protected Overloads Overrides Function ControlPropertiesValid() As Boolean

Dim ctrl As Control = FindControl(ControlToValidate)

If ctrl IsNot Nothing Then

Dim _listctrl As RadioButtonList = DirectCast(ctrl, RadioButtonList)

Return (_listctrl IsNot Nothing)

Else

Return False

End If

End Function



Protected Overloads Overrides Function EvaluateIsValid() As Boolean

Return EvaluateIsChecked()

End Function


Protected Overloads Overrides Sub OnPreRender(ByVal e As EventArgs)

MyBase.OnPreRender(e)

If EnableClientScript Then

Me.ClientScript()

End If



End Sub



Private Sub ClientScript()

Dim sb_Script As New StringBuilder()

sb_Script.Append(&quot;&lt;script javascript??=&quot;&quot; language=&quot;&quot;&gt;
&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;function cb_verify_R(sender) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;var val = document.getElementById(document.getElementById(sender.id).controltovalidate);&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;var col = val.getElementsByTagName(&quot;&quot;*&quot;&quot;);&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;if ( col != null ) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;for ( i = 0; i &lt; col.length; i++ ) {&quot;)&lt;/P&gt;
&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;if (col.item(i).tagName == &quot;&quot;INPUT&quot;&quot;) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;if ( col.item(i).checked ) {&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;return true;&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;return false;&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;}&quot;)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(vbCr)&lt;/P&gt;&lt;p&gt;



sb_Script.Append(&quot;
&lt;/script&gt; &quot;)

Page.ClientScript.RegisterClientScriptBlock([GetType](), SCRIPTBLOCK, sb_Script.ToString())

Page.ClientScript.RegisterExpandoAttribute(ClientID, &quot;evaluationfunction&quot;, &quot;cb_verify_R&quot;)

End Sub


Private Function EvaluateIsChecked() As Boolean

Dim _cbl As RadioButtonList = DirectCast(FindControl(ControlToValidate), RadioButtonList)

For Each li As ListItem In _cbl.Items

If li.Selected Then

Return True

End If

Next

Return False

End Function

End Class
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/7464954885643966852/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/validator-radiobuttonlist-and.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7464954885643966852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7464954885643966852'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/validator-radiobuttonlist-and.html' title='Validator RadioButtonList and CheckBoxList'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQDN0fhPdzeXkGnxQ2poXdxH8H74MpBwMU6Ya_hQUryuL5OZlLNpRWtLEOVpi-olbOOTpHL7VGTGtC_MdWY_qOhtbAmEdQO73_Ads0dY6aiiNTJZ42I_aaReCKEevtQnMNJpnN6RWwM48/s72-c/checklistbox.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-4633426135759629293</id><published>2009-10-14T16:27:00.001-05:00</published><updated>2009-10-16T08:23:19.776-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AspNet"/><title type='text'>ToolTip over in IFRAME</title><content type='html'>Hace poco me preguntaron sobre un problema al momento de crear tooltip dentro de un iframe que sobrepasaban el tamaño del iframe y no se llegaba a mostrar todo el tooltip, aqui muestro la pequeña solución espero les sirva. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Este es el problema que me dijeron, se mostraba el tooltip dentro del IFRAME&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dLSxhCcSScfr_-X8erom1JECTTTMedt_nMvqp-x3f2Nx5YJ4viv8s24T6KNfZBHEzhSKbPt3hyphenhyphenOO3s5Hli65QpyjYl7x2hoywbD3osaXFFBk8M9Yokq2DU-fPbRfUwTKUKy3qyT3pkg/s1600-h/Untitled-3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img $r=&quot;true&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dLSxhCcSScfr_-X8erom1JECTTTMedt_nMvqp-x3f2Nx5YJ4viv8s24T6KNfZBHEzhSKbPt3hyphenhyphenOO3s5Hli65QpyjYl7x2hoywbD3osaXFFBk8M9Yokq2DU-fPbRfUwTKUKy3qyT3pkg/s400/Untitled-3.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
- La Solución o un pequeño tip si asi lo quieren llamar.&lt;br /&gt;
&lt;br /&gt;
* la pagina que se va a usar como IFRAME&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPdGhwcuPXFR3NDy6P4OtI0T8jcROOSKhtBNkiHd52iVd3LUkW5NmnoEMcbQGqGFEquuAf433PHwi5pZqJ3VLCAAVFs4SWr-Y10686KpGIDZr0Ch8BjvWEKAHb0FVdhD99bb7eR0CT8ak/s1600-h/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img $r=&quot;true&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPdGhwcuPXFR3NDy6P4OtI0T8jcROOSKhtBNkiHd52iVd3LUkW5NmnoEMcbQGqGFEquuAf433PHwi5pZqJ3VLCAAVFs4SWr-Y10686KpGIDZr0Ch8BjvWEKAHb0FVdhD99bb7eR0CT8ak/s400/1.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
* La página que se va a usar como contenedora del IFRAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixKf4sMnuhZCd9auLcaP-5el68-iHWf8wu-xv_7T9YrO8Llfim0WG2rdaJaQcGXKp92uiEVAvx6ZO6thQM6BJ1ye9w27cUVpaCuHfJD8xQ8KC05NM9DymgopE3zL5JJXbY_lHaP_Fal5k/s1600-h/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img $r=&quot;true&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixKf4sMnuhZCd9auLcaP-5el68-iHWf8wu-xv_7T9YrO8Llfim0WG2rdaJaQcGXKp92uiEVAvx6ZO6thQM6BJ1ye9w27cUVpaCuHfJD8xQ8KC05NM9DymgopE3zL5JJXbY_lHaP_Fal5k/s400/2.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
IFRAME&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPyvYV27GG-wYiGdKQf8ComWP1XJCEF7LG-bRI-chW0uYtJ8gui_CmuyPZ8v2t7OB9tXdQR3PsqyfgdSdmcIa9g4F7gKNA0qwW1QEvxUjCsuH4YgCtCGdsmepgB-jnaFWHqjgij4mNASk/s1600-h/tool.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img $r=&quot;true&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPyvYV27GG-wYiGdKQf8ComWP1XJCEF7LG-bRI-chW0uYtJ8gui_CmuyPZ8v2t7OB9tXdQR3PsqyfgdSdmcIa9g4F7gKNA0qwW1QEvxUjCsuH4YgCtCGdsmepgB-jnaFWHqjgij4mNASk/s320/tool.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;- IFRAME con el tooltip&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2LZNP0gLXUUi1ld2p7h8zh25QV_SNwepQzFdwY8JiItCVNUV8RIu25kWb1tB1u-Pj76HJWBUcw0Z3rWrFLte-wbsODg4q0ye5Qh5YO6C2v4jJ4dwiddJthCIxlsQBHkd_2vPQzZnJSMg/s1600-h/tooltip.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5392561006784755970&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2LZNP0gLXUUi1ld2p7h8zh25QV_SNwepQzFdwY8JiItCVNUV8RIu25kWb1tB1u-Pj76HJWBUcw0Z3rWrFLte-wbsODg4q0ye5Qh5YO6C2v4jJ4dwiddJthCIxlsQBHkd_2vPQzZnJSMg/s320/tooltip.png&quot; style=&quot;height: 247px; width: 320px;&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saludos a mi amigo Osamu Nakamatsu quien me pidio hacerle esta solución.</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/4633426135759629293/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/tooltip-over-in-iframe.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4633426135759629293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4633426135759629293'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/10/tooltip-over-in-iframe.html' title='ToolTip over in IFRAME'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dLSxhCcSScfr_-X8erom1JECTTTMedt_nMvqp-x3f2Nx5YJ4viv8s24T6KNfZBHEzhSKbPt3hyphenhyphenOO3s5Hli65QpyjYl7x2hoywbD3osaXFFBk8M9Yokq2DU-fPbRfUwTKUKy3qyT3pkg/s72-c/Untitled-3.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-3009360441638806636</id><published>2009-09-26T14:09:00.006-05:00</published><updated>2009-11-24T08:43:54.758-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Integración de jQuery con SharePoint II</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/3009360441638806636/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/integracion-de-jquery-con-sharepoint-ii.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/3009360441638806636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/3009360441638806636'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/integracion-de-jquery-con-sharepoint-ii.html' title='Integración de jQuery con SharePoint II'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-7490822481978674138</id><published>2009-09-26T14:08:00.001-05:00</published><updated>2009-11-24T08:19:45.502-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Integración de jQuery con SharePoint I</title><content type='html'></content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/7490822481978674138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/integracion-de-jquery-con-sharepoint-i.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7490822481978674138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7490822481978674138'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/integracion-de-jquery-con-sharepoint-i.html' title='Integración de jQuery con SharePoint I'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-7909220062291723764</id><published>2009-09-26T14:03:00.002-05:00</published><updated>2009-10-16T08:22:44.144-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>SharePoint search-as-you-type with jQuery</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHiv_N7WmkKwhkHhOfbLJNFhmX4E30jgG5vBSjTA0ffCAWSFZ_44WNNX-dd_nmCuORQHrVis7HRxdqBe3oB4xuRuqZPPRRaS-OoPz_QiaxXq-9PAMFGrtO3gG4ffYkGU6p0Sn7C43NE9Y/s1600-h/search_ahead.jpeg&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 211px; height: 231px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHiv_N7WmkKwhkHhOfbLJNFhmX4E30jgG5vBSjTA0ffCAWSFZ_44WNNX-dd_nmCuORQHrVis7HRxdqBe3oB4xuRuqZPPRRaS-OoPz_QiaxXq-9PAMFGrtO3gG4ffYkGU6p0Sn7C43NE9Y/s320/search_ahead.jpeg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5385854733956832274&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Archivos Adjuntos &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CSS y Javascript:  &lt;a href=&quot;http://www.mobiusdevelopment.com/dev/downloads/jQuery_search_ahead.txt&quot;&gt;http://www.mobiusdevelopment.com/dev/downloads/jQuery_search_ahead.txt&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/7909220062291723764/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/sharepoint-search-as-you-type-with.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7909220062291723764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7909220062291723764'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/sharepoint-search-as-you-type-with.html' title='SharePoint search-as-you-type with jQuery'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHiv_N7WmkKwhkHhOfbLJNFhmX4E30jgG5vBSjTA0ffCAWSFZ_44WNNX-dd_nmCuORQHrVis7HRxdqBe3oB4xuRuqZPPRRaS-OoPz_QiaxXq-9PAMFGrtO3gG4ffYkGU6p0Sn7C43NE9Y/s72-c/search_ahead.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-1261513184159366251</id><published>2009-09-26T13:41:00.002-05:00</published><updated>2009-10-16T08:22:44.145-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>jQuery in SharePoint Example - Rounded Corners</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  line-height: 19px; font-family:&#39;Courier New&#39;;font-size:13px;&quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#0000FF;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Usando MOSS y &lt;span class=&quot;Apple-style-span&quot;  style=&quot; white-space: normal; color: rgb(51, 51, 51); font-family:Verdana, sans-serif;&quot;&gt; &lt;a href=&quot;http://www.methvin.com/jquery/jq-corner-demo.html&quot; style=&quot;color: rgb(102, 153, 204); &quot;&gt;jQuery.Round&lt;/a&gt; plug-in.&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#0000FF;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#0000FF;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#0000FF;&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRBR3AVdAo8qBBL22dFXHn1U_n1Y-37j_IzdiE0YdYAyD6hJEH7ZXG2NSQBF6L1fh7LVehDqWFbr5doxKoRQwQk5GL0CskrWzwvELLTZiFNd4bA2DynXrxfBQ3PHmVyqUeUPROzeJim3Q/s320/RoundedCorners.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 181px; height: 250px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5385849058937026242&quot; /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#0000FF;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span style=&quot; ;color:blue;&quot;&gt;function&lt;/span&gt; AddQuickLaunchCorners()&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    $(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;.ms-quicklaunchouter&quot;&lt;/span&gt;).corner(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;10px&quot;&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    $(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;div.ms-quickLaunch h3.ms-standardheader span div.ms-quicklaunchheader&quot;&lt;/span&gt;).css(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;background-color&quot;&lt;/span&gt;, &lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;#c1ecff&quot;&lt;/span&gt;).corner(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;top 7px&quot;&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    $(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;table.ms-recyclebin:last td&quot;&lt;/span&gt;).corner(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;bottom 7px&quot;&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;}&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  white-space: normal; color: rgb(51, 51, 51); font-family:Verdana, sans-serif;font-size:13px;&quot;&gt;&lt;div color=&quot;black&quot; size=&quot;10pt&quot; face=&quot;Courier New&quot; style=&quot;background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white; background-position: initial initial; &quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;window.onfocus = ReapplyQuickLaunchCorners;&lt;/pre&gt;&lt;/div&gt;&lt;div color=&quot;black&quot; size=&quot;10pt&quot; face=&quot;Courier New&quot; style=&quot;background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white; background-position: initial initial; &quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div    style=&quot; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white;   background-position: initial initial; font-family:&#39;Courier New&#39;;font-size:10pt;color:black;&quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span style=&quot; ;color:blue;&quot;&gt;function&lt;/span&gt; ReapplyQuickLaunchCorners()&lt;/pre&gt;&lt;/div&gt;&lt;div face=&quot;&#39;Courier New&#39;&quot; size=&quot;10pt&quot; color=&quot;black&quot; style=&quot; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white;   background-position: initial initial; &quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;{&lt;/pre&gt;&lt;/div&gt;&lt;div face=&quot;&#39;Courier New&#39;&quot; size=&quot;10pt&quot; color=&quot;black&quot; style=&quot; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white;   background-position: initial initial; &quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    RemoveQuickLaunchCorners();&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 10pt; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white; color: black; font-family: &#39;Courier New&#39;; background-position: initial initial; &quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    AddQuickLaunchCorners();&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 10pt; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white; color: black; font-family: &#39;Courier New&#39;; background-position: initial initial; &quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 10pt; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white; color: black; font-family: &#39;Courier New&#39;; background-position: initial initial; &quot;&gt;&lt;span style=&quot;  ;font-family:Georgia;font-size:13px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 10pt; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white; color: black; font-family: &#39;Courier New&#39;; background-position: initial initial; &quot;&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 10pt; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: white; color: black; font-family: &#39;Courier New&#39;; background-position: initial initial; &quot;&gt;&lt;br /&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span style=&quot; ;color:blue;&quot;&gt;function&lt;/span&gt; RemoveQuickLaunchCorners()&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    $(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;div.ms-quicklaunchouter&gt;div:not(.ms-quickLaunch)&quot;&lt;/span&gt;).remove();&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    $(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;div.ms-quickLaunch h3.ms-standardheader span div.ms-quicklaunchheader&gt;div&quot;&lt;/span&gt;).remove();&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;    $(&lt;span style=&quot;color: rgb(163, 21, 21); &quot;&gt;&quot;table.ms-recyclebin:last td&gt;div&quot;&lt;/span&gt;).remove();&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;}&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Fuente: &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;; white-space: normal; &quot;&gt;&lt;a href=&quot;http://sharethelearning.blogspot.com/2008/11/jquery-in-sharepoint-example-rounded.html&quot;&gt;http://sharethelearning.blogspot.com/2008/11/jquery-in-sharepoint-example-rounded.html&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;Courier New&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;Courier New&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/1261513184159366251/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-in-sharepoint-example-rounded.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/1261513184159366251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/1261513184159366251'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-in-sharepoint-example-rounded.html' title='jQuery in SharePoint Example - Rounded Corners'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRBR3AVdAo8qBBL22dFXHn1U_n1Y-37j_IzdiE0YdYAyD6hJEH7ZXG2NSQBF6L1fh7LVehDqWFbr5doxKoRQwQk5GL0CskrWzwvELLTZiFNd4bA2DynXrxfBQ3PHmVyqUeUPROzeJim3Q/s72-c/RoundedCorners.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-9019586956031132211</id><published>2009-09-26T13:11:00.003-05:00</published><updated>2009-10-16T08:21:57.152-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>jQuery : Aprendiendo desde cero</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtrrmdx04apNCSODTMXC83_u-rHreqb5QB5XJ9tohH3onXSkLgr0xAfqzBz1ZhD5BWJJTnMaaqywDq8__QS7gvoO8dSUX7TP7tAmhmgyfCAI-QN_LD8MbNanDoaQXWt_fLanpZvpl_uCI/s1600-h/omg.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 211px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtrrmdx04apNCSODTMXC83_u-rHreqb5QB5XJ9tohH3onXSkLgr0xAfqzBz1ZhD5BWJJTnMaaqywDq8__QS7gvoO8dSUX7TP7tAmhmgyfCAI-QN_LD8MbNanDoaQXWt_fLanpZvpl_uCI/s320/omg.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5385841832634448658&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  ;font-family:Arial, Helvetica, sans-serif;font-size:12px;&quot;&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; &quot;&gt;Si eres nuevo en esta tecnologia , te va a interesar ese post , son tutoriales mostrados en videos espero les sirva  &lt;a href=&quot;http://www.jquery.com/&quot; target=&quot;_blank&quot; style=&quot;color: rgb(115, 41, 176); text-decoration: none; &quot;&gt;jquery&lt;/a&gt; y lo pongan en practica en sus aplicaciones. Son 15 video tutoriales de una duración aproximada de 10 minutos cada uno donde enseña ejemplos prácticos de uso de jquery.&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; &quot;&gt;La malo es que está en inglés. Aunque se entiende muy bien. Es muy fácil seguir el hilo si se tiene un nivel medio de inglés.&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; &quot;&gt;link:&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://blog.themeforest.net/tutorials/jquery-for-absolute-beginners-video-series/&quot; style=&quot;color: rgb(115, 41, 176); text-decoration: none; &quot;&gt;http://blog.themeforest.net/tutorials/jquery-for-absolute-beginners-video-series/&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 20px; &quot;&gt;Espero que lo usen.&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/9019586956031132211/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-aprendiendo-desde-cero.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/9019586956031132211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/9019586956031132211'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-aprendiendo-desde-cero.html' title='jQuery : Aprendiendo desde cero'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtrrmdx04apNCSODTMXC83_u-rHreqb5QB5XJ9tohH3onXSkLgr0xAfqzBz1ZhD5BWJJTnMaaqywDq8__QS7gvoO8dSUX7TP7tAmhmgyfCAI-QN_LD8MbNanDoaQXWt_fLanpZvpl_uCI/s72-c/omg.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-6063463806999450802</id><published>2009-09-26T13:04:00.000-05:00</published><updated>2009-10-16T08:21:57.152-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>Menu Drop Down con jQuery y CSS</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  color: rgb(56, 56, 56); font-family:Arial, Helvetica, sans-serif;font-size:14px;&quot;&gt;&lt;p size=&quot;13px&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; line-height: 18px;  &quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://micodigobeta.com.ar/ejemplos/menujquery/menujquery.gif&quot; title=&quot;Menu&quot; width=&quot;230&quot; height=&quot;242&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 15px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; border-width: initial; border-color: initial; background-position: initial initial; &quot; /&gt;&lt;br /&gt;Vamos a desarrollar un menu estilo Drop Down, de fácil mantenimeinto, usable y accesible con jQuery y CSS:&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; line-height: 18px; font-size: 13px; &quot;&gt;Fuente: &lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: normal; font-size:14px;&quot;&gt;&lt;a href=&quot;http://www.noupe.com/tutorial/drop-down-menu-jquery-css.html&quot;&gt;http://www.noupe.com/tutorial/drop-down-menu-jquery-css.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/ul&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/6063463806999450802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/menu-drop-down-con-jquery-y-css.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/6063463806999450802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/6063463806999450802'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/menu-drop-down-con-jquery-y-css.html' title='Menu Drop Down con jQuery y CSS'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-7492056899764846446</id><published>2009-09-26T12:57:00.002-05:00</published><updated>2009-10-16T08:21:57.152-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>jQuery todo lo que te imaginas hacer : 20 Plugin</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk7aSCJswlQ1bIlN_mi2g_vmpBEShCuG1yncTD6k0lhs3GcKcHcVkpAIW4tSyEwwE8mABLHUxpD1svD3buf0xe_4J3mLrnFoKHpJ8mCXHkwqtmmTJ87ZHrz6wZ-YDozexvtiOHJnTiaFs/s1600-h/p_jqueryplugins.png&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 200px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk7aSCJswlQ1bIlN_mi2g_vmpBEShCuG1yncTD6k0lhs3GcKcHcVkpAIW4tSyEwwE8mABLHUxpD1svD3buf0xe_4J3mLrnFoKHpJ8mCXHkwqtmmTJ87ZHrz6wZ-YDozexvtiOHJnTiaFs/s320/p_jqueryplugins.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5385838271869646690&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  color: rgb(51, 51, 51); line-height: 19px; font-family:&#39;Trebuchet MS&#39;;font-size:13px;&quot;&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;Si te gusta la programación web y te gusta variar en tus desarrollos entonces esto te gustara, te dejo con esta selección de &lt;a onclick=&quot;javascript:pageTracker._trackPageview(&#39;/outgoing/devsnippets.com/jquery-posts/20-jquery-plugins-for-unforgettable-user-experience.html&#39;);&quot; href=&quot;http://devsnippets.com/jquery-posts/20-jquery-plugins-for-unforgettable-user-experience.html&quot; style=&quot;color: rgb(218, 16, 113); border-bottom-style: none; border-bottom-width: initial; border-bottom-color: initial; text-decoration: none !important; outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; &quot;&gt;20 Plugins JQuery&lt;/a&gt; para insertar en tus aplicaciones.&lt;/p&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;Desde botones, efectos, galerías, menús… un montón de posibilidades para enriquecer visualmente vuestras páginas.&lt;/p&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;visto en &lt;a onclick=&quot;javascript:pageTracker._trackPageview(&#39;/outgoing/www.infectedfx.net/20-jquery-plugins/2008/&#39;);&quot; href=&quot;http://www.infectedfx.net/20-jquery-plugins/2008/&quot; style=&quot;color: rgb(218, 16, 113); border-bottom-style: none; border-bottom-width: initial; border-bottom-color: initial; text-decoration: none !important; outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; &quot;&gt;infectedFX&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;&lt;a onclick=&quot;javascript:pageTracker._trackPageview(&#39;/outgoing/www.komodomedia.com/blog/2008/10/jquery-feed-menus/&#39;);&quot; href=&quot;http://www.komodomedia.com/blog/2008/10/jquery-feed-menus/&quot; style=&quot;color: rgb(218, 16, 113); border-bottom-style: none; border-bottom-width: initial; border-bottom-color: initial; text-decoration: none !important; outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; &quot;&gt;&lt;img src=&quot;http://www.marcocreativo.es/blog/wp-content/uploads/2008/10/jquery6.jpg&quot; alt=&quot;&quot; title=&quot;marcoCreativo - jquery6&quot; width=&quot;400&quot; height=&quot;170&quot; class=&quot;alignnone size-full wp-image-663&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; border-width: initial; border-color: initial; margin-left: -5px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; &quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onclick=&quot;javascript:pageTracker._trackPageview(&#39;/outgoing/ui.jquery.com/themeroller&#39;);&quot; href=&quot;http://ui.jquery.com/themeroller&quot; style=&quot;color: rgb(218, 16, 113); border-bottom-style: none; border-bottom-width: initial; border-bottom-color: initial; text-decoration: none !important; outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; &quot;&gt;&lt;img src=&quot;http://www.marcocreativo.es/blog/wp-content/uploads/2008/10/jquery2.jpg&quot; alt=&quot;&quot; title=&quot;marcoCreativo - jquery2&quot; width=&quot;400&quot; height=&quot;165&quot; class=&quot;alignnone size-full wp-image-664&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; border-width: initial; border-color: initial; margin-left: -5px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; &quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onclick=&quot;javascript:pageTracker._trackPageview(&#39;/outgoing/plugins.jquery.com/project/Jcrop&#39;);&quot; href=&quot;http://plugins.jquery.com/project/Jcrop&quot; style=&quot;color: rgb(218, 16, 113); border-bottom-style: none; border-bottom-width: initial; border-bottom-color: initial; text-decoration: none !important; outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; &quot;&gt;&lt;img src=&quot;http://www.marcocreativo.es/blog/wp-content/uploads/2008/10/jquery20.jpg&quot; alt=&quot;&quot; title=&quot;marcoCreativo - jquery20&quot; width=&quot;400&quot; height=&quot;170&quot; class=&quot;alignnone size-full wp-image-665&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; border-width: initial; border-color: initial; margin-left: -5px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); max-width: 100%; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 13px; margin-right: 0px; margin-bottom: 13px; margin-left: 0px; &quot;&gt;&lt;a onclick=&quot;javascript:pageTracker._trackPageview(&#39;/outgoing/devsnippets.com/jquery-posts/20-jquery-plugins-for-unforgettable-user-experience.html&#39;);&quot; href=&quot;http://devsnippets.com/jquery-posts/20-jquery-plugins-for-unforgettable-user-experience.html&quot; style=&quot;color: rgb(218, 16, 113); border-bottom-style: none; border-bottom-width: initial; border-bottom-color: initial; text-decoration: none !important; outline-style: none; outline-width: initial; outline-color: initial; font-weight: normal; &quot;&gt;20 Plugins Gratuitos JQuery&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/7492056899764846446/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-todo-lo-que-te-imaginas-hacer-20.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7492056899764846446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/7492056899764846446'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-todo-lo-que-te-imaginas-hacer-20.html' title='jQuery todo lo que te imaginas hacer : 20 Plugin'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk7aSCJswlQ1bIlN_mi2g_vmpBEShCuG1yncTD6k0lhs3GcKcHcVkpAIW4tSyEwwE8mABLHUxpD1svD3buf0xe_4J3mLrnFoKHpJ8mCXHkwqtmmTJ87ZHrz6wZ-YDozexvtiOHJnTiaFs/s72-c/p_jqueryplugins.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-5797875221129149949</id><published>2009-09-26T12:49:00.003-05:00</published><updated>2009-10-16T08:21:57.153-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>jQuery Visualize : Otro plugin de jQuery  para graficos</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  color: rgb(52, 52, 52); line-height: 17px; font-family:sans-serif;font-size:14px;&quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 40px; padding-bottom: 15px; padding-left: 40px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 40px; padding-bottom: 15px; padding-left: 40px; &quot;&gt;&lt;a href=&quot;http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; color: rgb(27, 73, 120); background-color: rgb(231, 236, 241); &quot;&gt;jQuery Visualize&lt;/a&gt;, es un plugin de jQuery que nos permite generar gráficas dinámicas usando &lt;a rel=&quot;lightbox&quot; href=&quot;http://www.anieto2k.com/wp-content/uploads/2009/07/jquery.visualize.JPG&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; color: rgb(27, 73, 120); background-color: rgb(231, 236, 241); &quot;&gt;&lt;img src=&quot;http://www.anieto2k.com/wp-content/uploads/2009/07/jquery.visualize.JPG&quot; alt=&quot;jquery.visualize&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 40px; padding-bottom: 15px; padding-left: 40px; text-align: center; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:7;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:40px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 40px; padding-bottom: 15px; padding-left: 40px; &quot;&gt;Usando los datos alojados en tablas el resultado no puede ser más accesible, ya que en caso de que el usuario no tenga el Javascript activo, este podrá ver la tabla con los datos. Posibilitando así su comprensión.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 40px; padding-bottom: 15px; padding-left: 40px; font-size: 18px; &quot;&gt;¿Como funciona?&lt;/h3&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;Link : &lt;a href=&quot;http://www.anieto2k.com/2009/07/07/jquery-visualize-graficas-con-canvas-y-javascript/&quot;&gt;http://www.anieto2k.com/2009/07/07/jquery-visualize-graficas-con-canvas-y-javascript/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  color: rgb(52, 52, 52); line-height: 17px; font-family:sans-serif;font-size:14px;&quot;&gt;Ver &lt;a href=&quot;http://www.filamentgroup.com/examples/charting_v2/index_2.php&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; color: rgb(27, 73, 120); background-color: rgb(231, 236, 241); &quot;&gt;una gráfica dinámica&lt;/a&gt; y &lt;a href=&quot;http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial; color: rgb(27, 73, 120); background-color: rgb(231, 236, 241); &quot;&gt;descargar el plugin directamente desde este enlace&lt;/a&gt;.&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;    style=&quot;font-family:sans-serif;font-size:130%;color:#343434;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 17px;font-size:14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;    style=&quot;font-family:sans-serif;font-size:130%;color:#343434;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 17px;font-size:14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/5797875221129149949/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-visualiza-otro-plugin-de-jquery.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5797875221129149949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5797875221129149949'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/jquery-visualiza-otro-plugin-de-jquery.html' title='jQuery Visualize : Otro plugin de jQuery  para graficos'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-4290509292730325581</id><published>2009-09-26T12:34:00.002-05:00</published><updated>2009-10-16T08:22:44.145-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Simple Graficador de Listas jQuery  + VisFire Charting</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://blogs.msdn.com/blogfiles/dougperkes/WindowsLiveWriter/SharePointVisifireChartingwithCustomList_87A7/image29.png&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 823px; height: 960px;&quot; src=&quot;http://blogs.msdn.com/blogfiles/dougperkes/WindowsLiveWriter/SharePointVisifireChartingwithCustomList_87A7/image29.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Estos son muchos de los ejemplos y controles que podemos utilizar para realizar graficos en sharepoint y también para otro tipo de tecnologías ya que solo no trabaja solo para sharepoint, pero , en este caso solo veremos utilizando listas de sharepoint.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;VisFire, es el control que utizaremos esta vez , ya que trabajo con javascript y para mostrar los graficos con efectos usa Silverlight para mostrar una mejor interface al usuario.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para mayor informacion y ver los pasos para configurar y utilizar este hermoso control:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://blogs.msdn.com/dougperkes/archive/2009/09/01/sharepoint-visifire-charting-with-custom-list-data.aspx&quot;&gt;http://blogs.msdn.com/dougperkes/archive/2009/09/01/sharepoint-visifire-charting-with-custom-list-data.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;VisFire :&lt;/b&gt; &lt;a href=&quot;http://visifire.com/silverlight_charts_gallery.php&quot;&gt;http://visifire.com/silverlight_charts_gallery.php&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/4290509292730325581/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/simple-graficador-de-listas-jquery.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4290509292730325581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/4290509292730325581'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/simple-graficador-de-listas-jquery.html' title='Simple Graficador de Listas jQuery  + VisFire Charting'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-2181422297348482135</id><published>2009-09-26T12:21:00.004-05:00</published><updated>2009-10-16T08:22:44.145-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Otros Graficos usando jQuery canvas : fgCharting</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  line-height: 19px; font-family:verdana, arial, sans-serif;font-size:13px;&quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;Mostrar gráficos accesibles es una tarea ardua, o cuanto menos pesada, por eso me ha encantado este plugin para jQuery.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;Mediante &lt;strong&gt;fgChartin&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal; &quot;&gt;&lt;strong&gt;g&lt;/strong&gt; podremos convertir una tabla de datos convenientemente maquetada en un bonito gráfico.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiBZ7fEhrnmMVDRIv5gxSYmgM4HHoz3pElrB1t_qPURFZHszHps-FArtmhhN_J10e2dH9hkGCSXcXV058jR-clWrBVUpAY8q4Zw_il43qKptoBq3hm9n6NJtLyL5iPBZxVpAzMJdGg7kc/s320/graficos-con-fgcharting.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 268px; height: 320px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5385829226040643090&quot; /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhZQZ2p4wZxWkWaeFuFgcKf7SJoCp9zr5a286mEqgDcUwjlAX2fVDHs2Lvw-DqnFaQEGFszqtBriEwk2KSUZBQEXv3zU5pRO6BW4YiUnOiJjQFM2ZQxCBZuD8yGhNOB0nrImkHSTJkVkM/s320/tabla.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 154px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5385829569897440882&quot; /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;Algunos consejos que ya saben es que canvas e IE no son amigos , deben utilizar algo como &lt;a href=&quot;http://excanvas.sourceforge.net/&quot; style=&quot;color: rgb(0, 106, 179); text-decoration: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(211, 211, 211); &quot;&gt;ExplorerCanvas&lt;/a&gt; para poderlo emplear en sitios en producción.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; &quot;&gt;&lt;strong&gt;fgCharting:&lt;/strong&gt;&lt;a href=&quot;http://www.filamentgroup.com/lab/creating_accessible_charts_using_canvas_and_jquery/&quot; style=&quot;color: rgb(0, 106, 179); text-decoration: none; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(211, 211, 211); &quot;&gt;http://www.filamentgroup.com/lab/creating_accessible_charts_using_canvas_and_jquery/&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/2181422297348482135/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/otros-graficos-usando-jquery-canvas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/2181422297348482135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/2181422297348482135'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/otros-graficos-usando-jquery-canvas.html' title='Otros Graficos usando jQuery canvas : fgCharting'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiBZ7fEhrnmMVDRIv5gxSYmgM4HHoz3pElrB1t_qPURFZHszHps-FArtmhhN_J10e2dH9hkGCSXcXV058jR-clWrBVUpAY8q4Zw_il43qKptoBq3hm9n6NJtLyL5iPBZxVpAzMJdGg7kc/s72-c/graficos-con-fgcharting.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-5979541618196338925</id><published>2009-09-26T12:18:00.001-05:00</published><updated>2009-10-16T08:21:57.153-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>Graficos con jQuery : FLOT</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;, Verdana, Arial, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 16px; &quot;&gt;&lt;p&gt;Al fin y luego de tanto &lt;a href=&quot;http://www.kabytes.com/programacion/graficos-con-macromedia-flash-y-php/&quot; title=&quot;Graficos con flash y php&quot; style=&quot;color: rgb(0, 64, 182); text-decoration: underline; font-weight: bold; &quot;&gt;buscar&lt;/a&gt; y &lt;a href=&quot;http://www.kabytes.com/diseno/graficos-con-javascript/&quot; title=&quot;Graficos con Javascript&quot; style=&quot;color: rgb(0, 64, 182); text-decoration: underline; font-weight: bold; &quot;&gt;buscar&lt;/a&gt; un librería para hacer graficas fui a dar con las que mas me gustaron. Flot 0.1 es una librería desarrollada con Jquery en la que podemos realizar gráficos de distintos tipos y que quedan geniales (&lt;a href=&quot;http://people.iola.dk/olau/flot/examples/&quot; title=&quot;Ejemplos&quot; style=&quot;color: rgb(0, 64, 182); text-decoration: underline; font-weight: bold; &quot;&gt;Ejemplos&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://www.kabytes.com/wp-content/uploads/2007/12/graficas-jquery.jpg&quot; alt=&quot;Graficas con Jquery&quot; style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; max-width: 100%; border-top-width: 5px; border-right-width: 5px; border-bottom-width: 5px; border-left-width: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(235, 235, 235); border-right-color: rgb(235, 235, 235); border-bottom-color: rgb(235, 235, 235); border-left-color: rgb(235, 235, 235); &quot; /&gt;&lt;/p&gt;&lt;p&gt;Por lo que pude ver hasta el momento es muy fácil de implementar el código es bastante “Ágil” y el resultado es impecable.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Visto en: &lt;a href=&quot;http://ajaxian.com/archives/plotting-in-jquery&quot; title=&quot;Ajaxian&quot; style=&quot;color: rgb(0, 64, 182); text-decoration: underline; font-weight: bold; &quot;&gt;Ajaxian&lt;/a&gt; / Descargar: &lt;a href=&quot;http://code.google.com/p/flot/&quot; title=&quot;Flot&quot; style=&quot;color: rgb(0, 64, 182); text-decoration: underline; font-weight: bold; &quot;&gt;Flot&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/5979541618196338925/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/graficos-con-jquery-flot.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5979541618196338925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5979541618196338925'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/graficos-con-jquery-flot.html' title='Graficos con jQuery : FLOT'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5574167861091104541.post-5337081238999621720</id><published>2009-09-26T12:11:00.000-05:00</published><updated>2009-10-16T08:22:44.145-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Graficos Impresionantes con Excel 2007</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif; font-size: 13px; &quot;&gt;Excel Services tiene numerosas utilidades a nivel corporativo, y una potencia oculta en lo que es la generacion de graficos como este :&lt;br /&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5140566237928554338&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOcdVSpDg1gpIIi6PeWEtnMaNlRxC4UUvg-KmTMESkpi1LuAIwgm26mdRXmBn8A1C9VpBJqWH1-W9D2yDwCT12Ao1c1iSM1MY4PtqMTiT7WswpWBM0EG8yycfchEsiZ6oeR47bB0xJFVh_/s400/juice_cancer_fonts.jpg&quot; border=&quot;0&quot; style=&quot;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; &quot; /&gt;Imaginen sus Centros de Reportes con informacion de este estilo? Atractivo no? Bien, les recomiendo que vean el &lt;a href=&quot;http://www.juiceanalytics.com/writing/2007/07/recreating-ny-times-cancer-graph/&quot; style=&quot;color: rgb(61, 129, 238); &quot;&gt;SCREENCAST&lt;/a&gt; donde podran encontrar la guia paso a paso de como realizar estos graficos en Excel 2007...&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sharepointperu.blogspot.com/feeds/5337081238999621720/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/graficos-impresionantes-con-excel-2007.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5337081238999621720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5574167861091104541/posts/default/5337081238999621720'/><link rel='alternate' type='text/html' href='http://sharepointperu.blogspot.com/2009/09/graficos-impresionantes-con-excel-2007.html' title='Graficos Impresionantes con Excel 2007'/><author><name>Cristhian Alvitrez</name><uri>http://www.blogger.com/profile/09263595964985616122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOcdVSpDg1gpIIi6PeWEtnMaNlRxC4UUvg-KmTMESkpi1LuAIwgm26mdRXmBn8A1C9VpBJqWH1-W9D2yDwCT12Ao1c1iSM1MY4PtqMTiT7WswpWBM0EG8yycfchEsiZ6oeR47bB0xJFVh_/s72-c/juice_cancer_fonts.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>