Browse Source

Javascript cleanup; new functionality; added jquery-ui

Malishev Dmitry 14 years ago
parent
commit
53a0268227
6 changed files with 68 additions and 43 deletions
  1. 2 1
      web/index.html
  2. 1 0
      web/js/_settings.js
  3. 43 26
      web/js/actions.js
  4. 5 4
      web/js/html.js
  5. 11 12
      web/js/templates.js
  6. 6 0
      web/js/validators.js

+ 2 - 1
web/index.html

@@ -205,7 +205,8 @@
 
         <!-- script type="text/javascript" src="js/lib/jquery-1.4.4.min.js"></script -->
         <script type="text/javascript" src="js/lib/cookie.js"></script>
-        <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.js"></script>
+        <script type="text/javascript" src="js/lib/jquery-1.6.1.js"></script>
+        <script type="text/javascript" src="js/lib/jquery-ui-1.8.13.custom.min.js"></script>
         <script type="text/javascript" src="js/date_format.js"></script>
         <script type="text/javascript" src="js/lib/custom-form-elements.js"></script>
         <script type="text/javascript" src="js/lib/browser.js"></script>

+ 1 - 0
web/js/_settings.js

@@ -40,6 +40,7 @@ App.Messages.get = function(key, plural) {
 // Empty
 App.Empty = {};
 App.Empty.USER = {'CONTACT':'', 'PASSWORD':'','LOGIN_NAME':'','LNAME':'', 'FNAME':'','NS1':'','NS2':'','NS3':'','NS4':'','NS5':'','NS6':'','NS7':'','NS8':''};
+App.Empty.WEB_DOMAIN = {'CONTACT':'', 'PASSWORD':'','LOGIN_NAME':'','NS':'', 'DOMAIN':'','SSL_CERT':'','SSL_HOME':'','STATS_PASSWORD':'','STATS_LOGIN':'','ALIAS':''};
 
 App.Settings.getMethodName = function(action)
 {

+ 43 - 26
web/js/actions.js

@@ -24,17 +24,6 @@ App.Actions.show_subform = function(evt)
     // TODO: probably general way to embed subforms
 }
 
-App.Actions.close_subform = function(evt) 
-{
-    var elm = $(evt.target);
-    var ref = elm.hasClass('subform') ? elm : elm.parents('.subform');
-    var parent_ref = ref.prev('.row');
-    if (parent_ref.length > 0) {
-        parent_ref.find('.show-records').removeClass('hidden');
-    }
-    ref.remove();
-}
-
 App.Actions.view_template_settings = function(evt) 
 {
     alert('TODO');
@@ -51,17 +40,6 @@ App.Actions.add_subrecord_dns = function(evt)
     }
 }
 
-App.Actions.delete_subentry = function(evt)
-{
-    var sure = confirm(App.i18n.getMessage('confirm'));
-    if (!sure) {
-        return;
-    }
-    var elm = $(evt.target);
-    var ref = elm.hasClass('subrow') ? elm : elm.parents('.subrow');
-    ref.effect('puff', {}, 300, function(){ref.remove();})    
-}
-
 /**
  * Embeds new item form
  * if exits custom method (App.Pages[ENVIRONMENT_NAME].newForm) 
@@ -213,17 +191,56 @@ App.Actions.close_popup = function()
     App.View.closePopup();
 }
 
+
+App.Actions.close_subform = function(evt, elm) 
+{
+    var elm = elm || $(evt.target);
+    var ref = elm.hasClass('subform') ? elm : elm.parents('.subform');
+    var parent_ref = ref.prev('.row');
+    if (parent_ref.length > 0) {
+        parent_ref.find('.show-records').removeClass('hidden');
+    }
+    ref.remove();
+}
+
 App.Actions.save_dns_subrecords = function(evt)
 {
     var elm = $(evt.target);
     var ref = elm.hasClass('subform') ? elm : elm.parents('.subform');
     
-    var records = [];
-    ref.find('.subrow').each(function(i, o){
-        records[records.length++] = App.Helpers.getFormValuesFromElement(o);
+    var data = [];
+    $('.subform').find('.subrow').each(function(i, o)
+    {
+        data[data.length++] = App.Helpers.getFormValues(o);
+    });
+    
+    var parent_row = $(elm).parents('.subform').prev('.dns-details-row');
+    var dns_json = $(parent_row).find('.source').val();
+    
+    App.Ajax.request('DNS.changeRecords', {spell: App.Helpers.toJSON(data), dns: dns_json}, function(reply)
+    {
+        if (reply.result) {
+            var emphasize = $('.show-records', parent_row);
+            App.Actions.close_subform(null, elm);
+            $(emphasize).effect("highlight", {'color':'#B0D635'}, 3000);
+            
+        }
+        else {
+            App.Helpers.alert('Changes were not applied');
+        }
     });
+}
+
+App.Actions.delete_subentry = function(evt)
+{
+    var sure = confirm(App.i18n.getMessage('confirm'));
+    if (!sure) {
+        return;
+    }
     
-    fb.warn($.toJSON(records));
+    var elm = $(evt.target);
+    var ref = elm.hasClass('subrow') ? elm : elm.parents('.subrow');
+    $(ref).remove();    
 }
 
 App.Actions.generate_pass = function()

+ 5 - 4
web/js/html.js

@@ -83,7 +83,7 @@ App.HTML.Build.dns_form = function(options, id)
     }
 
     tpl.set(':id', id || ''); 
-    tpl.set(':DNS_DOMAIN', options.DNS_DOMAIN || '');
+    tpl.set(':DNS_DOMAIN', options.DNS_DOMAIN || '');    
     tpl.set(':IP', options.IP || '');
     tpl.set(':TTL', options.TTL || '');
     tpl.set(':SOA', options.SOA || '');
@@ -309,7 +309,7 @@ App.HTML.Build.web_domain_form = function(options, id)
         tpl.set(':save_button', 'SAVE'); 
     }
     
-    options = !App.Helpers.isEmpty(options) ? options : {'CONTACT':'', 'PASSWORD':'','LOGIN_NAME':'','NS':''};
+    options = !App.Helpers.isEmpty(options) ? options : App.Empty.WEB_DOMAIN;
     
     tpl = App.HTML.setTplKeys(tpl, options, true);        
     tpl = App.HTML.Build.user_selects(tpl, options);
@@ -373,11 +373,12 @@ App.HTML.Build.db_form = function(options, id)
         tpl.set(':save_button', 'SAVE'); 
     }
     
-    options = !App.Helpers.isEmpty(options) ? options : {'DB':'', 'USER':'','FORM':'', 'PASSWORD': ''};
-    
+    options = !App.Helpers.isEmpty(options) ? options : {'DB':'', 'USER':'','FORM':'', 'PASSWORD': ''};    
     tpl = App.HTML.setTplKeys(tpl, options, true);        
     tpl = App.HTML.Build.db_selects(tpl, options);   
     
+    tpl.set(':PASSWORD', '');
+    
     return tpl.finalize();
 }
 

+ 11 - 12
web/js/templates.js

@@ -75,7 +75,7 @@ App.Templates.html = {
                     </div>\
                     <div class="form-row cc">\
                             <label for="#" class="field-label">soa:</label>\
-                            <input type="text" value="~!:SOA~!" name="SOA" class="text-field rule-required rule-numeric">\
+                            <input type="text" value="~!:SOA~!" name="SOA" class="text-field rule-required rule-ns">\
                     </div>\
                     <div class="form-row buttons-row cc">\
                             <input type="submit" value="~!:save_button~!" class="add-entry-btn do_action_save_form" name="save">\
@@ -139,7 +139,7 @@ App.Templates.html = {
                     <div class="form-row buttons-row cc">\
                             <input type="submit" value="save" class="add-entry-btn do_action_save_dns_subrecords">\
                             <span class="cancel-btn do_action_close_subform">Cancel</span>\
-                            <span class="help-btn">Help</span>\
+                            <!-- span class="help-btn">Help</span -->\
                     </div>\
             </div>'],
         SUBENTRY: ['<div class="subrow form-row form-row-line cc">\
@@ -160,7 +160,7 @@ App.Templates.html = {
                             </div>\
                             <div class="field-box dns-value-box">\
                                     <label for="#" class="field-label">value:</label>\
-                                    <input type="text" value="~!:RECORD_VALUE~!" class="text-field RECORD_VALUE">\
+                                    <input type="text" value="~!:RECORD_VALUE~!" name="RECORD_VALUE" class="text-field">\
                             </div>\
                             <div class="delete-record do_action_delete_subentry"></div>\
                     </div>']
@@ -497,11 +497,11 @@ App.Templates.html = {
                         <input type="hidden" class="source" name="source" value=\'~!:source~!\' />\
                         <input type="hidden" class="target" name="target" value="" />\
 						<div class="entry-header">~!:title~!</div>\
-						<div class="form-error">\
+						<div class="form-error hidden">\
 						</div>\
                         <div class="form-row cc">\
 							<label for="#" class="field-label">domain:</label>\
-							<input type="text" name="DOMAIN" class="text-field" value="~!:DOMAIN~!">\
+							<input type="text" name="DOMAIN" class="text-field rule-required rule-ns" value="~!:DOMAIN~!">\
 						</div>\
 						<div class="form-row cc">\
 							<label for="#" class="field-label">ip:</label>\
@@ -529,7 +529,6 @@ App.Templates.html = {
 								<label for="#" class="field-label">alias list:</label>\
 								<textarea name="ALIAS" class="textarea">~!:ALIAS~!</textarea>\
 							</div>\
-\
 							<div class="form-row cc">\
 								<label for="#" class="field-label">statistics:</label>\
 								<input type="checkbox" name="STATS" ~!:stats_checked~!="" value="~!:STATS~!" class="styled">\
@@ -541,11 +540,11 @@ App.Templates.html = {
 								</div>\
 								<div class="form-row cc">\
 									<label for="#" class="field-label">login:</label>\
-									<input type="text" class="text-field" name="STATS_LOGIN" value="~!:STATS_LOGIN~!">\
+									<input type="text" class="text-field rule-username" name="STATS_LOGIN" value="~!:STATS_LOGIN~!">\
 								</div>\
 								<div class="form-row pwd-box cc">\
 									<label for="#" class="field-label">password:</label>\
-									<input type="text" value="~!:STATS_PASSWORD~!" name="STATS_PASSWORD" class="text-field password">\
+									<input type="text" value="~!:STATS_PASSWORD~!" name="STATS_PASSWORD" class="text-field rule-password">\
 									<span class="generate-pwd do_action_generate_pass">Generate</span>\
 								</div>\
 							</div><!-- // stats settings -->\
@@ -591,7 +590,7 @@ App.Templates.html = {
                         </div>\
                         </div><!-- Mail options -->\
 						<div class="form-row buttons-row cc">\
-							<input type="submit" value="~!:save_button~!" class="add-entry-btn">\
+							<input type="submit" value="~!:save_button~!" class="add-entry-btn do_action_save_form">\
 							<span class="cancel-btn do_action_cancel_form">Cancel</span>\
 							<a target="_blank" href="http://vestacp.com/docs/web/" class="help-btn">Help</a>\
 						</div>\
@@ -725,7 +724,7 @@ App.Templates.html = {
 								<span class="generate-pwd do_action_generate_pass">Generate</span>\
 							</div>\
 						</div>\
-						<div class="form-row cc">\
+						<div class="form-row hidden cc">\
 							<label for="#" class="field-label">db host:</label>\
 							<select name="HOST">~!:HOST_OPTIONS~!</select>\
 						</div>\
@@ -741,7 +740,7 @@ App.Templates.html = {
                         <div class="row-actions-box cc">\
 							<div class="check-this check-control"></div>\
 							<div class="row-operations">\
-								<span class="delete-entry"><span class="delete-entry-text">delete</span></span>\
+								<span class="delete-entry do_action_delete_entry"><span class="delete-entry-text do_action_delete_entry">delete</span></span>\
 							</div>\
 						</div>\
 						<div class="row-meta">\
@@ -758,7 +757,7 @@ App.Templates.html = {
 									<span class="db-name do_action_edit">~!:DB~!</span>\
 								</div>\
 							</div>\
-							<div class="props-additional">\
+							<div class="props-additional hidden">\
 								<div class="db-user-box cc">\
 									<span class="db-user-wrap backup-db do_action_open_inner_popup">\
 										Users: ~!:USERS~!\

+ 6 - 0
web/js/validators.js

@@ -25,6 +25,12 @@ App.Validate.getFieldName = function(elm)
 }
 
 App.Validate.Rule = {
+    'username' : function(elm) {   
+        if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z_]+/) != -1) {
+            return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is required'};
+        }
+        return {VALID: true};
+    },
     'required' : function(elm) {
         if ($(elm).val().trim() == '') {
             return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is required'};