lunes, febrero 27, 2006

jueves, febrero 23, 2006

[ASP.NET] RSS Toolkit

La gente de ASP.Net de Microsoft saco un toolkit para trabajar con RSS. Este toolkit, puede ir en el GAC, en el directorio bin de tu pagina web o tambien lo podes usar para windows forms.
Para conseguirlo visita el blog de Dmitryr.
Un lindo ejemplo visual de como usarlo aquí.

viernes, febrero 03, 2006

[C#]SmartNavigation Control para .Net 1.1

Mi amigo del foro PC++, Paleta, escribio este control para .Net Framework 1.1, ya que el SmartNavigation en este framework no funciona muy bien, y no es compatible con Firefox.

Para quienes no sepan que es SmartNavigation, es una funcionalidad que nos permite mantener la posicion de la barra de scroll luego de cada PostBack. Esto nos es muy util cuando tenemos Abms muy largos o solo queremos decir que somos re capos y mantenemos el scroll luego de cada postback. tagPrefix:SmartNavigation

Código:

using System;
using System.Text;
using System.Web.UI;

using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

namespace Petrobras.CDS.Framework.Controls.Web
{
[ToolboxData("<{0}:SmartNavigation runat=server></{0}:SmartNavigation>")]

public class SmartNavigation: ViewstatedControl
{
public SmartNavigation()
{

//
// TODO: Add constructor logic here
//

}
private const string XPosId = "XPos";
private const string YPosId = "YPos";

private void CreateJavaScript()
{
string NL = Environment.NewLine;
StringBuilder script = new StringBuilder();

script.Append("<script type=\"text/javascript\">" + NL);
script.Append("function SetScrollerPosition()" + NL);

script.Append("{" + NL);
script.Append("\tif (document.getElementById('" + XPosId + "').value != '')" + NL);

script.Append("\t{" + NL);
script.Append("\t\tvar x = document.getElementById('" + XPosId + "').value;" + NL);

script.Append("\t\tvar y = document.getElementById('" + YPosId + "').value;" + NL);
script.Append("\t\twindow.scrollTo(x, y);" + NL);

script.Append("\t}" + NL);
script.Append("\tdocument.getElementById('" + XPosId + "').value = '0';" + NL);

script.Append("\tdocument.getElementById('" + YPosId + "').value = '0';" + NL);
script.Append("}" + NL);

script.Append("function GetScrollerPosition()" + NL);
script.Append("{" + NL);

script.Append("\tvar scrollX, scrollY;" + NL);
script.Append("\tif (document.all)" + NL);

script.Append("\t{" + NL);
script.Append("\tif (!document.documentElement.scrollLeft)" + NL);

script.Append("\t\tscrollX = document.body.scrollLeft;" + NL);
script.Append("\telse" + NL);

script.Append("\t\tscrollX = document.documentElement.scrollLeft;" + NL);
script.Append("\tif (!document.documentElement.scrollTop)" + NL);

script.Append("\t\tscrollY = document.body.scrollTop;" + NL);
script.Append("\telse" + NL);

script.Append("\t\tscrollY = document.documentElement.scrollTop;" + NL);
script.Append("\t}" + NL);

script.Append("\telse" + NL);
script.Append("\t{" + NL);

script.Append("\t\tscrollX = window.pageXOffset;" + NL);
script.Append("\t\tscrollY = window.pageYOffset;" + NL);

script.Append("\t}" + NL);
script.Append("\tdocument.getElementById('" + XPosId + "').value = scrollX;" + NL);

script.Append("\tdocument.getElementById('" + YPosId + "').value = scrollY;" + NL);
script.Append("}" + NL);

script.Append("if(window.addEventListener)" + NL);
script.Append("\twindow.addEventListener('onscroll',GetScrollerPosition,false);" + NL);

script.Append("else if(window.attachEvent)" + NL);
script.Append("\twindow.attachEvent('onscroll',GetScrollerPosition);" + NL);

script.Append("else" + NL);
script.Append("\twindow.onscroll = GetScrollerPosition;" + NL);

script.Append("SetScrollerPosition();" + NL);
script.Append("</script>" + NL);

if(!Page.IsStartupScriptRegistered("SmartNavigation"))
Page.RegisterStartupScript("SmartNavigation",script.ToString());

}
protected override void OnPreRender(EventArgs e)
{
CreateJavaScript();

base.OnPreRender (e);
}

public int XValue

{
get
{

if(!Page.IsPostBack)
return 0;
try

{
if(Page.Request.RequestType == "GET")

return int.Parse(Page.Request.QueryString[XPosId]);
else if(Page.Request.RequestType == "POST")

return int.Parse(Page.Request.Form[XPosId]);
else

return 0;
}
catch(System.Exception)

{
return 0;
}

}
}
public int YValue
{

get
{
if(!Page.IsPostBack)

return 0;
try
{

if(Page.Request.RequestType == "GET")
return int.Parse(Page.Request.QueryString[YPosId]);

else if(Page.Request.RequestType == "POST")
return int.Parse(Page.Request.Form[YPosId]);

else
return 0;

}
catch(System.Exception)
{

return 0;
}
}

}


protected override void Render(HtmlTextWriter writer)
{

Page.VerifyRenderingInServerForm(this);
writer.WriteLine("<input type=\"hidden\" name=\"" + XPosId +

"\" id=\"" + XPosId + "\" value=\"" + XValue + "\" />");

writer.WriteLine("<input type=\"hidden\" name=\"" + YPosId +

"\" id=\"" + YPosId + "\" value=\"" + YValue + "\" />");

}
}
}




Su forma de uso es simple:

<tagPrefix:SmartNavigation id="smartNav" runat="server"></tagPrefix:SmartNavigation>

jueves, febrero 02, 2006

[Linux] La distribución como centralita telefónica.


Astlinux 0.3.0, es una interesantísima distribución Linux, especialmente destinada a funcionar como una centralita telefónica.

Vía iHardware descubrimos a AstLinux, una distribución Linux, especialmente adaptada a Asterisk y que transforma a nuestro ordenador en una potente centralita telefónica bajo IP.

AstLinux es una distribución superligera, por lo que es ideal para correr en lápices USB, aunque también puede ser instalado en un ordenador.

URL: http://www.astlinux.org/

Fuente: HispaMp3