gettext("Must end with") + ": 'A-Z', 'a-z', '0-9'<br />",
ConfigId: function(v) {
- return (/^[a-z][a-z0-9_]+$/i).test(v);
+ return (/^[a-z][a-z0-9_-]+$/i).test(v);
},
ConfigIdText: gettext("Allowed characters") + ": 'A-Z', 'a-z', '0-9', '_'<br />" +
gettext("Minimum characters") + ": 2<br />" +
},
HttpProxyText: gettext('Example') + ": http://username:password@host:port/",
+ CpuSet: function(v) {
+ return Proxmox.Utils.CpuSet_match.test(v);
+ },
+ CpuSetText: gettext('This is not a valid CpuSet'),
+
DnsName: function(v) {
return Proxmox.Utils.DnsName_match.test(v);
},
},
DnsNameOrWildcardText: gettext('This is not a valid DNS name'),
- // workaround for https://www.sencha.com/forum/showthread.php?302150
+ // email regex used by pve-common
proxmoxMail: function(v) {
- return (/^(\w+)([-+.][\w]+)*@(\w[-\w]*\.){1,5}([A-Za-z]){2,63}$/).test(v);
+ return (/^[\w+-~]+(\.[\w+-~]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/).test(v);
},
proxmoxMailText: gettext('Example') + ": user@example.com",
override: 'Ext.form.field.Spinner',
onRender: function() {
- var me = this,
- spinnerTrigger = me.getTrigger('spinner');
+ let me = this;
me.callParent();
- // Init up/down arrow keys
- if (me.keyNavEnabled) {
- me.spinnerKeyNav = new Ext.util.KeyNav({
- target: me.inputEl,
- scope: me,
- up: me.spinUp,
- down: me.spinDown,
- });
-
- me.inputEl.on({
- keyup: me.onInputElKeyUp,
- scope: me,
- });
- }
-
// Init mouse wheel
if (me.mouseWheelEnabled) {
+ // Unlisten Ext generated listener ('mousewheel' is deprecated anyway)
+ me.mun(me.bodyEl, 'mousewheel', me.onMouseWheel, me);
+
me.mon(me.bodyEl, 'wheel', me.onMouseWheel, me);
}
-
- // in v4 spinUpEl/spinDownEl were childEls, now they are children of the trigger.
- // create references for compatibility
- me.spinUpEl = spinnerTrigger.upEl;
- me.spinDownEl = spinnerTrigger.downEl;
},
onMouseWheel: function(e) {
clearPropertiesOnDestroy: false,
});
+// Fix drag&drop for vms and desktops that detect 'pen' pointerType
+// NOTE: this part has been rewritten in ExtJS 7.4, so re-check once we can upgrade
+Ext.define('Proxmox.view.DragZone', {
+ override: 'Ext.view.DragZone',
+
+ onItemMouseDown: function(view, record, item, index, e) {
+ // Ignore touchstart.
+ // For touch events, we use longpress.
+ if (e.pointerType !== 'touch') {
+ this.onTriggerGesture(view, record, item, index, e);
+ }
+ },
+});
+
+// Fix text selection on drag when using DragZone,
+// see https://forum.sencha.com/forum/showthread.php?335100
+Ext.define('Proxmox.dd.DragDropManager', {
+ override: 'Ext.dd.DragDropManager',
+
+ stopEvent: function(e) {
+ if (this.stopPropagation) {
+ e.stopPropagation();
+ }
+
+ if (this.preventDefault) {
+ e.preventDefault();
+ }
+ },
+});
+
// force alert boxes to be rendered with an Error Icon
// since Ext.Msg is an object and not a prototype, we need to override it
// after the framework has been initiated