2009-07-03 12 views
2

Ich verwende das SPLongOperation-Objekt in meinem Projekt, um eine Verzögerung beim Navigieren zu einer neuen Seite einzuführen. Die integrierte Seite verwendet die Standard CSS-Stile und das Branding.Zum SPLongOperation-Objekt in SharePoint 2007

Ich möchte dieses Seiten-Design anpassen und mein eigenes Thema und Branding anwenden.

Bitte sagen Sie mir, wie Sie eine benutzerdefinierte Masterseite auf die Seite anwenden, die das SharePoint 2007 Spin Wheel mit dem animierten gears_an.gif Bild anzeigt.

Vielen Dank im Voraus.

+0

Ich bin nicht sicher, ob dies bis 2007 gilt, aber hier ist eine weitere Option, die mehr Kontrolle erlaubt: http://ruudheemskerk.net/archive/2009/11/24/long-operations-in-sharepoint-part-2.aspx – ScottE

Antwort

0

Leider ist die SPLongOperation Klasse versiegelt und codiert auch die Zahnräder ASPX-Datei.

Es sieht so aus, als ob die einzige Möglichkeit, dies zu ändern, darin besteht, die Datei 12\template\layouts\gear.aspx zu bearbeiten. Beachten Sie, dass dies zu Problemen mit zukünftigen Produktupdates führen kann, die Änderungen an dieser Datei vornehmen.

2

Alex hat Recht, dass die einzige (nicht unterstützte!) Möglichkeit, das Seitenlayout zu ändern, die Aktualisierung von gear.aspx im Dateisystem jeder WFE wäre. Beachten Sie, dass dies eine Änderung in der gesamten Farm wäre, es sei denn, Sie verwenden eine Kopie von LAYOUTS, die im Allgemeinen empfohlen wird, wenn Sie sich für diese Route entscheiden.

Wenn Sie wirklich clever werden möchten, werden die Werte der LeadingHTML und TrailingHtml Eigenschaften der Operation nicht maskiert, bevor sie in den Antwortstream geschrieben werden. Sie könnten eine dieser Eigenschaften verwenden, um einen <script> zu schreiben die DOM zu manipulieren, ein Stylesheet Link zu injizieren usw.

Update: Ich habe eine schnelle Proof-of-concept von Skripteinschleusung here.

2

Ich stimme nicht zu, dass das einzige war, die OOB-Dateien zu ändern.

Sie können dies lösen, ohne die Regeln zu verbiegen, indem Sie ein benutzerdefiniertes HTTPModule entwickeln. Das Httpmodule erkennt, ob Sie die betreffende Seite zugreifen und seine Masterseite ändert nach dem folgenden Code-Schnipsel:

private void page_PreInit(object sender, EventArgs e) 
{ 
    Page page = sender as Page; 
    // Do your checking/filtering here 
    if (true) 
    { 
    page.MasterPageFile = "<whatever you have.master"; 
    } 
} 
+0

Sie haben Recht - das ist wahrscheinlich der beste Weg, es zu tun. –

+0

Mit Ausnahme, dass SPLongOperation nur direkt in den Antwortstream schreibt, ohne die Master-/Kontrollhierarchie der Hostseite überhaupt zu verarbeiten. Ein HttpModule ist normalerweise eine Option, aber ich denke nicht, dass es hier hilft. – dahlbyk

Verwandte Themen