mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 11:05:54 +01:00 
			
		
		
		
	fix(sorted-list): call loadItem hook on add/edit items as well as on item retrieval, refactor edit to call parse()
This commit is contained in:
		| @@ -67,7 +67,7 @@ define('settings/sorted-list', [ | ||||
|  | ||||
| 			listEl.sortable().addClass('pointer'); | ||||
| 		}, | ||||
| 		addItem: function ($formElements, $target) { | ||||
| 		addItem: async ($formElements, $target) => { | ||||
| 			const key = $target.attr('data-sorted-list'); | ||||
| 			const itemUUID = utils.generateUUID(); | ||||
| 			const form = $('<form class="" data-sorted-list-uuid="' + itemUUID + '" data-sorted-list-object="' + key + '"></form>'); | ||||
| @@ -75,7 +75,8 @@ define('settings/sorted-list', [ | ||||
|  | ||||
| 			$('#content').append(form.hide()); | ||||
|  | ||||
| 			const data = Settings.helper.serializeForm(form); | ||||
| 			let data = Settings.helper.serializeForm(form); | ||||
| 			({ item: data } = await hooks.fire('filter:settings.sorted-list.loadItem', { item: data })); | ||||
| 			parse($target, itemUUID, data); | ||||
| 		}, | ||||
| 	}; | ||||
| @@ -90,7 +91,6 @@ define('settings/sorted-list', [ | ||||
| 	function setupEditButton($container, itemUUID) { | ||||
| 		const $list = $container.find('[data-type="list"]'); | ||||
| 		const key = $container.attr('data-sorted-list'); | ||||
| 		const itemTpl = $container.attr('data-item-template'); | ||||
| 		const editBtn = $('[data-sorted-list-uuid="' + itemUUID + '"] [data-type="edit"]'); | ||||
|  | ||||
| 		editBtn.on('click', function () { | ||||
| @@ -102,7 +102,7 @@ define('settings/sorted-list', [ | ||||
| 				el.value = form.find(`select#${el.id}`).val(); | ||||
| 			}); | ||||
|  | ||||
| 			const modal = bootbox.confirm(clone, function (save) { | ||||
| 			const modal = bootbox.confirm(clone, async (save) => { | ||||
| 				if (save) { | ||||
| 					const form = $('<form class="" data-sorted-list-uuid="' + itemUUID + '" data-sorted-list-object="' + key + '"></form>'); | ||||
| 					form.append(modal.find('form').children()); | ||||
| @@ -111,25 +111,19 @@ define('settings/sorted-list', [ | ||||
| 					$('#content').append(form.hide()); | ||||
|  | ||||
|  | ||||
| 					const data = Settings.helper.serializeForm(form); | ||||
| 					let data = Settings.helper.serializeForm(form); | ||||
| 					({ item: data } = await hooks.fire('filter:settings.sorted-list.loadItem', { item: data })); | ||||
| 					stripTags(data); | ||||
|  | ||||
| 					app.parseAndTranslate(itemTpl, data, function (itemHtml) { | ||||
| 						itemHtml = $(itemHtml); | ||||
| 					const oldItem = $list.find('[data-sorted-list-uuid="' + itemUUID + '"]'); | ||||
| 						oldItem.after(itemHtml); | ||||
| 						oldItem.remove(); | ||||
| 						itemHtml.attr('data-sorted-list-uuid', itemUUID); | ||||
|  | ||||
| 						setupRemoveButton($container, itemUUID); | ||||
| 						setupEditButton($container, itemUUID); | ||||
| 					}); | ||||
| 					parse($container, itemUUID, data, oldItem); | ||||
| 				} | ||||
| 			}); | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	function parse($container, itemUUID, data) { | ||||
| 	function parse($container, itemUUID, data, replaceEl) { | ||||
| 		// replaceEl is optional | ||||
| 		const $list = $container.find('[data-type="list"]'); | ||||
| 		const itemTpl = $container.attr('data-item-template'); | ||||
|  | ||||
| @@ -138,7 +132,11 @@ define('settings/sorted-list', [ | ||||
| 		return new Promise((resolve) => { | ||||
| 			app.parseAndTranslate(itemTpl, data, function (itemHtml) { | ||||
| 				itemHtml = $(itemHtml); | ||||
| 				if (replaceEl) { | ||||
| 					replaceEl.replaceWith(itemHtml); | ||||
| 				} else { | ||||
| 					$list.append(itemHtml); | ||||
| 				} | ||||
| 				itemHtml.attr('data-sorted-list-uuid', itemUUID); | ||||
|  | ||||
| 				setupRemoveButton($container, itemUUID); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user