/create_action
action for creating a new Membership

Sourcecode in MemberMgr/actions.js:
1:   function create_action() {
2:      if (req.data.cancel)
3:         res.redirect(this.href());
4:      else if (req.data.keyword) {
5:         try {
6:            var result = this.searchUser(req.data.keyword);
7:            res.message = result.toString();
8:            res.data.searchresult = this.renderSkinAsString("searchresult", {result: result.obj});
9:         } catch (err) {
10:           res.message = err.toString();
11:        }
12:     } else if (req.data.add) {
13:        try {
14:           var result = this.evalNewMembership(req.data.username, session.user);
15:           res.message = result.toString();
16:           // send confirmation mail
17:           var sp = new Object();
18:           sp.site = result.obj.site.title;
19:           sp.creator = session.user.name;
20:           sp.url = result.obj.site.href();
21:           sp.account = result.obj.user.name;
22:           var mailbody = this.renderSkinAsString("mailnewmember", sp);
23:           sendMail(root.sys_email,
24:                    result.obj.user.email,
25:                    getMessage("mail.newMember", result.obj.site.title),
26:                    mailbody);
27:           res.redirect(result.obj.href("edit"));
28:        } catch (err) {
29:           res.message = err.toString();
30:           if (err instanceof MailException)
31:              res.redirect(result.obj.href("edit"));
32:           res.redirect(this.href());
33:        }
34:     }
35:     res.data.action = this.href(req.action);
36:     res.data.title = getMessage("MemberMgr.searchTitle", {siteTitle: this._parent.title});
37:     res.data.body = this.renderSkinAsString("new");
38:     res.handlers.context.renderSkin("page");
39:     return;
40:  }