Multi-File Upload (2): Aktivieren der neuen Seitentypen

An dieser Stelle kommt der etwas kniffelige Teil, der mit größter Vorsicht auszuführen ist. Es ist nun eine Anpassung der Standardeinspielseite für multiple Dateien UPLOAD.ASPX notwendig – diese befindet sich im Allgemeinen im Seitenverzeichnis von WSS (c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS). Ich empfehle dringend, erst einmal eine Sicherheitskopie der Datei anzulegen.

Die Änderungen umfasst drei Teile: die UPLOAD.ASPX wird an den neuen Seitentypen gebunden, es wird ein Platzhalterbereich für zusätzliche Eingaben vorbereitet und das Script zum Anstossen des Einspielvorgangs wird verändert. Bei den Veränderungen (mit NOTEPAD.EXE zum Beispiel – XML Editoren sind für HTML / ASP.NET Seiten nicht zwingend geeignet) ist zu beachten, dass nicht immer ganze Zeilen betroffen sind. Ich beschreibe im Folgende das Vorgehen basierend auf meiner lokalen Installation (WSS 3.0 mit SP1 Englisch auf Windows 2003 R2 SP2).

Gemäß den notwendigen Veränderungen finden sich im Source\Fragments Unterverzeichnis des Installationsverzeichnisses drei UPLOAD.ASPX Dateien mit den Zusätzen HEAD, FORM und SCRIPT. Diese Fragmente können zum einfachen Anpassen der UPLOAD.ASPX verwendet werden – die Zeilen mit den drei Punkten sind IMMER zu entfernen!

HEAD: Die erste Zeile der originalen UPLOAD.ASPX beginnt (!) mit einer Sequenz

<%@ Assembly Name="Microsoft.SharePoint.ApplicationPages, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%> <%@ Page Language="C#" Inherits="Microsoft.SharePoint.ApplicationPages.UploadPage" MasterPageFile="~/_layouts/application.master" %>

Nur dieser Beginn ist durch das HEAD Fragment (ohne die letzte … Zeile) zu ersetzen.

FORM: Das FORM Fragment kann eigentlich nach Lust und Laune eingesetzt werden, wenn man sich etwas auskennt. Ich habe mich entschieden, die zusätzlichen Eingabefelder direkt unter der ‚Nicht überschreiben‘ Auswahl vorzunehmen. Dazu ersetzt das FORM Fragment (ohne die beiden … Zeilen) folgenden HTML Ausschnitt:

<Template_Control>
<asp:CheckBox id="OverwriteMultiple" Checked="true" Text="<%$Resources:wss,upload_document_overwrite_version%>" runat="server" />
</Template_Control>

Hier ein Beispiel (ohne den Versuch einer Formatierung):
Neue Einspielseite

SCRIPT: Das alles bringt aber gar nichts, wenn nicht auch der Scriptcode beim Einspielen so verändert wird, dass er die Eingabewerte auch berücksichtigt und den neuen Einspielvorhang aktiviert. Dazu ersetzt das SCRIPT Fragment das vorhandene Script einfach vollständig (wieder ohne die beiden … Zeilen):

function _spFormOnSubmit()
{
var putoptsElement = document.getElementById("putopts");
var overwriteElement = document.getElementById("&ld;<%= OverwriteMultiple.ClientID %>");
putoptsElement.value = overwriteElement.checked ? "true" : "false";
document.getElementById("idUploadCtl").MultipleUpload();
return false;
}

Das war es erst einmal. Die Veränderungen werden nach einem Neustart des Web Servers (IISReset aufrufen) aktiv. Werden keine weiteren Schritte unternommen, sollte sich alles wie vorher verhalten. Allerdings lauern die neuen Möglichkeiten im Hintergrund gleich um die Ecke.

Soweit dazu

Jochen

Bookmark the permalink.

Schreibe einen Kommentar