Javascript cleanup; new functionality; added jquery-ui

This commit is contained in:
Malishev Dmitry 2011-09-05 18:55:29 +03:00
commit 53a0268227
6 changed files with 68 additions and 43 deletions

View file

@ -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/jquery-1.4.4.min.js"></script -->
<script type="text/javascript" src="js/lib/cookie.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/date_format.js"></script>
<script type="text/javascript" src="js/lib/custom-form-elements.js"></script> <script type="text/javascript" src="js/lib/custom-form-elements.js"></script>
<script type="text/javascript" src="js/lib/browser.js"></script> <script type="text/javascript" src="js/lib/browser.js"></script>

View file

@ -40,6 +40,7 @@ App.Messages.get = function(key, plural) {
// Empty // Empty
App.Empty = {}; App.Empty = {};
App.Empty.USER = {'CONTACT':'', 'PASSWORD':'','LOGIN_NAME':'','LNAME':'', 'FNAME':'','NS1':'','NS2':'','NS3':'','NS4':'','NS5':'','NS6':'','NS7':'','NS8':''}; 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) App.Settings.getMethodName = function(action)
{ {

View file

@ -24,17 +24,6 @@ App.Actions.show_subform = function(evt)
// TODO: probably general way to embed subforms // 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) App.Actions.view_template_settings = function(evt)
{ {
alert('TODO'); 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 * Embeds new item form
* if exits custom method (App.Pages[ENVIRONMENT_NAME].newForm) * if exits custom method (App.Pages[ENVIRONMENT_NAME].newForm)
@ -213,17 +191,56 @@ App.Actions.close_popup = function()
App.View.closePopup(); 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) App.Actions.save_dns_subrecords = function(evt)
{ {
var elm = $(evt.target); var elm = $(evt.target);
var ref = elm.hasClass('subform') ? elm : elm.parents('.subform'); var ref = elm.hasClass('subform') ? elm : elm.parents('.subform');
var records = []; var data = [];
ref.find('.subrow').each(function(i, o){ $('.subform').find('.subrow').each(function(i, o)
records[records.length++] = App.Helpers.getFormValuesFromElement(o); {
data[data.length++] = App.Helpers.getFormValues(o);
}); });
fb.warn($.toJSON(records)); 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;
}
var elm = $(evt.target);
var ref = elm.hasClass('subrow') ? elm : elm.parents('.subrow');
$(ref).remove();
} }
App.Actions.generate_pass = function() App.Actions.generate_pass = function()

View file

@ -309,7 +309,7 @@ App.HTML.Build.web_domain_form = function(options, id)
tpl.set(':save_button', 'SAVE'); 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.setTplKeys(tpl, options, true);
tpl = App.HTML.Build.user_selects(tpl, options); tpl = App.HTML.Build.user_selects(tpl, options);
@ -374,10 +374,11 @@ App.HTML.Build.db_form = function(options, id)
} }
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.setTplKeys(tpl, options, true);
tpl = App.HTML.Build.db_selects(tpl, options); tpl = App.HTML.Build.db_selects(tpl, options);
tpl.set(':PASSWORD', '');
return tpl.finalize(); return tpl.finalize();
} }

View file

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

View file

@ -25,6 +25,12 @@ App.Validate.getFieldName = function(elm)
} }
App.Validate.Rule = { 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) { 'required' : function(elm) {
if ($(elm).val().trim() == '') { if ($(elm).val().trim() == '') {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is required'}; return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is required'};