Cambiar estado de los dias solo con clicks (Sin CTRL o ALT)

Cambiar estado de los dias solo con clicks (Sin CTRL o ALT)

Postby equipo_a » Thu Jul 02, 2009 11:01 am

Estoy intentando modificar el calendario y hay una cosa que no consigo hacer.

El calendario solo va a tener tres estados: libre, ocupado, hay palazas.

El tema es que la funcionalidad de pulsar un botón (CTRL, ALT...) mientrras cliqueas sobre el calendario no lo veo demasiado usable y prefiero que el estado cabie haciendo clic, osea si pulsas una vez ponga ocupado, pulsando de nuevo cambie a hay plazas y y si pulsas nuevamente en libre

He estado mirando en update_cals.js y la funcion que asigna el estado es esta:

Code: Select all
function what_key(e) {

   if(document.all)e = event; // IE need this
   //alert(e);
      if(e.ctrlKey)      return "am";
      else if(e.altKey)   return "pm";
   else return "ko";
}


Pero no soy capaz de modificarla para lo que quiero, no tengo muchos conocimientos en javascript.

Espero vuestra ayuda.

Gracias por todo
equipo_a
 
Posts: 3
Joined: Thu Jul 02, 2009 10:50 am

Re: Cambiar estado de los dias solo con clicks (Sin CTRL o ALT)

Postby chris » Thu Jul 09, 2009 6:16 pm

Hola,
En realidad para hacer eso solo tienes que modificar el código php en update_cal.ajax.php, no hace falta tocar el javascript.

Lo que habrá que hacer es modificar el código para que primero saca el estado actual de la fecha y luego modificarlo o borrarlo según los 3 estados que has indicado.

Es decir, algo como:
Code: Select all
$sql="SELECT * FROM ".T_BOOKINGS."  WHERE id_item='".$_REQUEST["id_item"]."' AND the_date='".$_REQUEST["the_date"]."'";
if(!$res=mysql_query($sql)) die("ERROR GETTING CURRENT STATE");
if(mysql_num_rows($res)!=0){
 // modificar estado actual
  $row=mysql_fetch_assoc($res);
  $current_state=$row["state"];
  if($current_state=='on') {
     // actualemente esta ocupado - definir con plazos libres ("fr" en mi código de ejemplo)
    $update="UPDATE ".T_BOOKINGS." SET state='fr' WHERE id_item=".$_REQUEST["id_item"]." AND the_date='".$_REQUEST["the_date"]."'";
    if(!mysql_query($update))   die("ERROR UPDATING calendar");
    else                  echo "fr"; #este es lo que se devuelva al javascript - es lo que se usa para identificar que imagen debe mostrar
  }elseif($current_state=="fr"){
    // hay libre, borrar entrada para que sea totalmente libre
    $update="DELETE FROM ".T_BOOKINGS." WHERE id_item=".$_REQUEST["id_item"]." AND the_date='".$_REQUEST["the_date"]."'";
    if(!mysql_query($update))   die("ERROR DELETING");
   else                  echo "off";
}else{
  //no existe - añade entrada en db para fecha selecionado
  $insert="INSERT INTO ".T_BOOKINGS." SET id_item='".$_REQUEST["id_item"]."', the_date='".$_REQUEST["the_date"]."', state='".$_REQUEST["special_state"]."'";
  if(!mysql_query($insert)){
    die("ERROR INSERTING. ".$insert."");
  }else{
    echo "on";
  }
}

Nota - NO he probado este código, solo es un ejemplo.

Sé que esto no es un contestación completo pero tampoco sé que nivél de php asi que quizas esta parte lo puedes hacer sin probelmas.
El tema es que, en principio, no hace falta modificar el javascript para conseguir lo que quieres en este caso.

Avisame si tienes problemas con eso o si no lo he entenido bien.

Saludos,
Chris
User avatar
chris
Site Admin
 
Posts: 1089
Joined: Mon Dec 17, 2007 7:42 pm
Location: Málaga, Spain


Return to General

Who is online

Users browsing this forum: No registered users and 0 guests

cron