Libreria XAJAX en PHP

Mayo 9, 2009

Xajax es una biblioteca código abierto de PHP capaz de generar aplicaciones Web con tecnología AJAX.
Xajax utiliza una forma de trabajo de funciones, designando qué funciones o métodos de código PHP se convierten en funciones AJAX
Puede descargarlo Aqui

Ejemplo 1 : Xajax y funciones PHP

<?php
//Incluir con PHP el archivo donde está la clase xajax
require (‘xajax/xajax_core/xajax.inc.php’);

//Instanciamos el objeto de la clase xajax
$xajax = new xajax();

//Escribimos una función en PHP, que luego llamaremos con por medio de ajax
function cambia_texto($mensaje){

//instanciamos el objeto para generar la respuesta con ajax
$respuesta = new xajaxResponse();
//escribimos en la capa con id=”mensajeDiv” el texto de $mensaje
$respuesta->assign(“mensajeDiv”,”innerHTML”,$mensaje);
//tenemos que devolver la instanciación del objeto xajaxResponse
return $respuesta;
}
//asociamos la función creada anteriormente al objeto xajax
$xajax->registerFunction(“cambia_texto”);
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();
?>

<html>
<head>
<!– En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario –>
<?php $xajax->printJavascript(“xajax/”); ?>
</head>
<body>
<!– Se llama a la funcion javascript generada por xajax con el prefijo ‘xajax_’ seguida del nombre de la funcion creada con php –>
<input type=”button” onclick=”xajax_cambia_texto(‘Hola Ajax’);” value=”Pulsa” />
<div id=”mensajeDiv”></div>
</body>
</html>

Ejemplo 2: Xajax y objetos

<?php
//Incluir con PHP el archivo donde está la clase xajax
require_once(“xajax/xajax_core/xajax.inc.php”);
//Creamos la clase cuyo metodo utilizara el xajaxResponse
class alumno{
private $mensaje=”Ajax”;
public function hola(){
//instanciamos el objeto para generar la respuesta con ajax
$objResponse = new xajaxResponse();
//En este caso el metodo lanzara un alert js con el texto “Ajax”
$objResponse->alert(‘Hola ‘.$this->$mensaje);
//Devolvemos el objeto xajaxResponse
return $objResponse;
}
}
$alumno = new alumno()
//Instanciamos el objeto de la clase xajax
$xajax = new xajax();
//asociamos el metodo del objeto $alumno al objeto xajax con un array(“nombreEnJS”,$objeto,”metodo”)
$xajax->registerFunction(array(“miFuncion”, $alumno,”hola”));
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();
?>

<?php $xajax->printJavascript(“xajax/”) ?>
<input type=”submit” value=“Llamar” onclick=”xajax_miFuncion(); return false;”>

METODOS DE LA CLASE XAJAX

$xajax = new xajax();
$xajax->setFlag(“debug”, true);
$xajax->setFlag(“decodeUTF8Input”, true);
$xajax->setFlag(“characterEncoding”,’ISO-8859-1′);
$xajax->registerFunction(“miFuncion”);
$xajax->processRequest();

METODOS DE LA CLASE AJAXRESPONSE

$objResponse = new xajaxResponse();
$objResponse->redirect(“http://www.google.com”);
$objResponse->alert(“Mostramos un alert.”);
$objResponse->confirmCommands(2, “Mensaje que pregunta?”);
$objResponse->call(“funcionJS”, “arg 1″, “arg N” );
$objResponse->includeScript(archivo.js);
$objResponse->assign(“etiqDiv”, “innerHTML”, “dato”);
$objResponse->assign(“etiqueta3”, “style.width”, “25%”)
$objResponse->remove(“etiqDiv”);

Ejemplo 3 : Formularios Xajax

<?php
require_once(“xajax/xajax_core/xajax.inc.php”);
function testForm($formData){
$objResponse = new xajaxResponse();
$objResponse->assign(“submittedDiv”, “innerHTML”, nl2br(print_r($formData, true)));
return $objResponse;
}
$xajax = new xajax(); $xajax->registerFunction(“testForm”);
$xajax->processRequest();
?>

<form id=”testForm1″ onsubmit=”return false;”>
<input type=”text” name=”textInput” value=”text” />
<input type=”text” name=”textInput2″ value=”text” />
<select id=”select” name=”select”>
<option value=”1″>One</option> <option value=”2″>Two</option>

<option value=”3″>Three</option>

<option value=”4″>Four</option>
</select>
<input type=”submit” value=“submit por xajax” onclick=”xajax_testForm(xajax.getFormValues(‘testForm1′)); return false;” />
</form>
<div id=”submittedDiv”></div>

Ejemplo 4 : Llamar una funcion javascript desde codigo php

<?php
require(“xajax/xajax_core/xajax.inc.php”);
function callScript() {
$response = new xajaxResponse();
$value2 = “elemento 2″;
$response->call(“myJSFunction”, “argumento 1″, 9432.12,
array(“myKey” => “elemento 1″, “key2″ =>$value2));
return $response;
}
$xajax = new xajax();

$xajax->registerFunction(“callScript”);

$xajax->processRequest();
?>

<?php $xajax->printJavascript(“xajax/”) ?>
<script type=”text/javascript”>
function myJSFunction(Argtext, ArgNum, ArrayArg) {
var newString = Argtext + ” y ” + (+ ArgNum + 100) + “\n”;
newString += ArrayArg["myKey"] + ” | ” + ArrayArg.key2;
alert(newString);
}
</script>
<input type=”button” value=”Click Me” onclick=”xajax_callScript()” />

CAMBIOS EN LA VERSION 0.5 XAJAX

$xajax->registerFunction(‘funcion’);
X
$xajax->register(XAJAX_FUNCTION, ‘funcion’);
$xajax->processRequests();
X
$xajax->processRequest();
Publica todos los métodos públicos de un objeto:
$xajax->register( XAJAX_CALLABLE_OBJECT, $objeto);


Mas cerca de la versión estable de dokeos 1.8.6

Mayo 7, 2009
dokeos

dokeos

Hola comunidad de dokeos,
A este momento estamos muy cerca de la versión estable de dokeos…hemos trabajado muchos en corregir la mayoria de bugs que venian con la version 1.8.5 y hoy siendo las 6 pm en perú, estan quedando cerca de 40 tareas a terminar.
Ahún nos queda un bug muy importante que corregir,esto está relacionado con aspectos de seguridad,que seguramente mañana nos enfocaremos en él.

PD: pueden ver la lista de las últimas tareas siguiendo este enlace :
Ver últimas tareas para dokeos 1.8.6 estable


PHP para principiantes

Mayo 7, 2009

baby

Hola, este post va dedicado para aquellas personas que recien se inician con php. En uno de los cursos que lleve en alguna ocasion me dejaron como tarea hacer una aplicacion, que me permita loguearme, iniciar una sesion y entrar a un sistema de mantenimiento de una tabla para poder añadir, editar y dar de baja a un elemento. En este caso haremos una pequeña aplicacion para una tienda de celulares.

Empezemos.

Para hacerlo mas rapido propongo usar wamp, appeserv o XAMPP

Primero creamos la Base de datos
CREATE DATABASE ventas_celulares

USE ventas_celulares

CREATE TABLE productos (
id int(10) unsigned NOT NULL auto_increment,
nombre varchar(80) NOT NULL,
marca varchar(80) NOT NULL,
color varchar(50) NOT NULL,
tapa char(2) NOT NULL,
imagen varchar(100) NOT NULL,
camara char(2) NOT NULL,
estado char(1) NOT NULL default ‘1′,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

Listo

Ahi iniciaremos la sesion
//iniciamos con 0 la variable $valido
$valido=0;

//damos los valores de usuario y contraseña; esto tambien se podria hacer con un query sql, pero eso no le veremos aqui
$vector_validador=array(“cvargas”=>”123″, “admin”=>”admin”);

//iteracion del arreglo hasta que encuentre que tanto el usuario como la clave ingresados coinsiden
//De ser asi a $valido le damos 1
foreach($vector_validador as $k=>$v){

if($_POST["usuario"]==$k){

if ($_POST["password"]==$v){

$valido=1;

$usuario=$k;

}

}

}

//Ahora bien si valido es 1 iniciamos una sesion, de lo contrario volvemos al index
if ($valido==1){

session_start();

session_register(“usuario”);

$_SESSION["usuario"]=$usuario;

header(“location: panel.php”);

}else{

header(“location: index.php”);

}

Luego esto nos llevara a panel.php donde tenemos las opciones de añadir editar y dar de baja
pero antes mostraremos el listado de registros actuales

antes en un archivo vamos a grabar los datos de coneccion de esta manera

<?php
$Cn=mysql_connect(localhost,root,123);
$database=mysql_select_db(“ventas_celulares”);
?>

al cual llamaremos coneccion.php

require_once(‘coneccion.php’);

$sql=”SELECT * FROM productos”;

$result=mysql_query($sql);

Al final les dejo el zip con todo para que ustedes lo modifiquen, pero lo importante aqui es explicar con se hace el insert

<?php

//incuimos el archivo de coneccion
require_once(‘coneccion.php’);

Definimos variables a los campos que nos enviaran desde el script de registro
$nombre = $_POST["nombre"];

$marca = $_POST["marca"];

$color = $_POST["color"];

$tapa = $_POST["tapa"];

$camara = $_POST["camara"];

$nom = $_FILES["imagen"]["name"];

$extension = explode(“.”,$nom);

$cantidad = count($extension)-1;

$tamano =$_FILES["imagen"]["size"];

//AQUI LO INTERESANTE

//Como ingresaremos una imagen antes podemos validar lo que vamos a subir
//en este caso solo podemos subir un JPEG y una imagen de maximo 1MB
if($extension[$cantidad]==”jpg” ||$extension[$cantidad]==”JPG”) {

if($tamano

Listo, este es un ejemplo sencillo y con algunas cositas muy simples pero interesantes tanto php como javascript y html y hasta con imagenes cargadas y sin cargar, pruebalo…

Si crees que lo puedes mejorar no dudes en hacerlo y comparte tu conociemiento

Descarga el zip aqui.


Actualizar Ubuntu 8.10 (Intrepid Ibex) a Ubuntu 9.04 (Jaunty Jackalope)

Abril 26, 2009

Hola a todos,
esta semana hize unas averias a mi sistema ubuntu 8.10 al apagarlo mientras synaptic eliminaba una instalacion de postgre sql, los cuales los solucioné … y navegando por la red encontre que ya estaba disponible la nueva version de ubuntu,la cual tiene por nombre “Jaunty Jackalope” y tome la decisión actualizarlo debido a que la version 8.10 me molestaba mucho porque tenia que encender mi pc como 3 veces para que recien inicie ubuntu ( tengo una pentium lV con 3.0 Ghz de procesador y 1.5 Gb de memoria), y queria probar si en esta versión se solucionaba esto…y así fue.

jaunty-jackalope

Aquí los pasos para instalarlo :

ejecutamos : $ sudo update-manager -d

alli aparecerá una ventana que contiene en la parte superior un aviso de actualizacion a la version 9.04 de ubuntu.

actualizar

este proceso me demoró cerca de 7 horas,le aparecerán varios cuadros de dialogo en los cuales debe aceptar los cambios …

ver imagenes del proceso :

Nota importante : durante el proceso de actualización se abrirá una terminal, … no se debe cerrar ésta por ningun motivo …

1 : —————————————————————————–
actual1

2 : —————————————————————————–
actual2

3 : —————————————————————————–
actual3

4 : —————————————————————————–
actual4

Al final de todo se reinica el equipo y ya tenemos ubuntu 9.04 instalado correctamente …


Get e-course en LearningReview

Abril 16, 2009
Get e-course

Get e-course

Get e-course está presente en la edición Nº6 de la revista Learning Review.

El artículo se titula Nace una plataforma de intercambio de cursos de e-Learning.

En éste resaltan las características de Get e-course, entre las que se encuentran las siguientes facilidades:

  • Votos sobre contenidos, proveedores y creadores
  • Seguimiento y límites de descargas
  • Información de licencias
  • Comentarios
  • Subida de fotos o videos introductorios
  • Ránking de los mejores creadores
  • Ránking de los mejores contenidos
  • Ránking de los productos más descargados
  • Clasificación de contenidos

Integración entre Dokeos y Joomla (actualizado)

Marzo 23, 2009

Hola soy Carlos Vargas, hoy 3 de Noviembre de 2009, actulizo el post con un enlace a un fichero zip que contiene todos los archivos para hacer esta integracion, pido disculpas pues el host en el que estaba antes dejo de funcionar pueden descargar todo junto desde aqui.

Dokeos Joomla Integration

Hola, hace poco tiempo hemos probrado una integración interesante entre Joomla y Dokeos, explico de que se trata a continuación:

En un sitio web de Joomla, instalando el modulo JFusion, se puede integrar joomla con otros sistemas como: Magento, Gallery2, myBB, phpBB3, vBulletin, SMF, dokuwiki y Moodle; pues bien con la ayuda de Roberto Sciamanna (Italia) y Yannick Warnier (Bélgica) hemos adecuado este modulo añadiendo un plugin para que haya una integracion con Dokeos.

El resultado es que un usuario al registrarse en el sitio web de joomla, automáticamente se registre también en Dokeos y al iniciar una sesión en el mismo sitio de Joomla, con tan solo un enlace al sitio de Dokeos, se inicie tambien una sesión ahi.

Para hacerlo se necesita una configuración un poco tediosa y consisa, pero con paciencia y mucho cuidado podremos lograr una esta funcionalidad interesante a nuestro sistema.

Pasos a seguir.

Instalar un sitio web de Joomla

Pack Joomla-1.5.9-spanish.zip

Pack Joomla-1.5.9-spanish.tar.gz

Pack Joomla-1.5.9-spanish.tar.bz2

Dentro de la instalacion Joomla copiar una version 1.8.6 beta 3 de Dokeos, he instalarla de ahi

Dokeos 1.8.6.1 (He actualizado el link hoy 02-09-2009)

Ejemplo de path: /var/www/joomla/dokeos

Es necesario descargar el modulo JFusion para Joomla aqui tengo un enlace

Panel

Instalar el plug-in plug-in de mi gestor de módulo, y siga el asistente, se le pedirá que apague la posibilidad de que los usuarios registro en Dokeos

Para ello cargar el archivo desde aqui

cargarplugin

En el panel de configuración de JFusion establecer como maestro joomla int y como esclavo el dokeos

Administracion

Para configurar seleccionar dokeos y hacer clic en editar, lo cual me llevará a completar un formulario para llenar los datos de su sistema, sean: nombre de la base de datos, la cual debe ser la main de dokeo, usuario y contraseña de mysql etc, pero los datos que si deben llenados de manera especial son los siguientes:

config1

config2

Este campo hara que todos los suscritos via joomla sean estudiantes, ahi es donde se puede cambiar a los otros tipo de usuario

group

Es necesario hacer unos cambios en:

www/joomla/administrator/components/com_jfusion/models

reemplazar el archivo model.curl.php por el que esta aqui

Yo no se mucho sobre Joomla, por eso la unica forma hasta ahora de como comprobar lo aplicado, es iniciando una sesion desde drupal una vez hecho esto directamente en la URL escribir [su ditectorio joomla]/dokeos y ahi ya se habra iniciado tambien la sesion de Dokeos con el usuario que se registro desde Joomla. Agradecería si alguien pueda explicar como hacerlo

Algo a tener en cuenta es que al registrarse en joomla el nombre al se un solo campo para dokeos se corta en dos para el apellidos, es decir si en mi registro Joomla pongo como nombre Carlos Vargas en Dokeos sera Nombre: Carlos Apellido: Vargas, para ser mas claro lo primerop que escribo es el nombre despues de un &nbsp; se corta para mandar el siguiente texto como apellido


Patrones de diseño en php5

Marzo 22, 2009

Hola a todos,una vez mas vuelvo a escribir un pequeño post que les servirá para comprender la implementación de algunos patrones de diseño en php5…

comenzaré por definir el termino patrón de diseño …

1. Que es un patrón de diseño
- Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características:
* Debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores
* Debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias
- ver fuentes : Patrones de diseño

y listo… ahora vamos a ver lo que nos gusta a todos los desarrolladores ” !! código ¡¡ “

:: Patron Singleton ::

El patrón de diseño singleton (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.

class singleton {
     private static $unica_instancia;
     public static function get_instance () {
     if (!isset($unica_instancia)) {
          $obj=__CLASS__;
          self::$unica_instancia=new $obj;
     }
          return self::$unica_instancia;
     }
     public function get_method () {
          echo ‘mi objeto de la clase ‘.__CLASS__;
     }
     private function __construct() {
          //nadie lo puede instanciar
     }
     private function __clone() {
          throw new Exception(“No se permite clonar”);
     }
}

– El patrón Singleton solo permite crear una instancia de la clase

     $mi_objeto=singleton::get_instance();
      $mi_objeto->get_method($mi_objeto);

Es bueno comprender este patrón, ya que hay otros patrones que se basan en éste.

:: Patron Factory ::

el patrón de diseño Factory Method consiste en utilizar una clase constructora

define(DOKEOS,”En Dokeos “);
class Software_libre {
     function __toString () {
          return DOKEOS.”desarrollamos software libre”;
     }
}
class Software_a_medida {
     function __toString () {
          return DOKEOS.”desarrollamos software a medida…”;
     }
}

abstract class dokeos {
     public static function crea ($class_kind) {
          return new $class_kind;
     }
}
echo dokeos::crea(‘Software_libre’);
echo dokeos::crea(‘Software_a_medida’);

:: Patron Registry ::

En resumidas palabras, el Registry Pattern, es un medio simple y eficiente de compartir datos y objetos en nuestra aplicación sin tener que preocuparse de mantener numerosos parámetros o hacer uso de variables globales.

class Registry {
     private $datos = array();

     public function add($key, $object) {
          if (!isset($this->datos[$key])) {
               $this->datos[$key] = $object;
          }
     }

     public function remove($key) {
           if (!isset($this->datos[$key])) {
               unset($this->datos[$key]);
          }
     }

     public function get($key) {
          if (!isset($this->datos[$key])) {
               return $this->datos[$key];
          }
     }

     public function exist($key) {
          if (isset($this->datos[$key])) {
               return true;
          }
          else return false;
     }
}


Introducción a Akelos Framework

Marzo 20, 2009

Quiero compartir mi experiencia ya que desde hace meses atrás empece a involucrarme en el mundo de los framework y en especial con Akelos Framewok y a sido una gran experiencia ya que facilita y recude muchas lineas de codigo a la hora de desarrollar aplicaciones.

en este post empésaremos comentaremos el origen y algunos conceptos basicos de este potente framewoks.

Akelos PHP Framework es una versión para PHP de la plataforma de desarrollo Ruby on Rails. Al igual que Rails, proclama incrementar la velocidad y facilidad con la que se pueden desarrollar aplicaciones web que utilizan bases de datos.

Combina la simplicidad con la posibilidad de desarrollar aplicaciones escribiendo menos código que con otros frameworks y con un mínimo de configuración, ofreciendo también la posibilidad de crear esqueletos de código (Scaffolds) para acelerar este proceso.
Abreviado generalmente como Akelos, es un proyecto de código abierto escrito en el lenguaje de programación PHP. Las aplicaciones escritas utilizandoAkelos siguen paradigma de la arquitectura Modelo Vista Controlador (MVC).


Akelos a sido desarrollado por Bermi Ferrer, este framework soporta Multiplataforma y la gran ventaja es que cuenta con una licencia LGPL.

Aqui les comparto un enlace externo donde entrevistan que le hicieron a Bermi Ferrer.

Entrevista

Site Akelos

Nota: en nuestro siguiente post comensaremos a iniciarnos en el mundo del desarrollo de las aplicaciones con akelos desde lo basico a lo complejo. espero sus comentarios y aportes que siempre seran vienvenidos.


Tips basicos para traducir sobre Akelos

Marzo 20, 2009

En el framework de Akelos podemos utilizar varias maneras de traducir variables de idioma pero hay que saber cuando utilizarlos, por ejemplo para utilizar translate en una función se usa translate y seguido dentro de unos parentesis la string que sera traducida en otro archivo, esto tambien es usado en archivos *.tpl que son los templates, veamos el siguiente ejemplo:

<li><?php  echo  $url_helper->link_to ($text_helper->translate(‘String’)

ó sino también se puede usar asi  _{String} y dentro de esta la string que sera traducida:

<div id=”title-coment” class=”span”> _{String} </div>
<label for=”product_language_id”>_{String}</label><br />

Para una traduccion en los controladores se puede usar la función $this->t( ‘ ‘ );

Para archivos de ayuda (helpers) que tienen clases extendidas de ayuda :

$this->_controller->t(‘String’);

function link_to_product($id)
{
return $this->_controller->url_helper->link_to($this->_controller->t(‘String), array(‘controller’=>’product’,'action’ => ’show’, ‘id’ => $id));
}

Ahora todas las string que se querian traducir estan siendo almacenadas en un folder raíz local el cual estaran subdivididas en varios folders segun al modulo al que pertenezca y alli se crearan archivos php el cual tendran las variables a traducir, ejemplo

*LOCALES:

-Categoria: es.php ( archivo en español), en.php (archivo en ingles)

-Productos: español.php, ingles.php

Ejemplo de español.php

<?php

$dictionary['String'] = ‘Cadena’;

?>


¡Ya esta disponible Dokeos 1.8.6 Beta 2!

Febrero 18, 2009

Ya esta disponible la beta 2 de Dokeos 1.8.6, este es un previo al lanzamiento de la versión 1.8.6 que será dentro de poco. Sugerimos a los usuarios, que migren su plataforma de Dokeos a esta versión, a lo que estaremos atentos a sus reportes de bugs, sugerencias y demas contribuciones. La migración se puede hacer:

  • de 1.8.3 a 1.8.6
  • de 1.8.4 a 1.8.6
  • y de 1.8.5 a 1.8.6
  • Sin ningun problema. Para hacerlo descomprime los archivos encima de los actuales y entra a http://mi-dominio-dokeos.com/main/install y sigue los pasos correspondientes para hacer un upgrade a la version 1.8.6, esto para el caso de actualizar tu plataforma actual y si aun no tienes una con esta misma descarga solo create un sitio en el virtual host o copia los archivos en la carpeta www/dokeos y empieza una nueva instalacion.

    http://www.dokeos.com/download/dokeos-1.8.6-beta2.zip

    pantalla instalación

    Dokeos 1.8.6 cuenta con novedades y correcciones. Estamos esperando sus opiniones.