Index: rules_admin/rules_admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/rules/rules_admin/Attic/rules_admin.inc,v
retrieving revision 1.1.2.11
diff -u -p -r1.1.2.11 rules_admin.inc
--- rules_admin/rules_admin.inc	3 Aug 2009 16:42:25 -0000	1.1.2.11
+++ rules_admin/rules_admin.inc	19 Aug 2009 13:41:20 -0000
@@ -266,7 +266,7 @@ function _rules_admin_get_label(&$form_s
 function rules_admin_get_argument_labels($proxy, $element, $prefix = '@') {
   $labels = array();
   $names  = rules_get_mapped_argument_names($element);
-  $vars   = $proxy->get_available_variables($element['#id']);
+  $vars   = $proxy->get_available_variables(isset($element['#id']) ? $element['#id'] : NULL);
   $labels = array();
   foreach ($names as $argument_name => $variable_name) {
     if (isset($vars[$variable_name]['label'])) {
Index: rules_admin/rules_admin.rule_forms.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/rules/rules_admin/Attic/rules_admin.rule_forms.inc,v
retrieving revision 1.1.2.8
diff -u -p -r1.1.2.8 rules_admin.rule_forms.inc
--- rules_admin/rules_admin.rule_forms.inc	19 Apr 2009 21:21:31 -0000	1.1.2.8
+++ rules_admin/rules_admin.rule_forms.inc	19 Aug 2009 13:41:20 -0000
@@ -79,7 +79,12 @@ function rules_admin_form_add_rule(&$for
 }
 
 function rules_admin_form_add_rule_submit($form_id, &$form_state) {
-  $rule = isset($form_state['proxy']) ? $form_state['proxy']->get_rule() : array('#type' => 'rule');
+  if (isset($form_state['proxy'])) {
+    $rule = &$form_state['proxy']->get_rule();
+  }
+  else {
+    $rule = array('#type' => 'rule');
+  }
 
   foreach (array('set', 'label', 'active', 'weight') as $key) {
     $rule['#'. $key] = $form_state['values'][$key];
@@ -89,6 +94,8 @@ function rules_admin_form_add_rule_submi
 
   //get an unique name
   $rule_name = _rules_admin_rule_get_new_unique_name();
+  // update labels
+  rules_admin_update_labels($form_state, $rule);
 
   rules_item_save('rules', $rule_name, $rule);
   rules_clear_cache();
@@ -97,6 +104,21 @@ function rules_admin_form_add_rule_submi
 }
 
 /**
+ * Updates lables of actions and conditions, if they are present.
+ */
+function rules_admin_update_labels(&$form_state, &$rule) {
+  foreach (array('#conditions', '#actions') as $element_type) {
+    foreach ($rule[$element_type] as $key => $element) {
+      if ($element['#info']['label callback'] !== FALSE) {
+        rules_include('rules_forms');
+        $info_changes = _rules_admin_get_label($form_state, $element['#info'], $element, $element['#info']['label']);
+        $rule[$element_type][$key]['#info']['label'] = $info_changes['label'];
+      }
+    }
+  }
+}
+
+/**
  * Returns the form for the settings of a rule
  *
  * @param $is_set
@@ -198,6 +220,8 @@ function rules_admin_form_edit_rule_subm
     $rule_ref['#'. $key] = $form_state['values'][$key];
   }
   $rule_ref['#categories'] = array_filter(array_map('trim', explode(',', $form_state['values']['categories'])));
+  // update labels
+  rules_admin_update_labels($form_state, $rule_ref);
 
   $form_state['proxy']->save_changes();
   drupal_set_message(t("The rule %label has been updated.", array('%label' => $rule_ref['#label'])));
