Mass Mail recolector (MMR)

Fuente original : http://3plej-life.blogspot.com/2011/07/mass-mail-recolector-mmr.html

Asunto:
Simple y sencillo recolector de correos, osea parte del marketing web es nunca perder un visitante y siempre traerlo de vuelta.. mail listing es una manera, por eso este proyecto. Con este script javascript / php programado a objetos OOD,POO; solo necesitara colocarlo en sus sitios web y automaticamente tendra el script funcionando para que sus visitas se subscriban.

Titulo:
Mass Mail recolector (MMR) / james-jara-mail-recolector

ejemplo:
Desbloqueo celular costa rica ejemplo

Lenguaje de programacion:
Javascript : front end , Php: back end


Dependencias:
Jquery, Jqfloatobject


Para que sirve:
Recolectar correos de las visitas de la forma mas sencilla posible para luego crear campañas.

Como funciona:
Casi arquitectura de tres capas. El cliente JS osea el "formulario" toma los datos, los valida, luego envia los datos a un ws que los captura. El ws tambien esta incluido o puede poner la url de suyo mismo.
==tutorial abajo:==


Desarrollador:
James Jara.

Descarga directa:
http://code.google.com/p/james-jara-mail-recolector/downloads/detail?name=recolector_mails.zip&can=2&q=#makechanges


Codigo fuente en google code: 
http://code.google.com/p/james-jara-mail-recolector/

Codigo fuente online:
http://james-jara-mail-recolector.googlecode.com/svn/trunk/

Imagen demo de los 3 modos (banner,widget,popup):




Como instalarlo (configuración):

1. Creando el servidor.
http://james-jara-mail-recolector.googlecode.com/svn/trunk/backend.php
Modifican el nombre del archivo ($DB_URI = "mass_mailingsqlite";) SQL LITE para que nadie pueda accesarlo por su nombre original.
Accesan a backend.php de su servidor, debera salir una pagina en blanco o un mensaje que dice Ilegal, el proceso es automatico si la base de datos no existe, las crea. si las tablas no existen las crea.

2. Creando el cliente
Ok, esta parte es mas simple aun. Justo antes del cierre del body debes colocar los siguientes scripts en el orden respectivo. "Lokero" es un div en donde se agregan los contenidos automaticamente, puede seleccionar cualquier otro div, Ó agregar uno llamado "lokero" antes del cierre de body.

//remover los *** --estan porque blogger interpreta el codigo
<**/body> <**script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js" type="text/javascript"> <**/script> <**script src="http://plugins.jquery.com/files/jquery.cookie.js.txt" type="text/javascript"> <**/script> <***script src="http://plugins.jquery.com/files/jquery.floatobject-1.4.js.txt" type="text/javascript"> <**/script> <**script src="http://amirharel.com/labs/fo/jquery.floatobject-1.0.js" type="text/javascript"> <**/script> <***script src="http://james-jara-mail-recolector.googlecode.com/svn/trunk/sc.js" type="text/javascript"> <**/script> <**/html>

Sc.js es el script mas importante ya que aqui esta el objeto MJJ el cual contiene el fuente del banner, puedes utilizar el repositorio de google code (http://james-jara-mail-recolector.googlecode.com/svn/trunk/sc.js) y funcionara pero de todos modos necesitas un servidor para el lado de servidor el php.

Pues bueno la configuraccion es muy facil donde dice  MJJ.setTipo("banner");  deben cambiarlo por como lo quieren en las imagines anteriores muestra como se ve cada uno, yo personalmente  prefiero banner..

Supongo que como sabe este js esta orientado a objetos, este objeto MJJ es totalmente configurable. dentro de SC.JS pueden ver el codigo fuente, y porsupuesto como configurarlo.. de todos modos les explico. Las variables deben definirlas ANTES de MJJ.run().

Por ejemplo:
Esto deberan copiarlo en el html antes de MJJ.RUN(); esto tambien se encuentra en el script SC.JS, pero al volverlo definir el anterior se sobreescribe.



Mas adelante..voy a poner la explicacion completa del objeto MJJ.
En detalles tecnicos el objeto mjj, accesa al dom, utiliza ajax, crea validaciones,etc.

Review del objeto MJJ(ood/poo):

// vim: sw=4:ts=4:nu:nospell:fdc=4
/**
* js script of mailing script
*
* @author Ing. James Jara
* @copyright (c) 2011-2012, by Ing. James Jara
* @date 03. Julio 2012
* @version $Id: sc.js  2011-07-03 05:12:14Z james $
*
* @license sc.js is licensed under the terms of the Open Source
* LGPL 3.0 license. Commercial use is permitted to the extent that the
* code/component(s) do NOT become part of another Open Source or Commercially
* licensed development library or toolkit without explicit permission.
*
* License details: http://www.gnu.org/licenses/lgpl.html
*/

//CLASE OBJETO
function mailer_jamesjara() {
 var self = this;
 //PROPIEDADES
 this.id = null;
 this.titulo = null;
 this.boton = null;
 this.contenido = null;
 this.contenido2 =null;
 this.tipo = null;
 this.ws = null;
 this.width = null;
 this.position = null;
 var formulario = document.createElement("form");
 var markupdiv = null;
    
 //METODOS
 this.setId  = function (_id){
  self.id = _id;
 }
 this.setTitulo  = function (_titulo){
  self.titulo = _titulo;
 }
 this.setButton  = function (_boton){
  self.boton = _boton;
 }
 this.setContenido1  = function (_contenido){
  self.contenido = _contenido;
 }
 this.setContenido2  = function (_contenido2){
  self.contenido2 = _contenido2;
 }
 this.setTipo  = function (_tipo){
  self.tipo = _tipo;
 }
 this.setWS  = function (_ws){
  self.ws = _ws;
 }
 this.setWidth  = function (_width){
  self.width = _width;
 }
 
 this.setFloatPosicion  = function (_position){
  self.position = _position;
 }
 
 //FUNCIONES
 this.formato = function (_tipo){  
   var br = ""; 
   var _position = self.position;
   var _close = '(Never show)';
   
   if (_position!=null){
    switch (_position){
     case "top": 
     _position = "top: 0;"
     break;    
     case "bottom":
     _position = "bottom: 0;"
     break; 
    }
   } else { _position = ""; } 
   
   if (_tipo.toLowerCase()=="banner"){
    br="";
    $(document).ready(function(){
     $("#jamesjaradiv").makeFloat({x:20,y:200,speed:"fast"});
    }); 
   }else if(_tipo.toLowerCase()=="widget"){
    br = "
"; _position = ""; _close ="";
   }else if(_tipo.toLowerCase()=="popup"){
    $(document).ready(function(){
      var windowWidth = document.documentElement.clientWidth;  
      var windowHeight = document.documentElement.clientHeight;  
      var popupHeight = $("#jamesjaradiv").height();  
      var popupWidth = $("#jamesjaradiv").width();  
      $("#jamesjaradiv").css({  
      "position": "absolute"
      ,"width":"100%"
      ,"height":"100%"
      ,"left":"0"
      ,"background":"#000000"
      ,"opacity": "0.9" 
      }); 
      $("#jamesjaradiv2").css({  
      "margin-top": windowHeight/2-popupHeight/2
      ,"margin-left": windowWidth/2-popupWidth/2
      ,"opacity": "100" 
      });      
      $("#jamesjaradiv").fadeIn("slow");  
      $("#jamesjaradiv2").fadeIn("slow"); 
    }); 
   }
   markupdiv = new String(''+
     '
' +'
' +' ' +' '+self.titulo+'' +' ' +' ' +' ' +' '+br +' '+br +' ' +' Close ' +' ' +' '+self.contenido+'' +' '+self.contenido2+'. ' +' '+_close+' ' +'
'); return markupdiv; } this.markup = function (_tipo){ var tipo = _tipo; if(!$.cookie('jamesjara')){ formulario.innerHTML = self.formato(self.tipo); document.getElementById(self.id).appendChild(formulario); self.addHandler(_tipo); } } this.run = function (){ if(window.addEventListener){ //all window.addEventListener('load', self.markup(1) ,false); }else{ //ie window.attachEvent('onload', self.markup(2) ); } } //EVENTOS this.addHandler = function (_tipo){ if(_tipo==1){ //all document.getElementById("formjamesjara").addEventListener('click',function(e){ e.preventDefault(); self.submitform(); },false); }else{ //ie document.getElementById("formjamesjara").attachEvent('onclick',function(e){ e.returnValue = false; self.submitform(); }); } } this.submitform = function(){ var first = formulario.elements["first"].value; var email = formulario.elements["mail"].value; var bool_error = false; var error = "Hay un error, porfavor para que reciba actualizaciones automaticas, complete los datos correctamente.\n\n"; if (first.length<=3){ error += "\t El Nombre es Obligatorio. \n"; bool_error = true; } if (email.length<=6){ error += "\t El Correo es Obligatorio. \n"; bool_error = true; } if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))){ error += "\t El Correo es incorrecto. \n"; bool_error = true; } if (bool_error==false) { $(document).ready(function(){ $.post( self.ws , { 1: first , 2: email, 3: window.location.hostname }, function(data){ alert("Guardado Correctamente!"); $("#jamesjaradiv").hide("slow"); //$.cookie('jamesjara','hide', { expires: 7 }); }); }) }else{ alert(error); } } //MORE $(document).ready(function(){ $("#ocultar").click(function(){ $("#jamesjaradiv").hide("slow"); }); }); $(document).ready(function(){ $("#ocultarsiempre").click(function(){ $("#jamesjaradiv").hide("slow"); $.cookie('jamesjara','hide', { expires: 4 }); }); }); }; var MJJ ; MJJ = new mailer_jamesjara() MJJ.setId ( "lokero" ); MJJ.setTitulo ( "No se pierda las actualizaciones - GRATIS!"); MJJ.setContenido1 ( "Cuando te subscribes, tambien recibes gratis un pack de cortesia!"); MJJ.setContenido2 ( "Nosotros odiamos el spam y nunca jamas venderemos tu email."); MJJ.setButton ( "Subscribir"); MJJ.setTipo ( "banner"); MJJ.setWS ( "http://playground.com/recolector_mails/backend.php"); MJJ.setFloatPosicion( "bottom"); MJJ.setWidth ( 600) ;

0 pensamientos:

Post a Comment

feedback!