Issue #1418💬 RespondidoAbierto el 11 de septiembre de 2018por ageirReacciones 0

El administrador de activos no elimina archivos en el servidor a menos que se active la subida.

Respuesta rápidapor artf

Hola Göranpero reapareciendo al recargar la página Inicializas el gestor de activos con 'Assets: allfiles', así que si no cambias 'allfiles', siempre obtienes el mismo conjunto de imágenesAdemás, al arrastrar una imagen al lienzo, la imagen no aparece. Solo el ico de "archivo perdido" y el nombre de la imagen. Para es...

Lee la respuesta completa abajo ↓

Pregunta

Ejecutando la última versión (0.14.29) en el servidor local. Usando el preajuste de página web de ejemplo. Ubuntu 18.04, Chromium 68.

Assetmanager en la iniciativa:

		assetManager: {
			Tipo de almacenamiento: '',
			storeOnChange: cierto,
			storeAfterUpload: cierto,
			embedAsBase64: 1,
			Activos: all_files,
			noAssets: '¡No hay recursos aquí, arrastra para subir!',
			uploadFile: función (e) {
				var files = e.dataTransfer ? e.dataTransfer.files: e.target.files;
				var formData = new FormData();
				for (var i in files) {
					formData.append('file-' + i, files[i]); 
					console.log('Archivo (i): ' + i + ' Archivos: ' + archivos);
				}
				$.ajax({
					URL: '/file_upload',
					tipo: 'POST',
					data: formData,
					contentType: false,
					crossDomain: cierto,
					dataType: 'json',
					mimeType: "multipart/form-data",
					procesData: false,
					éxito: función (resultado) {
						var images = result['data'];
						editor. AssetManager.add (imágenes);
						console.log(imágenes);
					}
				});
			},

cabeceras: {},
			params: {},
			autoAdd: 1,
			uploadText: 'Deja archivos aquí o haz clic para subir.',
			addBtnText: 'Añadir imagen',
			Zona de caída: 0,
			openAssetsOnDrop: 0,
			dropzoneContent: '<div class="dropzone-inner">Drop media aquí.</div>'
			modalTítulo: 'Seleccionar imagen',
		},

Y extender el tipo de imagen:

	const am = editor. Gestor de Activos;
	editor. AssetManager.add(all_files);
	Gestor de activos
	Extiende la 'imagen' original y añade un cuadro de confirmación antes de eliminarla
	console.log('Añadir funciones de imagen personalizadas');
	am.addType('image', {
		Al añadir sobre un tipo ya definido, puedes evitar indicar
		'am.getType('image').view.extend({...' el editor lo hará por defecto
		pero eventualmente puedes ampliar otro tipo
		Vista: {
			Si quieres ver más formas de extender, échale un vistazo
			https://github.com/artf/grapesjs/blob/dev/src/asset_manager/view/AssetImageView.js
			onRemove(e) {
				e.stopPropagation();
				modelo const = este.modelo;
				console.log(modelo);
				console.log('ID:')
				console.log(modelo['atributos']['id'])
				if (confirm('¿Estás seguro?')) {

$.post('/file_delete/', {
						id: modelo['atributos']['id'],
					}, función (resultado) {
						si (resultado['éxito']) {
							console.log('Archivo eliminado en el servidor: ' + model['atributos']['id']);
							model.collection.remove(model);
						} else {
							model.collection.remove(model);
							console.log('No se ha podido eliminar el archivo del servidor.');
						}
					}, 'json');
				}
			}
		},
	});

La all_files variable es cargar desde php, y tiene los datos y formato correctos, todas las imágenes almacenadas en el servidor.

El problema es que el onRemove no se activa como debería. Las imágenes aparecen correctamente en el modal de assetmanager, pero al pulsar la X la función no se activa. Pero se eliminan en modal, pero reaparecen al recargar la página. Pero si subo un archivo, entonces funciona. Aparece la ventana emergente de confirmación y el archivo se elimina correctamente en el servidor. ¿Alguna idea de por qué está pasando esto? ¿Me he perdido algo o es un error?

Además, al arrastrar una imagen al lienzo, la imagen no aparece. Solo el ico de "archivo perdido" y el nombre de la imagen.

¡Cualquier ayuda será bienvenida!

Respuestas (3)

artf15 de septiembre de 2018

Hola Göran

pero reapareciendo al recargar la página

Inicializas el gestor de activos con 'Assets: all_files', así que si no cambias 'all_files', siempre obtienes el mismo conjunto de imágenes

Además, al arrastrar una imagen al lienzo, la imagen no aparece. Solo el ico de "archivo perdido" y el nombre de la imagen.

Para esto, me gustaría pedir que creen otro número y quizá también con la demo

ageir17 de septiembre de 2018

@artf No creo que me hayas entendido. Están reapareciendo porque no se eliminaron del servidor. all_files se generan mediante recarga de página en php y muestran los archivos correctos en el servidor.

El problema es que onRemove no se activa en absoluto hasta que subo un archivo, entonces se activa. ¿Por qué?

artf17 de septiembre de 2018

Ah, vale, probablemente porque tus assets ya están renderizados. Intenta aplicar esos cambios pero dentro de un plugin

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.

Explora plugins gratuitos →
Opción premium

Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.

Explora plugins premium →

Tutoriales relacionados

Guías detalladas sobre el mismo tema.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.