Procházet zdrojové kódy

Updated hints to handle native browser's paste events
Hint is update in case page is reloaded and value is set (in case of form errors)
Hints are now using secure inserting into DOM avoiding xss
Dns record hint added

very-twi@github.com před 12 roky
rodič
revize
c50c7b2675

+ 54 - 28
web/js/pages/add.db.js

@@ -1,44 +1,70 @@
+//
+//
+// Updates database username dynamically, showing its prefix
 App.Actions.DB.update_db_username_hint = function(elm, hint) {
 App.Actions.DB.update_db_username_hint = function(elm, hint) {
-	if (hint.trim() == '') {
-		$(elm).parent().find('.hint').html('');
-	} 
-	if (hint.indexOf(GLOBAL.DB_USER_PREFIX) == 0) {
-		hint = hint.slice(GLOBAL.DB_USER_PREFIX.length, hint.length);
-	}
-	$(elm).parent().find('.hint').html(GLOBAL.DB_USER_PREFIX + hint);
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    } 
+    // remove prefix from value in order to eliminate duplicates
+    if (hint.indexOf(GLOBAL.DB_USER_PREFIX) == 0) {
+        hint = hint.slice(GLOBAL.DB_USER_PREFIX.length, hint.length);
+    }
+    
+    $(elm).parent().find('.hint').text(GLOBAL.DB_USER_PREFIX + hint);
 }
 }
 
 
+//
+//
+// Updates database name dynamically, showing its prefix
 App.Actions.DB.update_db_databasename_hint = function(elm, hint) {
 App.Actions.DB.update_db_databasename_hint = function(elm, hint) {
-	if (hint.trim() == '') {
-		$(elm).parent().find('.hint').html('');
-	} 
-	if (hint.indexOf(GLOBAL.DB_DBNAME_PREFIX) == 0) {
-		hint = hint.slice(GLOBAL.DB_DBNAME_PREFIX.length, hint.length);
-	}
-	$(elm).parent().find('.hint').html(GLOBAL.DB_DBNAME_PREFIX + hint);
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    } 
+    // remove prefix from value in order to eliminate duplicates
+    if (hint.indexOf(GLOBAL.DB_DBNAME_PREFIX) == 0) {
+        hint = hint.slice(GLOBAL.DB_DBNAME_PREFIX.length, hint.length);
+    }
+    $(elm).parent().find('.hint').text(GLOBAL.DB_DBNAME_PREFIX + hint);
 }
 }
 
 
+//
+// listener that triggers database user hint updating
 App.Listeners.DB.keypress_db_username = function() {
 App.Listeners.DB.keypress_db_username = function() {
-	$('input[name="v_dbuser"]').bind('keypress', function(evt) {
-		clearTimeout(window.frp_usr_tmt);
-		window.frp_usr_tmt = setTimeout(function() {
-			var elm = $(evt.target);
-			App.Actions.DB.update_db_username_hint(elm, $(elm).val());
-		}, 100);
-	});
+    var ref = $('input[name="v_dbuser"]');
+    var current_val = ref.val();
+    if (current_val.trim() != '') {
+        App.Actions.DB.update_db_username_hint(ref, current_val);
+    }
+    
+    ref.bind('keypress input', function(evt) {
+        clearTimeout(window.frp_usr_tmt);
+        window.frp_usr_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.DB.update_db_username_hint(elm, $(elm).val());
+        }, 100);
+    });
 }
 }
 
 
+//
+// listener that triggers database name hint updating
 App.Listeners.DB.keypress_db_databasename = function() {
 App.Listeners.DB.keypress_db_databasename = function() {
-	$('input[name="v_database"]').bind('keypress', function(evt) {
-		clearTimeout(window.frp_dbn_tmt);
-		window.frp_dbn_tmt = setTimeout(function() {
-			var elm = $(evt.target);
-			App.Actions.DB.update_db_databasename_hint(elm, $(elm).val());
-		}, 100);
-	});
+    var ref = $('input[name="v_database"]');
+    var current_val = ref.val();
+    if (current_val.trim() != '') {
+        App.Actions.DB.update_db_databasename_hint(ref, current_val);
+    }
+    
+    ref.bind('keypress input', function(evt) {
+        clearTimeout(window.frp_dbn_tmt);
+        window.frp_dbn_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.DB.update_db_databasename_hint(elm, $(elm).val());
+        }, 100);
+    });
 }
 }
 
 
 //
 //
 // Page entry point
 // Page entry point
+// Trigger listeners
 App.Listeners.DB.keypress_db_username();
 App.Listeners.DB.keypress_db_username();
 App.Listeners.DB.keypress_db_databasename();
 App.Listeners.DB.keypress_db_databasename();

+ 49 - 0
web/js/pages/add.dns.record.js

@@ -0,0 +1,49 @@
+//
+//
+// Updates database dns record dynamically, showing its full domain path
+App.Actions.DB.update_dns_record_hint = function(elm, hint) {
+    // clean hint
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    }
+
+    // set domain name without rec in case of @ entries
+    if (hint == '@') {
+        hint = '';
+    }
+    
+    // dont show pregix if domain name = rec value
+    if (hint == GLOBAL.DNS_REC_PREFIX || hint + '.' == GLOBAL.DNS_REC_PREFIX) {
+        hint = '';
+    }
+    
+    // add dot at the end if needed
+    if (hint != '' && hint.slice(-1) != '.') {
+        hint += '.';
+    }
+
+    $(elm).parent().find('.hint').text(hint + GLOBAL.DNS_REC_PREFIX);
+}
+
+//
+// listener that triggers dns record name hint updating
+App.Listeners.DB.keypress_dns_rec_entry = function() {
+    var ref = $('input[name="v_rec"]');
+    var current_rec = ref.val();
+    if (current_rec.trim() != '') {
+        App.Actions.DB.update_dns_record_hint(ref, current_rec);
+    }
+    
+    ref.bind('keypress input', function(evt) {
+        clearTimeout(window.frp_usr_tmt);
+        window.frp_usr_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.DB.update_dns_record_hint(elm, $(elm).val());
+        }, 100);
+    });
+}
+
+//
+// Page entry point
+// Trigger listeners
+App.Listeners.DB.keypress_dns_rec_entry();

+ 28 - 14
web/js/pages/add.web.js

@@ -1,23 +1,37 @@
+//
+//
+// Updates ftp username dynamically, showing its prefix
 App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
 App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
-	if (hint.trim() == '') {
-		$(elm).parent().find('.hint').html('');
-	} 
-	if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) {
-		hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length);
-	}
-	$(elm).parent().find('.hint').html(GLOBAL.FTP_USER_PREFIX + hint);
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    } 
+    // remove prefix from value in order to eliminate duplicates
+    if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) {
+        hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length);
+    }
+    
+    $(elm).parent().find('.hint').text(GLOBAL.FTP_USER_PREFIX + hint);
 }
 }
 
 
+//
+// listener that triggers ftp user hint updating
 App.Listeners.WEB.keypress_ftp_username = function() {
 App.Listeners.WEB.keypress_ftp_username = function() {
-	$('input[name="v_ftp_user"]').bind('keypress', function(evt) {
-		clearTimeout(window.frp_usr_tmt);
-		window.frp_usr_tmt = setTimeout(function() {
-			var elm = $(evt.target);
-			App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
-		}, 100);
-	});
+    var ref = $('input[name="v_ftp_user"]');
+    var current_val = ref.val();
+    if (current_val.trim() != '') {
+        App.Actions.DB.update_ftp_username_hint(ref, current_val);
+    }
+    
+    ref.bind('keypress input', function(evt) {
+        clearTimeout(window.frp_usr_tmt);
+        window.frp_usr_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
+        }, 100);
+    });
 }
 }
 
 
 //
 //
 // Page entry point
 // Page entry point
+// Trigger listeners
 App.Listeners.WEB.keypress_ftp_username();
 App.Listeners.WEB.keypress_ftp_username();

+ 54 - 28
web/js/pages/edit.db.js

@@ -1,44 +1,70 @@
+//
+//
+// Updates database username dynamically, showing its prefix
 App.Actions.DB.update_db_username_hint = function(elm, hint) {
 App.Actions.DB.update_db_username_hint = function(elm, hint) {
-	if (hint.trim() == '') {
-		$(elm).parent().find('.hint').html('');
-	} 
-	if (hint.indexOf(GLOBAL.DB_USER_PREFIX) == 0) {
-		hint = hint.slice(GLOBAL.DB_USER_PREFIX.length, hint.length);
-	}
-	$(elm).parent().find('.hint').html(GLOBAL.DB_USER_PREFIX + hint);
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    } 
+    // remove prefix from value in order to eliminate duplicates
+    if (hint.indexOf(GLOBAL.DB_USER_PREFIX) == 0) {
+        hint = hint.slice(GLOBAL.DB_USER_PREFIX.length, hint.length);
+    }
+    
+    $(elm).parent().find('.hint').text(GLOBAL.DB_USER_PREFIX + hint);
 }
 }
 
 
+//
+//
+// Updates database name dynamically, showing its prefix
 App.Actions.DB.update_db_databasename_hint = function(elm, hint) {
 App.Actions.DB.update_db_databasename_hint = function(elm, hint) {
-	if (hint.trim() == '') {
-		$(elm).parent().find('.hint').html('');
-	} 
-	if (hint.indexOf(GLOBAL.DB_DBNAME_PREFIX) == 0) {
-		hint = hint.slice(GLOBAL.DB_DBNAME_PREFIX.length, hint.length);
-	}
-	$(elm).parent().find('.hint').html(GLOBAL.DB_DBNAME_PREFIX + hint);
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    } 
+    // remove prefix from value in order to eliminate duplicates
+    if (hint.indexOf(GLOBAL.DB_DBNAME_PREFIX) == 0) {
+        hint = hint.slice(GLOBAL.DB_DBNAME_PREFIX.length, hint.length);
+    }
+    $(elm).parent().find('.hint').text(GLOBAL.DB_DBNAME_PREFIX + hint);
 }
 }
 
 
+//
+// listener that triggers database user hint updating
 App.Listeners.DB.keypress_db_username = function() {
 App.Listeners.DB.keypress_db_username = function() {
-	$('input[name="v_dbuser"]').bind('keypress', function(evt) {
-		clearTimeout(window.frp_usr_tmt);
-		window.frp_usr_tmt = setTimeout(function() {
-			var elm = $(evt.target);
-			App.Actions.DB.update_db_username_hint(elm, $(elm).val());
-		}, 100);
-	});
+    var ref = $('input[name="v_dbuser"]');
+    var current_val = ref.val();
+    if (current_val.trim() != '') {
+        App.Actions.DB.update_db_username_hint(ref, current_val);
+    }
+    
+    ref.bind('keypress input', function(evt) {
+        clearTimeout(window.frp_usr_tmt);
+        window.frp_usr_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.DB.update_db_username_hint(elm, $(elm).val());
+        }, 100);
+    });
 }
 }
 
 
+//
+// listener that triggers database name hint updating
 App.Listeners.DB.keypress_db_databasename = function() {
 App.Listeners.DB.keypress_db_databasename = function() {
-	$('input[name="v_database"]').bind('keypress', function(evt) {
-		clearTimeout(window.frp_dbn_tmt);
-		window.frp_dbn_tmt = setTimeout(function() {
-			var elm = $(evt.target);
-			App.Actions.DB.update_db_databasename_hint(elm, $(elm).val());
-		}, 100);
-	});
+    var ref = $('input[name="v_database"]');
+    var current_val = ref.val();
+    if (current_val.trim() != '') {
+        App.Actions.DB.update_db_databasename_hint(ref, current_val);
+    }
+    
+    ref.bind('keypress input', function(evt) {
+        clearTimeout(window.frp_dbn_tmt);
+        window.frp_dbn_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.DB.update_db_databasename_hint(elm, $(elm).val());
+        }, 100);
+    });
 }
 }
 
 
 //
 //
 // Page entry point
 // Page entry point
+// Trigger listeners
 App.Listeners.DB.keypress_db_username();
 App.Listeners.DB.keypress_db_username();
 App.Listeners.DB.keypress_db_databasename();
 App.Listeners.DB.keypress_db_databasename();

+ 20 - 14
web/js/pages/edit.web.js

@@ -1,21 +1,27 @@
 App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
 App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
-	if (hint.trim() == '') {
-		$(elm).parent().find('.hint').html('');
-	} 
-	if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) {
-		hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length);
-	}
-	$(elm).parent().find('.hint').html(GLOBAL.FTP_USER_PREFIX + hint);
+    if (hint.trim() == '') {
+        $(elm).parent().find('.hint').html('');
+    } 
+    if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) {
+        hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length);
+    }
+    $(elm).parent().find('.hint').text(GLOBAL.FTP_USER_PREFIX + hint);
 }
 }
 
 
 App.Listeners.WEB.keypress_ftp_username = function() {
 App.Listeners.WEB.keypress_ftp_username = function() {
-	$('input[name="v_ftp_user"]').bind('keypress', function(evt) {
-		clearTimeout(window.frp_usr_tmt);
-		window.frp_usr_tmt = setTimeout(function() {
-			var elm = $(evt.target);
-			App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
-		}, 100);
-	});
+    var ref = $('input[name="v_ftp_user"]');
+    var current_val = ref.val();
+    if (current_val.trim() != '') {
+        App.Actions.DB.update_ftp_username_hint(ref, current_val);
+    }
+    
+    ref.bind('keypress', function(evt) {
+        clearTimeout(window.frp_usr_tmt);
+        window.frp_usr_tmt = setTimeout(function() {
+            var elm = $(evt.target);
+            App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
+        }, 100);
+    });
 }
 }
 
 
 //
 //

+ 6 - 0
web/templates/admin/add_dns_rec.html

@@ -56,6 +56,7 @@
                             <tr>
                             <tr>
                                 <td>
                                 <td>
                                     <input type="text" size="20" class="vst-input" name="v_rec" <?php if (!empty($v_rec)) echo "value=".$v_rec; ?>>
                                     <input type="text" size="20" class="vst-input" name="v_rec" <?php if (!empty($v_rec)) echo "value=".$v_rec; ?>>
+                                    <small class="hint"></small>
                                 </td>
                                 </td>
                             </tr>
                             </tr>
                             <tr>
                             <tr>
@@ -116,3 +117,8 @@
                 </tr>
                 </tr>
             </table>
             </table>
         </form>
         </form>
+
+        <script type="text/javascript">
+            GLOBAL.DNS_REC_PREFIX = '<?php echo $_GET['domain']; ?>';
+        </script>
+        <script type="text/javascript" src="/js/pages/add.dns.record.js"></script>