He.RequireComponent('He.Framework.Sha1'); He.RequireComponent('He.Framework.Validation'); He.RequireComponent('He.Components.SuggestField.clientside'); He.Bootstrap('He.Framework.Form'); He.Framework.Form.GetKeyField = function() { return He.Application.GetName() + '_frmkey'; } He.Framework.Form.OnFocusField = function(_field) { $('helper_' + _field.target.id).style.display = 'block'; // new Effect.Appear('helper_' + _field.id); } He.Framework.Form.OnBlurField = function(_field) { $('helper_' + _field.target.id).style.display = 'none'; // new Effect.Fade('helper_' + _field.id); } He.Framework.Form.CancelMedia = function() // Is binded to the field { var fid = this.id; this.value = null; $(fid + '_field').show(); $(fid + '_preview').hide(); $(fid + '_manager_rmv').hide(); } He.Framework.Form.BrowseMedia = function() // Is binded to the field { var field = this; He.Components.MediaManager.Open( 'Media Manager : select from your library', '', '','', function(){He.Framework.Form.UpdateMediaField(field,He.Components.MediaManager.mediaIdFromLibrary);} ); } He.Framework.Form.UpdateMediaField = function(_field,_value) { if(_value) { _field.value = _value; } var fid = _field.id; var media = _field.value; He.Framework.Ajax.Update( fid + '_preview', '/He/Components/MediaForm/ajax.php', 'field=' + fid + '&media='+ media, function() { $(fid + '_field').hide(); $(fid + '_preview').show(); $(fid + '_manager_rmv').show(); } ); } He.Framework.Form.GetControlField = function() { return He.Application.GetName() + '_frmctr'; } He.Framework.Form.Trim = function(_str) { return _str.replace(/^\s+/,'').replace(/\s+$/,''); } He.Framework.Form.GetSignField = function() { return He.Application.GetName() + '_frmsig'; } He.Framework.Form.SignQs = function(_query) { var key = '',sig = '',ctr = ''; var qs = _query.split('&'); qs.sort(function(a,b) { a = a.split('=')[0]; b = b.split('=')[0]; var ap = a.substr(0,4), an = a; if(ap == 'btn_' || ap == 'chk_' || ap == 'rko_' || ap == 'hid_' || ap == 'sta_') { an = an.substr(4); } var bp = b.substr(0,4), bn = b; if(bp == 'btn_' || bp == 'chk_' || bp == 'rko_' || bp == 'hid_' || bp == 'sta_') { bn = bn.substr(4); } if(an < bn) return -1; if(an > bn) return 1; return 0; }); for(var i = 0; i < qs.length; ++i) { var f = qs[i]; var nv = f.split('='); var prefix = nv[0].substr(0,4); if(nv[0] == He.Framework.Form.GetControlField()) { ctr = nv[1]; sig = ctr + sig; } else if(nv[0] == He.Framework.Form.GetKeyField()) { key = nv[1]; } else if(nv[0] != He.Framework.Form.GetSignField() && prefix != 'btn_' && prefix != 'rko_' && prefix != 'chk_') { sig += He.Framework.Form.Trim( f.replace(new RegExp("([\r])",'g'),"\\r"). replace(new RegExp("([\n])",'g'),"\\n"). replace(new RegExp("([\"\'])",'g'),"\\$1") ); } } He.Log('Signed : ' + sig + ' on ' + key); sig = He.Framework.Sha1(sig + key); He.Log('Signed : ' + sig); return (_query + '&' + He.Framework.Form.GetSignField() + '=' + sig); } He.Framework.Form.Submit = function(_form) { if(!He.Framework.Form.Validate(_form)) { return false; } He.Framework.Form.Sign(_form); return true; } He.Framework.Form.OnClick = function(_cb) { if(!He.Framework.Form.Submit(this.form)) { return false; } if(He.IsFunction(_cb)) { return _cb.call(this); } return true; } He.Framework.Form.Sign = function(_form) { var key = '',sig = '',ctr = ''; var fields = _form.getElements(); fields.sort(function(a, b) { var ap = a.name.substr(0,4), an = a.name; if(ap == 'btn_' || ap == 'chk_' || ap == 'rko_' || ap == 'hid_' || ap == 'sta_') { an = an.substr(4); } var bp = b.name.substr(0,4), bn = b.name; if(bp == 'btn_' || bp == 'chk_' || bp == 'rko_' || bp == 'hid_' || bp == 'sta_') { bn = bn.substr(4); } if(an < bn) return -1; if(an > bn) return 1; return 0; }); for(var i = 0; i < fields.length; ++i) { var e = fields[i]; if(e.name == He.Framework.Form.GetControlField()) { ctr = e.value; sig = ctr + sig; } else if(e.name == He.Framework.Form.GetKeyField()) { key = e.value; } else if(e.name != He.Framework.Form.GetSignField()) { if((e.type != 'button') && (e.type != 'checkbox') && (e.type != 'radio') && (e.type != 'file') && (e.disabled != true)) { e.value = He.Framework.Form.Trim(e.value); // sanitize var pre = e.name.substr(0,4), name = e.name; if(pre == 'hid_' || pre == 'sta_') { name = name.substr(4); } sig += name + '=' + e.value. replace(new RegExp("([\r])",'g'),'\\r'). replace(new RegExp("([\n])",'g'),'\\n'). replace(new RegExp("([\"\'])",'g'),'\\$1'); } } } He.Log('JS - Signed : ' + sig + ' on ' + key); sig = He.Framework.Sha1(sig + key); He.Log('JS - Signed : ' + sig); var sf = _form[He.Framework.Form.GetSignField()]; if(!sf) { // Create & Append signature field sf = document.createElement('input'); sf.name = He.Framework.Form.GetSignField(); sf.type = 'hidden'; _form.appendChild(sf); } sf.value = sig; _form.signed = true; }