innerHTML problem with internet explorer (supposed)

I lost some time to debug this

$("#link").click(function(){
   $("#target").load('url/to/load');
});

The problem is on Internet Explorer (all version) that refuse to load data in #target, using $.get and innerHTML(data) do not help. The problem is with no well formed html! Internet Explorer refuse to load in dom a malformed html.
Thus

$("#link").click(function(){
   $("#target").load('url/to/load');
   window.open('url/to/load');
});

will load interested html in new popup (letit open!) and wrapping with <xml></xml> document should be well formed: open with conglomerate or checking with other tool make life easy.

Email from your host you are banned (mail php security matter)

I found this in a server:

$header = "From: <".$_REQUEST['email'].">\n";
#... 
mail($from,$subjet,$message,$header);

$_REQUEST[’email’] came from a form input …

Here $_REQUEST[’email’] should be, at least, stripped by all \n no matter on how you trust to js code..

$from = $_REQUEST['email'];
$from = str_replace("\n","",$from);
$header = "From: <$from>\n";

Option List jQuery plugin

A plugin for display list of item to insert.

List item are stored in input hidden comma separed, the call is simple

Some bug to fix

options are

  • target: target div to update with options
  • input: input to update with values
  • items: items list as key:value
  • optional: default to $(“<input>”).attr(“type”,”text”) … you can setup autocomplete
  • preset: an array of key preset (must be in items)
$("#morelink").optionlist({
	  target:'#optionlist',
	      input: '#iptvalues',
	      items: {'0':'prova','1':'test','2':'due','3':'tre'},
	      preset: [0]
	  });

moreitem

.optionlist_itemlist {
position:absolute;
display:none;
border:1px solid #000;
padding:2px;
background:#fff;
z-index:3001;
}
.optionlist_additem{
 cursor:pointer;
  color:blue;
 }
.optionlist_additem:hover{
  text-decoration:underline;
 }
.optionlist_item{
 width:100px;
  float:left;
 }
.optionlist_rmitm{
 position:absolute;
  background: #999;
 opacity:0.7;
 display:none;
 cursor:pointer;
}

also #optionlist_overlay is the overlay at z-index:3000

grep over ssh in emacs

M-x grep command is very useful in a number of situation, because, for example, it give you direct access to all matched file …

But there is not so intuitive how to use grep when opening file via ssh, this is the trick:

First generate a key pair and upload public part to the remote server:
(suppose remote host/user is B/b)

ssh-keygen -t rsa
#...
ssh b@B mkdir -p .ssh
cat ~/.ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
ssh-add

be sure to use ssh-agent in order to use ssh-add

So you will not be asked for a password every time you ssh

Every time you want to grep in emacs:

M-x grep
Run grep (like this): ssh -t b@B 'grep -nH -e include path_to_files/*'

where path_to_file is the path relative to home in remote host

NOTE: do grep command when visiting remote home in emacs (otherwise it will not find matched files)

that’s all

SiteMap php class

2 simple class for sitemap:

http://www.smartango.com/sites/default/files/sitemap.txt

simple use:

{syntaxhighlighter brush:php}
$root = $_SERVER[‘DOCUMENT_ROOT’];
$sm = new SiteMap($root,’sitemap-1.xml’);
$sm->start();
$http = “http://www.example.com”;
$sm->addUrl($http.”/file.html”);
$sm->end();
{/syntaxhighlighter}

…SiteMapIdx similar

jQuery Waiting plugin

This is a simple jQuery plugin for purpose of loading phase of an ajax request or anything else.

$("#testdiv").waiting({imgsrc:"/files/aj-blue.gif"});

to stop a waiting div

$("#testdiv").stopWaiting();

TEST DIV
CLICK ME

move multiple option in select with jQuery

I look for this everywhere: how to move multiple option inside a select

function upfield() {
  var el = $('#selectedfield').children('[@selected]:first').prev();
  $("#selectedfield")
    .children('[@selected]')
    .each(function(){
	$(this).insertBefore(el);
      });

}

function downfield() {
  var el = $('#selectedfield').children('[@selected]:last').next();
  $("#selectedfield")
    .children('[@selected]')
    .each(function(){
	$(this).insertAfter(el);
	el = $(el).next();
      });
}