Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/10/2008, 11:37
samu22
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: [aporte]Clase para crear calendarios

agregue otra funcion a la clase EventCalendar:

Código PHP:
function createDivCalendarioEvent($mes,$anio){
        
$this->chek parent::checkMes($mes);
            if(
$this->chek == TRUE){
                    
$strMes parent::switchMes($mes);
                    
// Creamos todas las variables de control
                    
$diaMes 1;
                    
$numDiaSemana parent::numSemana(1,$mes,$anio);
                    
$ultimoDia parent::getLastDay($mes,$anio);
                    
$currentDay date('d');
                    
$mesAct date('m');
                    
$classCalendar $this->classCalendar;
                    
                    
$estruct ='<div class="leftCalend">';
                    
                    
$estruct .= '            <div class="calendarioCont">
                                                <div class="mesTit">'
.$strMes.' '.$anio.'</div>
                                                <div class="diaSem">
                                                    <div>Lu</div>
                                                    <div>Ma</div>
                                                    <div>Mi</div>
                                                    <div>Ju</div>
                                                    <div>Vi</div>
                                                    <div>Sa</div>
                                                    <div>Do</div>
                                                </div>
                                                <div class="rowsSem">'
;
                    
                
/*****************************************************************************************************************************
                    GENERAMOS LA PRIMER FILA YA QUE NECESITAMOS SABER EN QUE POSICION VA A EMPEZAR
******************************************************************************************************************************/                                             
                    
for($i=0;$i<7;$i++){
                        
$fechaCompleta $diaMes.'/'.$mes.'/'.$anio;
                            if(
$i<$numDiaSemana){
                                
//si el dia de la semana i es menor que el numero del primer dia de la semana
                                //no pongo nada en la celda  
                                
$estruct .= '
                                                        <div>&nbsp</div>'
;
                            }else{
                                
//ponemos el numero del dia
                                    
global $DbConn;
                                
// buscamos si hay algun evento registrado para la fecha a mostrar
                                
$sql "SELECT idEvento FROM eventos WHERE fecha='".$fechaCompleta."' AND tipo='".$this->eventType."'";
                                
$res $DbConn->query($sql);
                                
$numRows $DbConn->numRows($res);
                            
                                    if(
$numRows==1){
                                        
$idEvento mysql_result($res,0);
                                    }
                                    
        
/**********************************************************************************************
                            COMPROBAMOS SI EXISTE ALGUN EVENTO
                            **********************************
        EN CASO DE EXISTIR Y ES EN LA FECHA ACTUAL APLICA EL ESTILO PERTINENTE PARA ESA OPCION
        ***********************************************************************************************/
        
                                
if($diaMes == $currentDay && $mesAct == $mes){
                                    if(
$numRows>0){
                                        
$estruct .= '    
                                                            <div class="currentV"><a href="?ver='
.$fechaCompleta.'">'.$diaMes.'</a></div>';
                                    }else{
                                        
$estruct .= '    
                                                            <div class="currentA"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></div>';    
                                    }
                                }else{
                                    if(
$numRows>0){
                                        
$estruct .= '    
                                                            <div class="ver"><a href="?ver='
.$fechaCompleta.'">'.$diaMes.'</a></div>';
                                    }else{
                                        
$estruct .= '    
                                                            <div class="add"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></div>';    
                                    }                
                                } 
// END ELSE COMPROBACION DE DIA ACTUAL
                                
$diaMes++;
                            } 
//END ELSE COMPROBACION DE EXISTENCIA DE DIAS
                        
                        
// END FOR
                    
                    
$estruct .= '    
                                                </div>'
;
/*****************************************************************************************************************************
                                        GENERAMOS LAS FILAS QUE FALTAM
******************************************************************************************************************************/                                                
                    
$setPos 0;
                    
//recorremos los demas dias
                    
while($diaMes <= $ultimoDia){
                    
$fechaCompleta $diaMes.'/'.$mes.'/'.$anio;
                        
//si empieza la semana escribimos una nueva linea
                        
if ($setPos == 0){
                            
$estruct .= '<div class="rowsSem">';
                        }
                        
// buscamos si hay algun evento registrado para la fecha a mostrar
                            
$sql "SELECT idEvento FROM eventos WHERE fecha='".$fechaCompleta."' AND tipo='".$this->eventType."'";
                            
$res $DbConn->query($sql);
                            
$numRows $DbConn->numRows($res);
                                
                        if(
$diaMes == $currentDay && $mesAct == $mes){
                                if(
$numRows>0){
                                    
$estruct .= '    
                                                        <div class="currentV"><a href="?ver='
.$fechaCompleta.'">'.$diaMes.'</a></div>';
                                }else{
                                    
$estruct .= '    
                                                        <div class="currentA"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></div>';    
                                }
                            }else{
                                if(
$numRows>0){
                                    
$estruct .= '    
                                                        <div class="ver"><a href="?ver='
.$fechaCompleta.'">'.$diaMes.'</a></div>';
                                }else{
                                    
$estruct .= '    
                                                        <div class="add"><a href="?addEvent='
.$fechaCompleta.'">'.$diaMes.'</a></div>';    
                                }                
                            }
                            
$diaMes++;
                            
$setPos++;
                        
//chequeamos que no si setPos llego al final de la fila
                        
if ($setPos == 7){
                            
$setPos 0;
                            
$estruct .= '</div>';
                        }
                    
                    }
/*****************************************************************************************************************************
******************************************************************************************************************************/    
                    
$Prev $this->getPrevMont($mes,$anio);
                    
$Next $this->getNextMont($mes,$anio);
                    
$estruct .= '
                                </div>
                                <div class="rowsBOT">
                                    <div><a href="?newMont='
.$Prev[0].'&newYear='.$Prev[1].'"> <img src="'.ROOT_IMG.'calendario/prevBtn.jpg"></a></div>
                                    <div>&nbsp</div>
                                    <div>&nbsp</div>
                                    <div>&nbsp</div>
                                    <div>&nbsp</div>
                                    <div>&nbsp</div>
                                    <div><a href="?newMont='
.$Next[0].'&newYear='.$Next[1].'"> <img src="'.ROOT_IMG.'calendario/nextBtn.jpg"></a></div>
                                </div>
                                    </div>
                                </div>    
                    '
;
                    
                    return 
$estruct;
                    
            }
    } 
hice esto porque tenia problemas para acomodar la tabla en los divs que tenia en la web, les dejo el estilo default en css:

Código:
/***********************************************************************************************************************
									CALENDARIO DIVS
************************************************************************************************************************/
.calendarioCont {width:287px; padding:0; margin:0}
div.mesTit{width:100%;text-align:center; font-weight:bold;background:url(../img/calendario/titMes.jpg) repeat-x;color:#FFF }
div.diaSem{width:100%;clear:both;}
div.diaSem div{float:left;height:20px;width:40px;background:#80BDE6;text-align:center;border-left:solid 1px #80BDE6;border-bottom:solid 1px #FFF;color:#FFF}
div.rowsSem{width:100%; clear:both}
div.rowsSem div{float:left;padding:10px 0 10px 0;width:40px;background:#F2F2F2;text-align:center;border-left:solid 1px #FFF;border-bottom:solid 1px #FFF}
div.rowsSem  div.currentA{background:#AA0000; color :#FFF}
div.rowsSem  div.currentA a{color :#FFF}

div.rowsSem  div.currentV{background:#1E851D;}
div.rowsSem  div.currentV a{color :#FFF}

div.rowsBOT{width:100%; clear:both}
div.rowsBOT div{float:left;width:28px;background:#FFF;text-align:center;border-left:solid 1px #FFF;border-bottom:solid 1px #FFF;color:#FFF}