mirror of
				https://git.proxmox.com/git/proxmox-backup
				synced 2025-11-02 15:18:42 +00:00 
			
		
		
		
	The `document.execCommand` call is deprecated since a few years [0] so I went ahead and removed it. We only use it to copy stuff to the clipboard and the recommended way now is to use `navigator.clipboard.writeText` [1]. `writeText` is kind of new, but I think we'll be alright regarding compatibility (Compat table is also available at [1]). Making the handler functions async is okay because extjs executes the handler and does not expect any result from it, nor does it need to do some work afterwards. [0]: https://developer.mozilla.org/en-US/docs/Web/API/document/execCommand [1]: https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/writeText Signed-off-by: Gabriel Goller <g.goller@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
		
			
				
	
	
		
			135 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
Ext.define('PBS.window.DatastoreRepoInfo', {
 | 
						|
    extend: 'Ext.window.Window',
 | 
						|
    alias: 'widget.pbsDatastoreRepoInfo',
 | 
						|
    mixins: ['Proxmox.Mixin.CBind'],
 | 
						|
 | 
						|
    title: gettext('Connection Information'),
 | 
						|
 | 
						|
    modal: true,
 | 
						|
    resizable: false,
 | 
						|
    width: 600,
 | 
						|
    layout: 'anchor',
 | 
						|
    bodyPadding: 10,
 | 
						|
 | 
						|
    cbindData: function() {
 | 
						|
	let me = this;
 | 
						|
	let fingerprint = Proxmox.Fingerprint;
 | 
						|
	let host = window.location.hostname;
 | 
						|
	let hostname = host;
 | 
						|
	if (window.location.port.toString() !== "8007") {
 | 
						|
	    host += `:${window.location.port}`;
 | 
						|
	}
 | 
						|
	let datastore = me.datastore;
 | 
						|
	let user = Proxmox.UserName;
 | 
						|
	let repository = `${host}:${datastore}`;
 | 
						|
	let repositoryWithUser = `${user}@${host}:${datastore}`;
 | 
						|
 | 
						|
	return {
 | 
						|
	    datastore,
 | 
						|
	    hostname,
 | 
						|
	    fingerprint,
 | 
						|
	    repository,
 | 
						|
	    repositoryWithUser,
 | 
						|
	};
 | 
						|
    },
 | 
						|
 | 
						|
    defaults: {
 | 
						|
	xtype: 'pbsCopyField',
 | 
						|
	labelWidth: 120,
 | 
						|
    },
 | 
						|
 | 
						|
    items: [
 | 
						|
	{
 | 
						|
	    fieldLabel: gettext('Datastore'),
 | 
						|
	    cbind: {
 | 
						|
		value: '{datastore}',
 | 
						|
	    },
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    fieldLabel: gettext('Hostname/IP'),
 | 
						|
	    cbind: {
 | 
						|
		value: '{hostname}',
 | 
						|
	    },
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    fieldLabel: gettext('Fingerprint'),
 | 
						|
	    cbind: {
 | 
						|
		value: '{fingerprint}',
 | 
						|
		hidden: '{!fingerprint}',
 | 
						|
	    },
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    xtype: 'displayfield',
 | 
						|
	    value: '',
 | 
						|
	    labelWidth: 500,
 | 
						|
	    fieldLabel: gettext('Repository for CLI and API'),
 | 
						|
	    padding: '10 0 0 0',
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    fieldLabel: gettext('Repository'),
 | 
						|
	    cbind: {
 | 
						|
		value: '{repository}',
 | 
						|
	    },
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    fieldLabel: gettext('With Current User'),
 | 
						|
	    cbind: {
 | 
						|
		value: '{repositoryWithUser}',
 | 
						|
	    },
 | 
						|
	},
 | 
						|
    ],
 | 
						|
    buttons: [
 | 
						|
	{
 | 
						|
	    xtype: 'proxmoxHelpButton',
 | 
						|
	    onlineHelp: 'client_repository',
 | 
						|
	    hidden: false,
 | 
						|
	},
 | 
						|
	'->',
 | 
						|
	{
 | 
						|
	    text: gettext('Ok'),
 | 
						|
	    handler: function() {
 | 
						|
		this.up('window').close();
 | 
						|
	    },
 | 
						|
	},
 | 
						|
    ],
 | 
						|
});
 | 
						|
 | 
						|
Ext.define('PBS.form.CopyField', {
 | 
						|
    extend: 'Ext.form.FieldContainer',
 | 
						|
    alias: 'widget.pbsCopyField',
 | 
						|
 | 
						|
    layout: 'hbox',
 | 
						|
 | 
						|
    items: [
 | 
						|
	{
 | 
						|
	    xtype: 'textfield',
 | 
						|
	    itemId: 'inputField',
 | 
						|
	    editable: false,
 | 
						|
	    flex: 1,
 | 
						|
	},
 | 
						|
	{
 | 
						|
	    xtype: 'button',
 | 
						|
	    margin: '0 0 0 10',
 | 
						|
	    iconCls: 'fa fa-clipboard x-btn-icon-el-default-toolbar-small',
 | 
						|
	    baseCls: 'x-btn',
 | 
						|
	    cls: 'x-btn-default-toolbar-small proxmox-inline-button',
 | 
						|
	    handler: async function() {
 | 
						|
		let me = this;
 | 
						|
		let field = me.up('pbsCopyField');
 | 
						|
		let el = field.getComponent('inputField')?.inputEl;
 | 
						|
		if (!el?.dom) {
 | 
						|
		    return;
 | 
						|
		}
 | 
						|
		await navigator.clipboard.writeText(el.dom.value);
 | 
						|
	    },
 | 
						|
	    text: gettext('Copy'),
 | 
						|
	},
 | 
						|
    ],
 | 
						|
 | 
						|
    initComponent: function() {
 | 
						|
	let me = this;
 | 
						|
	me.callParent();
 | 
						|
	me.getComponent('inputField').setValue(me.value);
 | 
						|
    },
 | 
						|
});
 |