Ersteller löschen

Pragmarius hinzugefügt 44 Tagen her
beantwortet

Lieber Support,

bei Citavi 5 funktionierte das Makro noch:

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Net;
using System.Linq;


using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Metadata;
using SwissAcademic.Citavi.Shell;
using SwissAcademic.Collections;

// Implementation of macro editor is preliminary and experimental.
// The Citavi object model is subject to change in future version.

public static class CitaviMacro
{
	public static void Main()
	{
		//****************************************************************************************************************
		// Change Publisher / Pragmarius
		// 2015-03-02
		//
		// This macro will overwrite the content of the field Publisher for all references in the current selection
		//
		// EDIT HERE
		// Variables to be changed by user
		
		string CreatedBy = " "; // Ersteller löschen
						
		// DO NOT EDIT BELOW THIS LINE
		// ****************************************************************************************************************

		if (Program.ProjectShells.Count == 0) return;		//no project open
		if (IsBackupAvailable() == false) return;			//user wants to backup his/her project first
		
		//iterate over all references in the current filter (or over all, if there is no filter)
		List<Reference> references = Program.ActiveProjectShell.PrimaryMainForm.GetFilteredReferences();

		//reference to active Project
		Project activeProject = Program.ActiveProjectShell.Project;
		
		int counter = 0;

				
		foreach (Reference reference in references)
		{
			counter++;
			reference.CreatedBy.Clear();
			//reference.Authors.Add(newAuthors);		
		}

		activeProject.Save();

		// Message upon completion
		string message = "{0} reference(s) were changed.";
		message = string.Format(message, counter.ToString());
		MessageBox.Show(message, "Macro", MessageBoxButtons.OK, MessageBoxIcon.Information);
	}

	
	// Ask whether backup is available
	private static bool IsBackupAvailable()
	{
		string warning = String.Concat("Important: This macro will make irreversible changes to your project.",
			"\r\n\r\n", "Make sure you have a current backup of your project before you run this macro.",
			"\r\n", "If you aren't sure, click Cancel and then, in the main Citavi window, on the File menu, click Create backup.",
			"\r\n\r\n", "Do you want to continue?"
		);

		return (MessageBox.Show(warning, "Citavi", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.OK);
	}
	//end IsBackupAvailable()
}
In Citavi 6 nicht mehr. Gibt es Chancen, dass das demnächst verfügbar ist?

Freundliche Grüße, Pragmarius

Beste Antwort
Foto

Hallo, Pragmarius,

das Handling der Infos zu Erstellt/Geändert ist bei Citavi 6 (im Hinblick) auf die Cloud deutlich komplexer als in Citavi 5. Trotzdem gibt es die Eigenschaften CreatedBy und ModifiedBy noch als einfachen String, dem auch zugewiesen werden kann.

Sie müssten aber manuell String.Empty zuweisen, die Methode Clear gibt es nicht mehr. Also statt "reference.CreatedBy.Clear()" nun "reference.CreatedBy = String.Empty". Die Save-Methode für das Projekt ist entfallen, daher muss die Zeile activeProject.Save() ersatzlos gestrichen werden.

Das Makro läuft anschließend durch.

Viele Grüße

Sebastian

Kommentare (2)

Foto
1

Hallo, Pragmarius,

das Handling der Infos zu Erstellt/Geändert ist bei Citavi 6 (im Hinblick) auf die Cloud deutlich komplexer als in Citavi 5. Trotzdem gibt es die Eigenschaften CreatedBy und ModifiedBy noch als einfachen String, dem auch zugewiesen werden kann.

Sie müssten aber manuell String.Empty zuweisen, die Methode Clear gibt es nicht mehr. Also statt "reference.CreatedBy.Clear()" nun "reference.CreatedBy = String.Empty". Die Save-Methode für das Projekt ist entfallen, daher muss die Zeile activeProject.Save() ersatzlos gestrichen werden.

Das Makro läuft anschließend durch.

Viele Grüße

Sebastian

Foto
1

danke.