2011-07-20 17 views
3

私は、現在ロードされたページが編集モードの場合、次のようにマスターページに次のコードスニペットを実行したい:SharePointのカスタムスタイル

<!-- If edit mode, then add the following script --> 
<script type="text/javascript"> 
    document.documentElement.className += ' edit-mode'; 
</script> 
<!-- End if --> 

は単に、私のスクリプトはedit-modeクラスを追加しますhtmlタグには、それだけです。

どうすればいいですか? jQueryの最初の2つのバージョンで

一切のSharePointの専門家が存在しないので、私は私の問題を解決するための回避策を行っているおかげ

答えて

6

を書き留めてください。このコントロールは、ページが編集モードのときにこのタグに含まれる情報を処理します。

<PublishingWebControls:EditModePanel runat="server" id="IncludeEditModeClass" > 
    <asp:Content> 
     <script type="text/javascript"> 
       document.documentElement.className += ' edit-mode'; 
     </script> 
    </asp:Content> 
</PublishingWebControls:EditModePanel> 
+0

偉大な解決策!、唯一の欠点は、すべてのページレイアウトにこのタグを含める必要があることです。私はそれをマスターページに挿入できませんでしたが、私はそれを愛しています、そんなにたくさんの^ _^ –

0

、そして私の解決策以下は、第二の純粋なJavaScriptを使用して、

主にI .ms-SPZoneLabelは、編集モードでWebパーツゾーンをラップするクラスです。.edit-mode-panelは、記事ページのデータを入力するフィールドをラップするクラスです。.ewiki-marginは、wikiページ内にあります。 ...

// jQuery version 
$(function(){ 
    if ($('.ms-SPZoneLabel, .edit-mode-panel, .ewiki-margin').length) { 
     document.documentElement.className += ' edit-mode'; 
    } 
}); 

// pure javascript way 
(function(){ 

    // defining fall back getElementsByClassName if not exist (IE) 
    if(!document.getElementsByClassName) { 
     document.getElementsByClassName = function(cl) { 
      var retnode = []; 
      var myclass = new RegExp('\\b'+cl+'\\b'); 
      var elem = this.getElementsByTagName('*'); 
      for (var i = 0; i < elem.length; i++) { 
       var classes = elem[i].className; 
       if (myclass.test(classes)) { 
        retnode.push(elem[i]); 
       } 
      } 
      return retnode; 
     }; 
    } 
    // then checking if there's any webpart zone in the page 
    if(document.getElementsByClassName('ms-SPZoneLabel').length || 
     document.getElementsByClassName('edit-mode-panel').length || 
     document.getElementsByClassName('ewiki-margin').length) { 
     document.documentElement.className += ' edit-mode'; 
    } 

})(); 
EditModePanelコントロール:誰かが(サーバー側でそれを決定するために、ASPタグなど)より良い解決策を持っている場合は

あなたはPublishingWebControlsを使用することができますあなたのソリューション

+0

、誰もがより良いクリーンなソリューションを提供できますか? –

0

このコードは、ブックマークレットとしてそれを使用する場合は動作しません:

javascript:if%20(document.forms['aspnetForm']['MSOLayout_InDesignMode']%20!=%20null)%20document.forms['aspnetForm']['MSOLayout_InDesignMode'].value%20=%201;if%20(document.forms['aspnetForm']['MSOAuthoringConsole_FormContext']%20!=%20null)%20document.forms['aspnetForm']['MSOAuthoringConsole_FormContext'].value%20=%201;theForm.submit(); 

私は無地のJavascriptに変換しようとしたが、それは私のFirefoxのJavaScriptコンソールでは動作しません。

SP_EditPage: function(){ 
    var thisdocument = window.content.document; 
    if (thisdocument.forms['aspnetForm']['MSOLayout_InDesignMode'] != null) 
     thisdocument.forms['aspnetForm']['MSOLayout_InDesignMode'].value = 1; 
    if (thisdocument.forms['aspnetForm']['MSOAuthoringConsole_FormContext'] != null) 
     thisdocument.forms['aspnetForm']['MSOAuthoringConsole_FormContext'].value = 1; 
     theForm.submit(); 
}, 

誰もが普通のjavascriptで動作させることができれば、私は非常に興味があります!それは私に語った: エラー:例外TypeError:ブックマークレットは、この仲間のサイトから来た2

:Javascriptのコマンド ライン:thisdocument.forms.aspnetFormは未定義 ソースファイルである。ここ http://blog.mastykarz.nl/sharepoint-developer-bookmarklets/

は別のものです。サイドバーを開いたまま編集ページを開始します。これは私にとってうまくいく:

SP_EditPage: function(){ 
    var thisdocument = getBrowser().contentWindow.document; 
    if(thisdocument.location.href.search('ToolPaneView=') == -1){ 
     if (thisdocument.location.search.indexOf('?') == 0){ 
      thisdocument.location=(thisdocument.location.href + '&ToolPaneView=2'); 
     }else{ 
      thisdocument.location=(thisdocument.location.href + '?ToolPaneView=2'); 
     } 
    } else { 
     thisdocument.location=thisdocument.location.href; 
    } 
}, 
+0

ブックマークレットが必要ですか? –

+0

@anasnakawaもしあなたが管理者を助けるために必要なのであれば、ブックマークレットは自動的に編集モードに入るブラウザのツールバーボタンのように機能します。congentWindow.document - コードを通常のhtmlページで実行したい場合は、その部分を変更してください(このコードは、Firefoxのツールバーのボタンの中で動作するようにコードを修正しました。ちょうどwindow.documentに。それがあなたが探しているものなら、今、あなたはマスターページにそのJavaScriptを置くことができます。 – bgmCoder

+0

okですが、私は編集モードに入るボタンを必要としません.HTMLタグに 'edit-mode'というCSSクラスを追加したいので、ページが編集モードで見る! あなたは全体のアイデアが間違っているように見える –

0

希望の結果を得るには、次のコードをマスターページに追加する必要があります。私は恵みを始めています

<script type="text/javascript"> 
 
\t \t var inDesignMode = document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode.value; 
 
\t \t 
 
\t \t if (inDesignMode == "1") 
 
\t \t { 
 
\t \t  // page is in edit mode 
 
\t \t \t \t <!-- If edit mode, then add the following script --> 
 
\t \t \t \t 
 
\t \t \t \t \t document.documentElement.className += ' edit-mode'; 
 
\t \t \t \t 
 
\t \t \t \t <!-- End if --> 
 
\t \t 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t  // page is in browse mode 
 
\t \t } 
 

 
    </script>

関連する問題