function getDefinedMeaningEditor( ViewInformation $viewInformation ) {
	global
		$wdDefinedMeaningAttributesOrder,  $definedMeaningMeaningName,
		$relationMeaningName;
		
	$o = OmegaWikiAttributes::getInstance();
	
	$definitionEditor = getDefinitionEditor( $viewInformation );
	$alternativeDefinitionsEditor = getAlternativeDefinitionsEditor( $viewInformation );
	$classAttributesEditor = getClassAttributesEditor( $viewInformation );
	$synonymsAndTranslationsEditor = getSynonymsAndTranslationsEditor( $viewInformation );
	$reciprocalRelationsEditor = getDefinedMeaningReciprocalRelationsEditor( $viewInformation );
	$classMembershipEditor = getDefinedMeaningClassMembershipEditor( $viewInformation );
	$collectionMembershipEditor = getDefinedMeaningCollectionMembershipEditor( $viewInformation );
	
	$availableEditors = new AttributeEditorMap();
	$availableEditors->addEditor( $definitionEditor );
	$availableEditors->addEditor( $alternativeDefinitionsEditor );
	$availableEditors->addEditor( $classAttributesEditor );
	$availableEditors->addEditor( $synonymsAndTranslationsEditor );
	$availableEditors->addEditor( $reciprocalRelationsEditor );
	$availableEditors->addEditor( $classMembershipEditor );
	$availableEditors->addEditor( $collectionMembershipEditor );

	foreach ( createPropertyToColumnFilterEditors( $viewInformation, $o->definedMeaningId, $definedMeaningMeaningName ) as $propertyToColumnEditor )
		$availableEditors->addEditor( $propertyToColumnEditor );
	
	$availableEditors->addEditor( createObjectAttributesEditor( $viewInformation, $o->definedMeaningAttributes, wfMsgSc( "Property" ), wfMsgSc( "Value" ), $o->definedMeaningId, $definedMeaningMeaningName, $viewInformation->getLeftOverAttributeFilter() ) );

	$definedMeaningEditor = new RecordUnorderedListEditor( $o->definedMeaning, 4 );
	
	foreach ( $wdDefinedMeaningAttributesOrder as $attributeId ) {
		$editor = $availableEditors->getEditorForAttributeId( $attributeId );
		
		if ( $editor != null )
			$definedMeaningEditor->addEditor( $editor );
	}

	$definedMeaningEditor->expandEditor( $definitionEditor );
	$definedMeaningEditor->expandEditor( $synonymsAndTranslationsEditor );
	
	return new DefinedMeaningContextEditor( $definedMeaningEditor );
}
function getTransactionOverview( $recordSet, $showRollBackOptions ) {

	$o = OmegaWikiAttributes::getInstance();

	$captionEditor = new RecordSpanEditor( $o->transaction, ': ', ', ', false );
	$captionEditor->addEditor( new TimestampEditor( $o->timestamp, new SimplePermissionController( false ), false ) );
	$captionEditor->addEditor( new UserEditor( $o->user, new SimplePermissionController( false ), false ) );
	$captionEditor->addEditor( new TextEditor( $o->summary, new SimplePermissionController( false ), false ) );
	
	$valueEditor = new RecordUnorderedListEditor( $o->updatesInTransaction, 5 );
	$valueEditor->addEditor( getUpdatedDefinedMeaningDefinitionEditor( $o->updatedDefinition, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedAlternativeDefinitionsEditor( $o->updatedAlternativeDefinitions, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedAlternativeDefinitionTextEditor( $o->updatedAlternativeDefinitionText, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedSyntransesEditor( $o->updatedSyntranses, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedRelationsEditor( $o->updatedRelations, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedClassAttributesEditor( $o->updatedClassAttributes, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedClassMembershipEditor( $o->updatedClassMembership, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedCollectionMembershipEditor( $o->updatedCollectionMembership, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedLinkEditor( $o->updatedLink, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedTextEditor( $o->updatedText, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedTranslatedTextPropertyEditor( $o->updatedTranslatedTextProperty, $showRollBackOptions ) );
	$valueEditor->addEditor( getUpdatedTranslatedTextEditor( $o->updatedTranslatedText, $showRollBackOptions ) );
	
	$editor = new RecordSetListEditor( null, new SimplePermissionController( false ), new ShowEditFieldChecker( true ), new AllowAddController( false ), false, false, null, 4, false );
	$editor->setCaptionEditor( $captionEditor );
	$editor->setValueEditor( $valueEditor );
	
	return $editor->view( new IdStack( "transaction" ), $recordSet );
}