]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - Toolkit.js
minimal coding style and grammar fixup
[proxmox-widget-toolkit.git] / Toolkit.js
index 7e62e05a6e34e83e46a6638f740ff76f215b0295..ddc0e42cf04b8280925d056f4288f0bcc3acf283 100644 (file)
@@ -108,6 +108,16 @@ Ext.apply(Ext.form.field.VTypes, {
     },
     proxmoxMailText: gettext('Example') + ": user@example.com",
 
+    DnsOrIp: function(v) {
+       if (!Proxmox.Utils.DnsName_match.test(v) &&
+           !Proxmox.Utils.IP64_match.test(v)) {
+           return false;
+       }
+
+       return true;
+    },
+    DnsOrIpText: gettext('Not a valid DNS name or IP address.'),
+
     HostList: function(v) {
        var list = v.split(/[\ \,\;]+/);
        var i;
@@ -139,6 +149,49 @@ Ext.apply(Ext.form.field.VTypes, {
     passwordText: gettext('Passwords do not match')
 });
 
+// Firefox 52+ Touchscreen bug
+// see https://www.sencha.com/forum/showthread.php?336762-Examples-don-t-work-in-Firefox-52-touchscreen/page2
+// and https://bugzilla.proxmox.com/show_bug.cgi?id=1223
+Ext.define('EXTJS_23846.Element', {
+    override: 'Ext.dom.Element'
+}, function(Element) {
+    var supports = Ext.supports,
+        proto = Element.prototype,
+        eventMap = proto.eventMap,
+        additiveEvents = proto.additiveEvents;
+
+    if (Ext.os.is.Desktop && supports.TouchEvents && !supports.PointerEvents) {
+        eventMap.touchstart = 'mousedown';
+        eventMap.touchmove = 'mousemove';
+        eventMap.touchend = 'mouseup';
+        eventMap.touchcancel = 'mouseup';
+
+        additiveEvents.mousedown = 'mousedown';
+        additiveEvents.mousemove = 'mousemove';
+        additiveEvents.mouseup = 'mouseup';
+        additiveEvents.touchstart = 'touchstart';
+        additiveEvents.touchmove = 'touchmove';
+        additiveEvents.touchend = 'touchend';
+        additiveEvents.touchcancel = 'touchcancel';
+
+        additiveEvents.pointerdown = 'mousedown';
+        additiveEvents.pointermove = 'mousemove';
+        additiveEvents.pointerup = 'mouseup';
+        additiveEvents.pointercancel = 'mouseup';
+    }
+});
+
+Ext.define('EXTJS_23846.Gesture', {
+    override: 'Ext.event.publisher.Gesture'
+}, function(Gesture) {
+    var me = Gesture.instance;
+
+    if (Ext.supports.TouchEvents && !Ext.isWebKit && Ext.os.is.Desktop) {
+        me.handledDomEvents.push('mousedown', 'mousemove', 'mouseup');
+        me.registerEvents();
+    }
+});
+
 // we always want the number in x.y format and never in, e.g., x,y
 Ext.define('PVE.form.field.Number', {
     override: 'Ext.form.field.Number',