" etc *Se define ID en el tr de cada elemento TR_nnnn *Param para TR de elementos $ABM['nnn']['param']="style='display: plapal;' height='10' " //v.0060 *Ahora datetime es fecha y hora //v.070 *mejoras chequeo de fecha //v.071 -hotfix de chequeo de fechas...bolo parseInt //v.075 -hotfix chequeo fechas .071 -parametriza tablas advf y de seguridad */ //v.076 //-flag identificador del generador: http://xxx.xxx.xx/admNotEdit.php?id=1&abm_gen=1 <=== muetra un texto identificando // al generador como activo //-Texto de fecha invalida por default //-Funcion javascript custom_validate() es una extencion de chequeo para el usuario //v.080 //-select multiples // * ['multiple']="1" habilita select multiple // ['glue']="," define separador de id multiples ; or default //v.081 //fix para select..no dejaba seleccionar un solo elemento...arreglo de busqueda en varchar separado por coma //v.090 //* Agregado ['javascript'] para inyectar codigo js sin tocar los param y no perder valores default //* Agregado ['forcedefault'] fuerza un valor por default sin importar que venga id con su valor de la base //* Modificacion en el chequeo default de fechas //v0.10 //templates //v.0101 //nuevo fix para compatibilidad de fechas en mozilla //v0.20 //Integracion al sistema de arbol y archivos fs //v0.21 //modificaciones de type custom //v0.22 //en image ahora muestra titulo envez de link en el campo //v0.23 //ahora carga el form con ID en la primer recarga al insertar //v.0.25 //ya no necesita register_variables=on //v0.30 //nuevo editor wysiwyg inline type='wysiwyg' de tinymce //agregado $ABM_debug //v0.31 19-01-05 //agregado de boton borrar //$ABM_borrar=0 - no muestra el boton // ="nuevo" - borra y muestra nuevo abm limpio // ="volver" - borra= y vuelve a la lista //v0.35 24-01-05 // type=hidden $abm_gen_v="v0.36 (tpl y fs) 15-02-05"; //v0.36 15-02-05 //fix para cargar en la insercion datos que no forman parte de la tabla /*TODO: -radiobutton -password -checkbox -validaciones regexp -posibilidad de agregar onEnterCustom o onExitCustom en cada elemento -flag de compilador/interpretador para generar codigo php directamente */ //carga valores globales de site if(file_exists("abm_global.php")){ include("abm_global.php"); } //*******aca llena la matriz con valores default si no vienen definidos if(!$ABM_ADVF){$ABM_ADVF="ADVF";} //tablas de spi default if(!$ABM_segAdminABM){$ABM_segAdminABM="segAdminABM";} if(!$ABM_segAdminSeguridadABM){$ABM_segAdminSeguridadABM="segAdminSeguridadABM";} if($_REQUEST['abm_gen']){$ABM_titulo.=" (Powered by abm_generator $abm_gen_v)";} if(!$ABMid && !$ABM_fs){ //define id sacada de la primary key de la tabla $KEYsql="show keys from $ABMtabla"; $KEYrs=$conn->execute($KEYsql); $ABMid=$KEYrs->field("Column_name"); } //define permiso por default C/A=todos reset($ABM); while (list ($VALfld, $VALval) = each($ABM)){ if(!$ABM[$VALfld]['perm']){ $ABM[$VALfld]['perm']=$ABM_DEF_PERM; } } if(!$ABM_DEF_VALIDATE_DATE_TEXT){$ABM_DEF_VALIDATE_DATE_TEXT="Fecha invalida";} //define texto por default para fechas incorrectas reset($ABM); while (list ($VALfld, $VALval) = each($ABM)){ if(($ABM[$VALfld]['type']=="date" || $ABM[$VALfld]['type']=="datetime") && !$ABM[$VALfld]['validate']['text']){ $ABM[$VALfld]['validate']['text']=$ABM_DEF_VALIDATE_DATE_TEXT; } } reset($ABM); //define parametros de tags html default while (list ($VALfld, $VALval) = each($ABM)){ //define class por default if(!$ABM[$VALfld]['class']){ $ABM[$VALfld]['class']=$ABM_DEF_CLASS[$ABM[$VALfld]['type']]; } //define parametros default if(!$ABM[$VALfld]['param']){ $ABM[$VALfld]['param']=$ABM_DEF_PARAM[$ABM[$VALfld]['type']]; } } //completa options de selects con datos almacenados en tablas reset($ABM); while (list ($VALfld, $VALval) = each($ABM)){ if($ABM[$VALfld]['option_table'] || $ABM[$VALfld]['sql']){ $DEFid=$ABM[$VALfld]['option_id']; $DEFdesc=$ABM[$VALfld]['option_desc']; $DEFtable=$ABM[$VALfld]['option_table']; if($ABM[$VALfld]['sql']){ //si hay definido sql especial, toma ese. $DEFsql=$ABM[$VALfld]['sql']; }else{ $DEFsql="select $DEFid, $DEFdesc from $DEFtable"; } $DEFrs=$conn->execute($DEFsql); while(!$DEFrs->eof){ $DEFid2=$DEFrs->field($DEFid); $DEFdesc2=$DEFrs->field($DEFdesc); $ABM[$VALfld]['options'][$DEFid2]=$DEFdesc2; $DEFrs->movenext(); } } } if($ABM_debug>0 || $_REQUEST['ABM_debug']>0){ $ABM['ABMdebug']['type']='custom'; $ABM['ABMdebug']['custom']="$_REQUEST
".print_r($_REQUEST,1)."
"; } if($ABM_debug==2 || $_REQUEST['ABM_debug']==2){ $ABM['ABMdebug2']['type']='custom'; $ABM['ABMdebug2']['custom']="$_SERVER
".print_r($_SERVER,1)."
"; } if($ABM_WYSIWYG){$ABM_WYSIWYG2=",".$ABM_WYSIWYG2;} if(!$ABM_WYSIWYG){ $ABM_WYSIWYG=" theme : 'advanced', theme_advanced_toolbar_location : 'top', plugins : 'preview', theme_advanced_buttons2_add : 'forecolor,preview,zoom', theme_advanced_buttons2_add_before : 'fontselect,fontsizeselect' $ABM_WYSIWYG2 "; } //******aca arma querys de agregar, borrar, modificar $id=$_REQUEST['id']; if($ABM_fs) { //NUEVO SISTEMA CON FS if($_REQUEST['accion']=="Borrar"){ delete__file($id); if($ABM_borrar=="nuevo"){ header("Location: ".$_SERVER['PHP_SELF']); } if($ABM_borrar=="volver"){ header("Location: $ABM_volver"); } die(); } //MODIFICA REGISTRO if($_REQUEST['accion']=="Guardar"){ $id=create__file("titulo",$_REQUEST['ABM_dir'],$ABM_attrib); } /*if($_REQUEST['accion']=="Actualizar"){ move__file($_REQUEST['id'],$_REQUEST['ABM_dir']); }*/ if($_REQUEST['accion']=="Guardar" || $_REQUEST['accion']=="Actualizar"){ reset($ABM); while (list ($VALfld, $VALval) = each($ABM)){ $req_valfld=$_REQUEST[$VALfld]; //si es un multiple lista $valor_lista=""; if(is_array($_REQUEST[$VALfld])){ //si es select multiple if(!$ABM[$VALfld]['glue']){$ABM[$VALfld]['glue']=";";}//default ; while(list($fld_sel,$val_sel) = each($_REQUEST[$VALfld])){ $valor_lista.= $val_sel.$ABM[$VALfld]['glue']; } $req_valfld=substr($valor_lista,0,strlen($valor_lista)-strlen($ABM[$VALfld]['glue'])); } if($VALfld!="ABM_dir"){ set__data($id,$VALfld,$req_valfld); } } } }else{ /////////VIEJO SISTEMA POR MYSQL if($_REQUEST['accion']=="Borrar"){ $sql_borra="delete from $tbl where $ABMid = '$id'"; $conn->execute($sql_borra); if($ABM_borrar=="nuevo"){ header("Location: ".$_SERVER['PHP_SELF']); } if($ABM_borrar=="volver"){ header("Location: $ABM_volver"); } die(); } //INSERTA NUEVO REGISTRO function esfield1111($tbl,$fld){ global $conn; $result = $conn->execute("SHOW FIELDS FROM $tbl"); while(!$result->eof){ if($result->field(Field)==$fld){return true;} $result->movenext(); } return false; } if($_REQUEST['accion']=="Guardar"){ $AGRsql="insert into $ABMtabla ("; reset($ABM); //arma query while (list ($VALfld, $VALval) = each ($ABM)) { if(esfield1111($ABMtabla,$VALfld)){ $AGRsql.=$VALfld.", "; } } $AGRsql=substr($AGRsql,0,strlen($AGRsql)-2); $AGRsql.=") values ("; reset($ABM); while (list ($VALfld, $VALval) = each ($ABM)) { if(esfield1111($ABMtabla,$VALfld)){ $req_valfld=$_REQUEST[$VALfld]; //si es un multiple lista $valor_lista=""; if(is_array($_REQUEST[$VALfld])){ //si es select multiple if(!$ABM[$VALfld]['glue']){$ABM[$VALfld]['glue']=";";}//default ; while(list($fld_sel,$val_sel) = each($_REQUEST[$VALfld])){ $valor_lista.= $val_sel.$ABM[$VALfld]['glue']; } $req_valfld=substr($valor_lista,0,strlen($valor_lista)-strlen($ABM[$VALfld]['glue'])); } $AGRsql.="'".$req_valfld."', "; } } $AGRsql=substr($AGRsql,0,strlen($AGRsql)-2); $AGRsql.=")"; //echo $AGRsql; $conn->execute($AGRsql); $id=mysql_insert_id(); } //MODIFICA REGISTRO if($_REQUEST['accion']=="Actualizar"){ $MODsql="update $ABMtabla set "; reset($ABM); while (list ($VALfld, $VALval) = each($ABM)){ if(esfield1111($ABMtabla,$VALfld)){ $req_valfld=$_REQUEST[$VALfld]; //si es un multiple lista $valor_lista=""; if(is_array($_REQUEST[$VALfld])){ //si es select multiple if(!$ABM[$VALfld]['glue']){$ABM[$VALfld]['glue']=";";}//default ; while(list($fld_sel,$val_sel) = each($_REQUEST[$VALfld])){ $valor_lista.= $val_sel.$ABM[$VALfld]['glue']; } $req_valfld=substr($valor_lista,0,strlen($valor_lista)-strlen($ABM[$VALfld]['glue'])); } $MODsql.=$VALfld."='".$req_valfld."', "; } } $MODsql=substr($MODsql,0,strlen($MODsql)-2); $MODsql.=" where $ABMid = '".$id."'"; $conn->execute($MODsql); } } if($_REQUEST['accion']=="Guardar" && $id){ //para que al guardar ya cargue el form con el dato del ID //header("Location: ".$_SERVER['PHP_SELF']."?id=$id&".$_SERVER['QUERY_STRING']); //die(); ?>
'>
execute($VALsql); reset($ABM); while (list ($VALfld, $VALval) = each ($ABM)) { $$VALfld=$VALrs->field($VALfld); } } } //levanta los permisos en este abm para el usuario //$admABMLink=substr($SCRIPT_NAME,strrpos($SCRIPT_NAME,"/")+1); $sql="select B.permTipo from $ABM_segAdminABM A, $ABM_segAdminSeguridadABM B where A.admABMID=B.admABMID and A.admABMLink='$admABMLink' and B.usradID='$usradID'"; $rsperm=$conn->execute($sql); //############### GENERA ABM ################################################ //string de tpl de abm $TPL=file_get_contents($ABM_template); $TPLpos1=strpos($TPL,""); $TPLpos2=strpos($TPL,""); $abm_elements="?>".substr($TPL,0,$TPLpos1); $ABM1=$ABM; reset($ABM1); while (list ($ABMfield, $VALval) = each($ABM1)){ $ABMi++; //$ABMfield=$ABMrs->field(Field); $ABMparam=$ABM[$ABMfield]['param']; $ABMjs=$ABM[$ABMfield]['javascript']; $ABMclass=$ABM[$ABMfield]['class']; $ABMperm=$ABM[$ABMfield]['perm']; $ABMmultiple=$ABM[$ABMfield]['multiple']; if(!$_REQUEST['id']){$ABMvalue=$ABM[$ABMfield]['value'];} if($ABMperm=="A"){ //si el usuario tiene acceso enable, sino diabled if($rsperm->field(permTipo)!="A"){ $ABMenable="disabled"; } } if($_REQUEST[$ABMfield] && !$$ABMfield){$$ABMfield=$_REQUEST[$ABMfield];} if(!$_REQUEST['id']){$$ABMfield=$ABM[$ABMfield]['default'];}//si no hay id asigna valor default if($ABM[$ABMfield]['forcedefault']){$$ABMfield=$ABM[$ABMfield]['forcedefault'];} //fuerza un default if(1==1){ //recarga la definicion de template $TPL_ABM=substr($TPL,$TPLpos1,$TPLpos2-$TPLpos1); //atributos de TR if($ABM[$ABMfield]['type']=="hidden"){$ABM[$ABMfield]['TR_param'].=" style='display: none;'";} $TPL_ABM=str_replace("{PARAMETERS-TR}","id='TR_{$ABMfield}' {$ABM[$ABMfield]['TR_param']}",$TPL_ABM); if($ABM[$ABMfield]['custom']){ //si se definio un elemento custom, evaula de una $abm_elements.="".$ABM[$ABMfield]['custom'].""; }else{ //atributos de descripcion $TPL_ABM=str_replace("{DESCRIPTION}","{$ABM[$ABMfield]['desc']}",$TPL_ABM); switch($ABM[$ABMfield]['type']){ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// default: case "text": $TPL_ABM=str_replace("{INPUT}","",$TPL_ABM); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "hidden": $TPL_ABM=str_replace("{INPUT}","",$TPL_ABM); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "datetime": //aaaa/mm/dd -> dd/mm/aaaa if(!$ABM[$ABMfield]['default'] || !$ABM[$ABMfield]['forcedefault']|| $$ABMfield){ list( $anio, $mes, $dia ) = split( '[/.-]', substr($$ABMfield,0,10)); list( $hora, $minutos ) = split( '[:]', substr($$ABMfield,11,5)); $$ABMfield=$dia.'/'.$mes.'/'.$anio.' '.$hora.':'.$minutos; } $TPL_ABM=str_replace("{INPUT}"," DD/MM/AAAA HH:MM ",$TPL_ABM); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "date": //aaaa/mm/dd -> dd/mm/aaaa if(!$ABM[$ABMfield]['default'] || !$ABM[$ABMfield]['forcedefault']|| $$ABMfield){ list( $anio, $mes, $dia ) = split( '[/.-]', substr($$ABMfield,0,10)); $$ABMfield=$dia.'/'.$mes.'/'.$anio; } $TPL_ABM=str_replace("{INPUT}"," DD/MM/AAAA ",$TPL_ABM); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "textarea": $TPL_ABM=str_replace("{INPUT}","",$TPL_ABM); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "wysiwyg": $wysiwygELEMENTS.=$ABMfield.","; $TPL_ABM=str_replace("{INPUT}","",$TPL_ABM); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "html": $elements=" "; if(!$ABMenable){ $elements.=" "; } $elements.="
edit body
$ABMvalue{$$ABMfield}
"; $TPL_ABM=str_replace("{INPUT}",$elements,$TPL_ABM); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "image": //devuelve la url del id advf $advID=$$ABMfield; $sql_advf="select * from $ABM_ADVF where advID='$advID'"; $rs_advf=$conn->execute($sql_advf); $url_path=$rs_advf->field(advLink); $titulo=$rs_advf->field(advTitulo); if($url_path){$url="http://".$SERVER_NAME.$var_path.$url_path;} $TPL_ABM=str_replace("{INPUT}"," $I_selectimage  $I_deleteimage",$TPL_ABM); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "select": $elements="