用javascript自訂SharePoint文件庫/清單項目菜單

來源:互聯網
上載者:User
我們在SharePoint中自訂菜單,通常通過帶CustomAction 的Feature來實現,比如隱藏一個菜單:<HideCustomAction>
  GroupId = "Text"
  HideActionId = "Text"
  Id = "Text"
  Location = "Text">
</HideCustomAction>

自訂一個菜單:<CustomAction 
    Id="Extend"
   Location="Microsoft.SharePoint.Administration.ApplicationManagement"
    Sequence="10" 
    Title="Extend or upgrade virtual server" 
    Description="">
    <UrlAction Url="vslist.aspx?NextPage=extendvsoption.aspx&amp;Show=NeedExtend&amp;Show=NeedUpgrade"/>
</CustomAction>

具體知識請參考SDK或者參考網上的相關文章。
但是。。。。這種方法不是都管用的,比如我要改變文件庫或者列表的ListItem的菜單中的某項或者增加刪除一個菜單等等,通過這種方法是沒有效果的……

這個時候,我們通過javascript來實現就非常容易了,如果您看過core.js的代碼就會發現,MS已經給我們預留了自訂的介面來實現我們自己的菜單定義了,MS想的就是周到哇,嘿嘿……
core.js在路徑C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\下的1033[英文]或者2052[中文]下,我們找到添加文件庫/列表菜單的function

看到了吧我們可以自訂實現Custom_AddDocLibMenuItems(文件庫) / Custom_AddListMenuItems(列表)來添加我們自己的菜單,具體做法是。。。
1)在我們的頁面中加入一個WebPart-內容編輯器組件,然後修改組件屬性,最好將組件設定為隱藏的:


然後點擊“源編輯器...”,輸入我們的自訂javascript指令碼來實現我們自己的菜單:<script language="javascript">
function Custom_AddDocLibMenuItems(m, ctx)
{
    strDisplayText = "我的菜單";
    var rootMenu = CASubM(m,strDisplayText,"","",500);

    strDisplayText = "我的菜單還是我的菜單";
    strAction = "STSNavigate('http://www.cnblogs.com')";
    strImagePath=ctx.imagesPath+"oisweb.gif";
    menuOption = CAMOpt(rootMenu,strDisplayText,strAction,strImagePath);
    menuOption.id = "ID_MySubMenu";
    return false;
}
</script>

function裡怎麼個寫法可以參照core.js的寫法:)  最後的return false;說明繼續執行系統的代碼,如果return true的話。。。那整個菜單就一個你自己的功能表項目啦。寫完後儲存,然後退出編輯模式來瞧瞧:

如果要去掉某個菜單,比如WorkFlow之類,我比較笨,用了個笨方法,把他內建的AddDocLibMenuItems中的指令碼copy過來,把要去掉的功能表項目給注釋掉,然後最後來個return true;呵呵

個人習慣:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.