Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/loadbalancing/slb/ssl/real.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/loadbalancing/slb/ssl/real.py	(revision 39286)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/loadbalancing/slb/ssl/real.py	(working copy)
@@ -406,9 +406,9 @@
                              condition=ValueCondition('vs_as_com_name', [True]), length='0..64',check_chinese=False),
             CharField(name='email', verbose_name="Administrator Email", optional=True, default="", length='0..80'),
             BooleanField(name='add_subject_alternative_names', verbose_name=_("Add Subject Alternative Names"), lexical=('True', 'False'), 
-                                       default=True, optional=True, condition = ExceptionValueCondition('key_length',['sm2'])),
+                                       default=True, optional=True),
             CharField(name='sub_alt_name', verbose_name="Subject Alternative Names", check_chinese=False,
-                             condition=AndCondition(ValueCondition('add_subject_alternative_names', [True]), ExceptionValueCondition('key_length',['sm2'])), help_text="Please use ';' to separate the subject alternative name"),
+                             condition=ValueCondition('add_subject_alternative_names', [True]), help_text="Please use ';' to separate the subject alternative name"),
             BooleanField(name='key_exp', verbose_name=_("Private Key Exportable"), lexical=('True', 'False'), 
                                 default=False, optional=True,),
             PasswordField(name='pri_key', verbose_name="Private Key", condition=ValueCondition('key_exp', [True])),
Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/templates/loadbalancing/slb/ssl/SSLRealHost/box_action.html
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/templates/loadbalancing/slb/ssl/SSLRealHost/box_action.html	(revision 0)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/templates/loadbalancing/slb/ssl/SSLRealHost/box_action.html	(working copy)
@@ -0,0 +1,145 @@
+{# Required Context Variables: MODEL, MANAGER, OBJECT, PARAMS['action']; Optional Variables: PARAMS['post_data'] #}
+{% extends "box.html" %}
+{% set action = MODEL._meta.get_action_by_name(PARAMS['action']) %}
+{% block box_content %}
+{% import "widgets/form.html" as form %}
+
+{% set post_data = PARAMS['post_data'] | url2obj %}
+{% set base_pk_list = post_data['__pk_list'] %}
+
+
+    <div class="box-header my-header">
+        <div class="box-icon-title">
+            <i class="fa fa-wrench"></i>
+        </div>
+        <h2>
+            {{ action.verbose_name }}
+        </h2>
+    </div>
+    <div class="box-content">
+    <form class="form-horizontal main-form">
+            <script type="text/javascript">
+            var js_hook_{{ id|jsvar }}_{{ action.name }} = {
+                id: "{{ id|jsvar }}_{{ action.name }}",
+                form_fields: {},
+                ready_total: 0,
+                ready_count: 0
+            };
+            </script>
+            <div class="row-fluid">
+                <div class="span12 with-min-width field-group-box">
+                    {% if action.verbose_name %}
+                    <a id="{{ action.verbose_name }}"></a>
+                    <legend>{{ action.verbose_name }}</legend>
+                    {% endif %}
+                    <fieldset>
+                    {% for field in action.option_fields if not (SESSION.is_segment_user and field.seg_hidden)%}
+                        {{ field.default_widget(editable=field.editable, model_instance=None, manager=MANAGER, base_pk_list=base_pk_list).render(form, 'js_hook_'+id|jsvar+'_'+action.name, {'form':form, 'csrf_token':csrf_token, 'base_pk_list':base_pk_list}) }}
+                    {% endfor %}
+                    <div class="form-group action-actions">
+                        <label class="col-md-3"></label>
+                        <div class="col-md-9">
+                        <button type="button" class="btn action-btn action-btn-{{ action.name }} {{ action.btn_class }}">{{ action.action_name }}</button>
+                        </div>
+                    </div>
+                    </fieldset>
+                </div>
+            </div><!-- row-fluid -->
+    </form>
+    </div><!-- box-content -->
+{% endblock box_content %}
+
+{% block box_script %}
+{% if 0 %}
+<script type="text/javascript">
+// Just make editor happy to highlight the scripts
+{% endif %}
+
+require(['widget-form', 'hive'], function(form){
+    var hook = js_hook_{{ id|jsvar }}_{{ action.name }};
+    var action = {{ action.get_options() }};
+    var field_condition_dict = {{ action.option_fields_condition()|json_dumps }};
+    box.form_fields = hook.form_fields;
+
+    $HIVE.check_form_condition(box, {}, {}, field_condition_dict);
+
+    $.each(box.form_fields, function(key,value){
+        box.listenTo(value, "form:changed", function(){
+            $HIVE.check_form_condition(box, {}, {}, field_condition_dict);
+        });
+    });
+    var key_length = $('.select_key_length .selectpicker');
+    CheckDisableForAddAltNameField();
+    key_length.change(function(){
+        CheckDisableForAddAltNameField();
+    });
+    function CheckDisableForAddAltNameField()
+    {
+        if (key_length.val() == 'sm2') {
+            // Always show alt name field and set add subject alt name be true
+            $('.textinput_sub_alt_name').show();
+            $('.switch_add_subject_alternative_names').hide();
+            $(".switch_add_subject_alternative_names input[type='checkbox']").bootstrapSwitch('setState', true);
+        } else {
+            $('.switch_add_subject_alternative_names').show();
+        }
+    }
+    box.$el.find('.action-btn-{{ action.name }}').click(function(){
+        {%if not SESSION.allow_config %}
+            $HIVE.alert('error','Config Mode Entrance Denied', 'You are enable user, not allowed to change the configuration of APV');
+            return false;
+        {% endif%}
+        var err = false;
+        var err_msg = '';
+        var post_data = {'csrf_token': '{{ csrf_token }}'};
+        {% if PARAMS['post_data'] %}
+        post_data["options"] = {{ PARAMS['post_data'] }};
+        {% else %}
+        post_data["options"] = {}
+        {% endif %}
+        $.each(hook.form_fields, function(key,value){
+            if (!value.is_hidden()) {
+                if (value['validate'] != undefined) {
+                    validate_result = value['validate']();
+                    if (!validate_result[0]) {
+                        err = true;
+                        err_msg += '<b>' + value['validate_label']() + '</b> -- ' + validate_result[1] + '<br />';
+                    }
+                }
+                if (value['validate_on_blur'] != undefined) {
+                    validate_result = value['validate_on_blur']();
+                    if (!validate_result[0]) {
+                        err = true;
+                        err_msg += '<b>' + value['validate_label']() + '</b> -- ' + validate_result[1] + '<br />';
+                    }
+                }
+                post_data["options"][value['name']] = value.get_value();
+            }
+        });
+        if (err) {
+            $HIVE.alert('warning',gettext('Please correct these errors'),err_msg,false);
+            return false;
+        }
+        var fun_cb = function(response){
+            box.trigger("box:finish", {"response":response});
+        };
+        if (action.confirm_msg) {
+            if ($HIVE.confirm(action.confirm_msg)) {
+                if (action.alert_msg) {
+                    window.alert(action.alert_msg);
+                }
+                perform_action(action, post_data, fun_cb);
+            }
+        } else {
+            if (action.alert_msg) {
+                window.alert(action.alert_msg);
+            }
+            perform_action(action, post_data, fun_cb);
+        }
+    });
+
+});
+{% if 0 %}
+</script>
+{% endif %}
+{% endblock %}
