Diferencia entre las páginas «Ver más funciones personalizadas» y «Campos»

De ActionApps Documentacion
(Diferencia entre las páginas)
Saltar a: navegación, buscar
(Tipo de archivo)
 
(Funciones para personalizar un campo)
 
Línea 1: Línea 1:
 
__TOC__
 
__TOC__
  
==Limpiar acentos==
+
==Funciones para personalizar un campo==
<code>
+
--[[Usuario:Adam|Adam]] 15:07 21 nov, 2007 (CET)
<pre>
+
Son funciones que sirven para personalizar la forma como se va a mostrar el contenido de un campo en la página web.
<?php
 
// * @author Adam Sánchez, Infoandina
 
function usr_limpiar_acentos ($columns, $col, $param)
 
  
{
+
'''Procedimiento'''
$tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
 
$replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
 
return(strtr($columns[$col][0][value],$tofind,$replac));
 
}
 
  
?>
+
1. Crear el archivo contenedor de funciones personalizadas usr_aliasfnc.php3 dentro de la carpeta /apc-aa/include donde /apc-aa/ es el nombre de la carpeta de instalacion de las AA (puede ser otro tambien)
</pre>
 
</code>
 
<code>
 
<pre>
 
{alias:headline........:f_u:usr_limpiar_acentos:}
 
</pre>
 
</code>
 
  
==Popup para imágenes==
+
2. Colocar dentro de ese archivo la función, por ejemplo
<code>
+
<code><pre>
<pre>
+
function usr_nombreusuario ($columns, $col, $param)
<?php
+
#ejem {alias:posted_by.......:f_u:usr_nombreusuario:}
// * @author Adam Sánchez, Infoandina
+
{
function usr_popup ($columns, $col, $param)
+
$id=$columns[$col][0][value];
 +
$result=mysql_query("select distinct name from users where id='$id'")
 +
or die("consulta invalida");
 +
while ($row=mysql_fetch_array($result))
 
{
 
{
 
+
return $row["name"];
$parameters = split(":",$param);
 
 
 
list($func,$thumb_type_atr1, $thumb_val1, $popup_type_atr2, $popup_val2,$alt,$class,$leyenda) = $parameters;
 
 
 
$filepath = $columns[$col][0][value];
 
 
 
$string2array = explode("/",$filepath);
 
 
 
$serverpath=IMG_UPLOAD_PATH.$string2array [count($string2array)-2]."/".$string2array [count($string2array)-1];
 
 
 
$urlpath =$string2array [count($string2array)-3]."/".$string2array [count($string2array)-2]."/".$string2array [count($string2array)-1];
 
 
 
 
 
$phpthumb = "http://".$_SERVER['SERVER_NAME']."/".AA_BASE_DIR."img.php?src=/".$urlpath."&".$popup_type_atr2."=".$popup_val2;
 
$a = getimagesize($phpthumb);
 
$ancho=$a[0];
 
$alto=$a[1];
 
 
 
 
 
$popup="<a href=\"javascript:popup('".$phpthumb."',".$ancho.",".$alto.",'".$leyenda."')\"><img src=\"/".AA_BASE_DIR."img.php?src=/".$urlpath."&".$thumb_type_atr1."=".$thumb_val1."\" alt=".$alt." class=\"".$class."\" border=\"0\"></a>";
 
return $popup;
 
 
 
 
}
 
}
?>
 
</pre>
 
 
</code>
 
 
<code>
 
<pre>
 
{alias:img_upload......:f_u:usr_popup:h:100:h:500:'_#TITULAR_':thumbnail_left:_#LEYENDA_}
 
</pre>
 
</code>
 
 
<code>
 
<pre>
 
.thumbnail_left {
 
float:left;
 
margin-right:10px;
 
margin-bottom:5px;
 
border:0px;
 
 
}
 
}
</pre>
+
</pre></code>
</code>
 
  
==Contador de checkbox==
+
3. La función captura los datos del usuario al indicarsele el id posted_by......., para ejecutarlo desde una vista o desde la ventana de administracion se la pone asi
  
<code>
+
<code><pre>{alias:posted_by.......:f_u:usr_nombreusuario:}</pre></code>
<pre>
 
<?php
 
// * @author Adam Sánchez, Infoandina
 
function usr_contar ($columns, $col, $param)
 
{
 
      $contador=0;
 
      $cadena='';
 
  
// 17 es el numero total de checkbox
+
[[Ver más funciones personalizadas]]
  
              for ($i=0;$i<17;$i++){
+
==Cómo se pasan parámetros a una funcion personalizada==
              if($cadena.$columns[$col][$i][value]!='')
 
              {$contador++;}
 
  
              }
+
Muchas veces las funciones para cada campo nos quedan cortas y no nos queda mas remedio que desear hacernos una a la medida. Si se sabe algo de php es algo sencillo armarse una, el problema comienza cuando queremos pasar un parametro.  Lo que sucede es que las AA incluyen al nombre de la funcion personalizada como parte de la variable parametro ($param). Por ejemplo si uno configura su campo asi;
  
              $porcentaje = round((($contador/17)*100),2);
+
-----------------------------------------
 
+
Alias 1: _#MENU____
              return $porcentaje;
+
Función: f_u - definida por el usuario
 
+
Parámetros: usr_explode:>:1
  }
+
Descripcion: Esta funcion sirve para dividir una cadena en varias
?>
+
partes separadas por el signo > y para tomar el segundo valor de las
</pre>
+
cadenas divididas
 +
-----------------------------------------
 +
Uno podria pensar que el valor de la variable $param es >, pues no, el valor de la variable $param es TODA la cadena incluyendo el nombre de la funcion," usr_explode:>:1 ", subrayo,toda la cadena. Una vez descubierto esto, es facil darse cuenta que la captura de los parametros que quisieramos pasar depende de que usemos funciones nativas en php para extraerlos como la funcion split por ejemplo
  
</code>
+
Aqui les comparto el codigo comentado de una funcion que programé para separar una cadena en varias parte separadas por el simbolo >, como pueden ver puedo pasar tambien el valor de 1 para indicar que solo quiero trabajar con la segunda cadena separada (la primero es 0). Uno puede pasar todos los parametros que quiera.
  
==Fechas en español==
+
<code><pre>
<code>
 
<pre>
 
 
<?php
 
<?php
// * @author Adam Sánchez, INICTEL
 
  function usr_fecha_espanol($columns, $col, $param="") {
 
      $dte    = $columns[$col][0][value];
 
      $month  = array( 1 => "enero", 2=>"febrero", 3=>"marzo", 4=>"abril",
 
      5=>"mayo", 6=>"junio", 7=>"julio", 8=>"agosto",9=>"setiembre",
 
      10=>"octubre", 11=>"noviembre", 12=>"diciembre");
 
      $weekday = array(1=>"lunes",2=>"martes",3=>"miércoles",4=>"jueves",
 
      5=>"viernes",6=>"sábado",0=>"domingo");
 
      $m      = $month[ date("n", $dte)];
 
      $end    = ( !$param ? "" : $weekday[ date("w", $dte) ]);
 
      return $end." ".date("j", $dte) ." de $m "." de ". date("Y", $dte);
 
  }
 
  
?>
+
function usr_explode ($columns, $col, $param)
</pre>
+
{
 
+
$extrae_param = split(":",$param); // extrayendo el parametro
</code>
+
$cadena = html_entity_decode($columns[$col][0][value]); // Convertir
 
+
todas las entidades HTML
==Tamaño de un archivo==
+
$trozos = explode($extrae_param[1],$cadena); // partimos la cadena
 
+
$posicion = $extrae_param[2]; // extraigo el parametro que me indica
<code>
+
el nivel del submenu
<pre>
+
return $trozos[$posicion];
<?php
 
// * @author Adam Sánchez, Infoandina
 
function usr_filesize ($columns, $col, $param)
 
{
 
 
 
define('PATH', "/home/colnodo/public_html"); //ruta completa
 
 
 
$archivo =PATH.$columns[$col][0][value];
 
 
 
if ($archivo{strlen($archivo)-4}==".") { // compruebo si tiene una
 
extension tipo windows
 
 
 
$tamano = filesize($archivo);
 
 
 
              if ($tamano <= 1048576) {
 
              $tamano_kb = round($tamano /1024,1);
 
              return $tamano_kb." Kb";
 
              }
 
              else // si pasa 1024 se muestra en MB
 
              {
 
              $tamano_mb = round($tamano /1048576,1);
 
              return $tamano_mb." Mb";
 
              }
 
                                              }
 
else                                    {
 
              return "";
 
                                              }
 
  
 
}
 
}
?>
 
</pre>
 
 
 
</code>
 
</code>
 
==Tipo de archivo==
 
 
<code>
 
<pre>
 
 
<?php
 
// * @author Adam Sánchez, Infoandina
 
function usr_filetype ($columns, $col, $param)
 
{
 
 
$archivo =$columns[$col][0][value];
 
 
if ($archivo{strlen($archivo)-4}==".") {
 
 
$extension =substr($archivo, -3); //extraigo los tres ultimos caracteres
 
 
return $extension;
 
}
 
 
else {
 
 
return "no hay archivo";
 
}
 
}
 
 
 
?>
 
?>
 
</pre>
 
</pre>
</code>
+
==Ejemplos de funciones personalizadas==
 
+
[[Ver más funciones personalizadas]]
==Exportando a CSV==
 
<code>
 
<pre>
 
<?php
 
//usr_csv_field print field in CSV format
 
//(C)Michael Moritz mimo/at/restoel.net
 
function usr_csv_field($columns, $col, $param=""){
 
$quote = false;
 
list (,$value) = split_escaped (":",$param,"#:");
 
print("<br>v=".strpos($value,"&quot;")."<br>");
 
$quotepos = strpos($value,"&quot;");
 
if( $quotepos !== false ) {
 
$value = str_replace("&quot;","&quot;&quot;",$value);
 
$quote = true;
 
}
 
if($quote || (strpos($value,",")) || (strpos($value,"\n")) ) {
 
$value = "&quot;".$value."&quot;";
 
}
 
return $value;
 
}
 
?>
 
</pre>
 
</code>
 
 
 
<code>
 
<pre>
 
{alias::f_u:usr_csv_field:{_#SITEM_ID}},{alias::f_u:usr_csv_field:{_#HEADLINE}},...<br>
 
</pre>
 
</code>
 

Revisión del 16:07 21 nov 2007

Funciones para personalizar un campo

--Adam 15:07 21 nov, 2007 (CET) Son funciones que sirven para personalizar la forma como se va a mostrar el contenido de un campo en la página web.

Procedimiento

1. Crear el archivo contenedor de funciones personalizadas usr_aliasfnc.php3 dentro de la carpeta /apc-aa/include donde /apc-aa/ es el nombre de la carpeta de instalacion de las AA (puede ser otro tambien)

2. Colocar dentro de ese archivo la función, por ejemplo

function usr_nombreusuario ($columns, $col, $param)
#ejem {alias:posted_by.......:f_u:usr_nombreusuario:}
{
$id=$columns[$col][0][value];
$result=mysql_query("select distinct name from users where id='$id'")
or die("consulta invalida");
while ($row=mysql_fetch_array($result))
{
return $row["name"];
}
}

3. La función captura los datos del usuario al indicarsele el id posted_by......., para ejecutarlo desde una vista o desde la ventana de administracion se la pone asi

{alias:posted_by.......:f_u:usr_nombreusuario:}

Ver más funciones personalizadas

Cómo se pasan parámetros a una funcion personalizada

Muchas veces las funciones para cada campo nos quedan cortas y no nos queda mas remedio que desear hacernos una a la medida. Si se sabe algo de php es algo sencillo armarse una, el problema comienza cuando queremos pasar un parametro. Lo que sucede es que las AA incluyen al nombre de la funcion personalizada como parte de la variable parametro ($param). Por ejemplo si uno configura su campo asi;


Alias 1: _#MENU____ Función: f_u - definida por el usuario Parámetros: usr_explode:>:1 Descripcion: Esta funcion sirve para dividir una cadena en varias partes separadas por el signo > y para tomar el segundo valor de las cadenas divididas


Uno podria pensar que el valor de la variable $param es >, pues no, el valor de la variable $param es TODA la cadena incluyendo el nombre de la funcion," usr_explode:>:1 ", subrayo,toda la cadena. Una vez descubierto esto, es facil darse cuenta que la captura de los parametros que quisieramos pasar depende de que usemos funciones nativas en php para extraerlos como la funcion split por ejemplo

Aqui les comparto el codigo comentado de una funcion que programé para separar una cadena en varias parte separadas por el simbolo >, como pueden ver puedo pasar tambien el valor de 1 para indicar que solo quiero trabajar con la segunda cadena separada (la primero es 0). Uno puede pasar todos los parametros que quiera.

<?php

function usr_explode ($columns, $col, $param)
{
$extrae_param = split(":",$param); // extrayendo el parametro
$cadena = html_entity_decode($columns[$col][0][value]); // Convertir
todas las entidades HTML
$trozos = explode($extrae_param[1],$cadena); // partimos la cadena
$posicion = $extrae_param[2]; // extraigo el parametro que me indica
el nivel del submenu
return $trozos[$posicion];

}
</code>
?>

Ejemplos de funciones personalizadas

Ver más funciones personalizadas