Instead of creating a module, I can write a quick-n-dirty script to capture the user input and create the node.
One way of doing this would be to place the script in sites/scripts/ and bootstrap all the Drupal, js and css functions.
However, I have created a content type which I call 'Scripts'.
For this you need to enable the optional core module PHP filter.
Whenever I need a script, I create a new entry for it and enable PHP code under Input format.
As an example, the following is a script to insert a formatted node into a simplenews newsletter from a series of text input fields (also rendered as a script).
<?php
$tid = taxonomy_get_term_by_name('Company newsletter');
global $user;
// get the input from the form (also produced by a script)
// I have simply generated a script with the issue number,
// headers and urls submitted as text fields. I have simplified
// this for this example.
$nl=$_GET['fulltext'];
$issue=$_GET['issue'];
$urlm=explode(',',$_GET['urlm']);
array_pop($urlm);
$headers=explode(',',$_GET['headers']);
array_pop($urlm);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// create the string that will hold the content of the node.
// Basically, I'm just formatting the input recieved by the
// $_GET syntax above so that it fits into an HTML table
// for my newsletter
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$s="<table border=\"0\" cellpadding=\"4\" cellspacing=\"4\">\n ";
$s.="<tr><td><img src=\"http://example.com/pic.jpg\"/></td><td align=\"right\">Issue ".$issue.", ".date("j F Y")."</td></tr>";
$s.="<tr>\n <td colspan=\"1\" rowspan=\"2\" valign=\"top\">\n <table border=\"1\" cellpadding=\"8\">\n <tr><td>";
foreach ($headers as $value){
$s.='<a href="#'.str_replace(' ','_',$value).'"><font face="Arial,Helvetica,sans-serif">'.$value."</font></a><hr>\n";
}
$s.="</td>\n </tr>\n </table>\n </td>\n";
for($i=0,$j=0;$i<count($nl);$i++){
$CellContent1="text for Left Cell goes here";
$CellContent2="text for Right Cell goes here";
$s.="<tr><td>$CellContent1</td><td>$CellContent2</td></tr>";
}
$s.="</table>\n";
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Now to create the node.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$node = new StdClass();
$node->type = 'simplenews';
$node->uid = $user->uid;
$node->title = 'Company Newsletter Issue Number '.$issue;
$node->body=$s;
$node->format = 2;
$node->status = 0;
$node->taxonomy = $tid;
node_save($node);
$nodeID=$node->nid;
taxonomy_node_save($nodeID,$tid);
$query=db_query("UPDATE {simplenews_newsletters} SET s_format='html', tid=%d WHERE nid=%d",$tid[0]->tid,$nodeID);
print "go to send and edit newsletter <a href=\"http://example.com/node/".$nodeID.'/edit">here.</a>';
?>