moksha/lib/helpers.py | 18 ++++++++++-------
moksha/public/javascript/moksha.js | 38 ++++++++++++++++++++++++++++++++-----
2 files changed, 44 insertions(+), 12 deletions(-)
New commits:
commit aed3f829bc77c2d143397d7019d30881451bbb5d
Author: John (J5) Palmieri <johnp(a)redhat.com>
Date: Tue Apr 14 18:50:46 2009 -0400
add the ability to inject arbitrary fields into forms and http headers
diff --git a/moksha/lib/helpers.py b/moksha/lib/helpers.py
index 4065409..01cc726 100644
--- a/moksha/lib/helpers.py
+++ b/moksha/lib/helpers.py
@@ -732,6 +732,16 @@ def to_unicode(obj, encoding='utf-8'):
obj = unicode(obj, encoding, 'replace')
return obj
+def replace_app_header(app, header_name, value):
+ from paste.response import replace_header
+ if app.headers:
+ headers = list(app.headers)
+ else:
+ headers = []
+
+ replace_header(headers, header_name, value)
+ app.headers = headers
+
class EnumDataObj(dict):
def __init__(self, code, data):
super(EnumDataObj, self).__init__(code=code, data=data)
@@ -746,14 +756,8 @@ class EnumDataObj(dict):
raise e
def replace_app_header(self, app, header_name):
- from paste.response import replace_header
- if app.headers:
- headers = list(app.headers)
- else:
- headers = []
+ replace_app_header(app, header_name, self.code)
- replace_header(headers, header_name, self.code)
- app.headers = headers
def __repr__(self):
# act as if the user requested the code
diff --git a/moksha/public/javascript/moksha.js b/moksha/public/javascript/moksha.js
index 7cfab76..da1c4e8 100644
--- a/moksha/public/javascript/moksha.js
+++ b/moksha/public/javascript/moksha.js
@@ -170,17 +170,45 @@ moksha = {
if (typeof(moksha_csrf_token) === 'undefined' || !moksha_csrf_token)
return;
+ moksha.add_hidden_form_field(form_element,
+ '_csrf_token',
+ moksha_csrf_token);
+ },
+
+ /*********************************************************************
+ * Take a form element and add or update a hidden field
+ *
+ * Example:
+ * <form action="/process_form/"
+ * onSubmit="moksha.add_hidden_form_field(this)">
+ *
+ * Params:
+ * form_element - the form being updated
+ * key - the name of the field we are adding
+ * value - the value to set it to
+ * override_existing - defaults to true, if set to false we only
+ * add the field if it does not exist or is
+ * set to an empty string
+ *********************************************************************/
+ add_hidden_form_field: function(form_element, key, value, override_existing) {
+ if (typeof(override_existing) === 'undefined')
+ override_existing = true;
+
var $fe = $(form_element);
- var $csrf_field = $("input[name=_csrf_token]", form_element);
+ var $field = $("input[name=" + key + "]", form_element);
// create a field if it doens't already exist
- if ($csrf_field.length < 1) {
- $csrf_field = $("<input
type='hidden'></input>").attr("name",
"_csrf_token");
+ if ($field.length < 1) {
+ $field = $("<input
type='hidden'></input>").attr("name", key);
- $fe.append($csrf_field);
+ $fe.append($field);
}
- $csrf_field.attr("value", moksha_csrf_token);
+ var v = $field.attr("value");
+ if (!override_existing && v)
+ return;
+
+ $field.attr("value", value);
},
/********************************************************************
Show replies by date