sharepoint创建下拉菜单所用到的部分变量和代码片断

本文介绍 SharePoint 中自定义上下文菜单的实现方法,包括如何通过 JavaScript 控制菜单显示、创建菜单项及响应用户操作等关键步骤。文章还探讨了不同场景下的菜单定制策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js文件所在目录C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/LAYOUTS/1033

OWS.js   MENU.JS    INIT.JS

// JavaScript Document
*********************************************************

 以下是在ows.js中的变量。做自定义菜单传递参数时可能用得到

var IsMenuShown=false;
var itemTableDeferred=null;
var itemTable=null;
var imageCell=null;
var onKeyPress=false;
var downArrowText=null;
var currentCtx=null;
var currentEditMenu=null;
var currentItemID=null;
var currentItemAppName=null;
var currentItemProgId=null;
var currentItemIcon=null;
var currentItemOpenControl=null;
var currentItemFileUrl=null;
var currentItemFSObjType=null;
var currentItemCheckedOutUserId=null;
var currentItemCheckoutExpires=null;
var currentItemModerationStatus=null;
var currentItemUIString=null;
var currentItemCheckedoutToLocal=null;
var bIsCheckout=0;
var currentItemCanModify=null;
var currentItemPermMaskH=null;
var currentItemPermMaskL=null;
var currentItemIsEventsExcp=null;
var currentItemIsEventsDeletedExcp=null;
var UTF8_1ST_OF_2=0xc0   ;
var UTF8_1ST_OF_3=0xe0   ;
var UTF8_1ST_OF_4=0xf0   ;
var UTF8_TRAIL=0x80   ;
var HIGH_SURROGATE_BITS=0xD800 ;
var LOW_SURROGATE_BITS=0xDC00 ;
var SURROGATE_6_BIT=0xFC00 ;
var SURROGATE_ID_BITS=0xF800 ;
var SURROGATE_OFFSET=0x10000;

 

 


**********************************************************

 

 

function OnItem(elm)
{
 DeferCall('OnItemDeferCall', elm);
}
function DeferCall()
{
 if (arguments.length==0)
  return null;
 var args=arguments;
 var fn=null;
 if (browseris.ie5up || browseris.nav6up)
 {
  eval("if (typeof("+args[0]+")=='function') { fn="+args[0]+"; }");
 }
 if (fn==null)
  return null;
 if (args.length==1) return fn();
 else if (args.length==2) return fn(args[1]);
 else if (args.length==3) return fn(args[1], args[2]);
 else if (args.length==4) return fn(args[1], args[2], args[3]);
 else if (args.length==5) return fn(args[1], args[2], args[3], args[4]);
 else if (args.length==6) return fn(args[1], args[2], args[3], args[4], args[5]);
 else if (args.length==7) return fn(args[1], args[2], args[3], args[4], args[5], args[6]);
 else if (args.length==8) return fn(args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
 else if (args.length==9) return fn(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
 else if (args.length==10) return fn(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
 else
 {
  var L_TooManyDefers_Text="Too many arguments passed to DeferCall";
  alert(L_TooManyDefers_Text);
 }
 return null;
}
function OnItemDeferCall(elm)
{
 if (!IsMenuEnabled())
  return false;
 if (IsMenuOn())
 {
  StartDeferItem(elm);
  return false;
 }
 if (itemTable !=null)
  OutItem();
 itemTable=elm;
 currentItemID=GetAttributeFromItemTable(itemTable, "ItemId", "Id");
 var createCtx=new Function("setupMenuContext("+itemTable.getAttribute("CTXName")+");");
 createCtx();
 var ctx=currentCtx;
 if (browseris.nav6up)
  itemTable.className="ms-selectedtitlealternative";
 else
  itemTable.className="ms-selectedtitle";
 if (browseris.ie5up && !browseris.ie55up)
 {
  itemTable.onclick=EditMenuDefaultForOnclick;
  itemTable.oncontextmenu=EditMenuDefaultForOnclick;
 }
 else
 {
  itemTable.onclick=CreateMenu;
  itemTable.oncontextmenu=CreateMenu;
 }
 itemTable.onmouseout=OutItem;
 var titleRow;
 titleRow=GetFirstChildElement(GetFirstChildElement(itemTable));
 if (titleRow !=null)
 {
  imageCell=GetLastChildElement(titleRow);
 }
 if (ctx.listTemplate==200)
 {
  if (itemTable.getAttribute("menuType")=="Orphaned")
   downArrowText=L_Reschedule_Text;
 }
 else
  downArrowText=L_Edit_Text;
 var imageTag=GetFirstChildElement(imageCell);
 imageTag.src=ctx.imagesPath+"menudark.gif";
 imageTag.alt=downArrowText;
 imageTag.style.visibility="visible";
 imageCell.className="ms-menuimagecell";
 return false;
}

function CreateMenu(e)
{
 if (!IsContextSet())
  return;
 var ctx=currentCtx;
 if (e==null)
  e=window.event;
 var srcElement=e.srcElement ? e.srcElement : e.target;
 if (itemTable==null || imageCell==null ||
  (onKeyPress==false &&
   (srcElement.tagName=="A" ||
    srcElement.parentNode.tagName=="A")))
  return;
 return CreateMenuEx(ctx, itemTable, e);
}
function CreateMenuEx(ctx, container, e)
{
 if (container==null)
  return;
 IsMenuShown=true;
 document.body.onclick="";
 var m;
 m=CMenu(currentItemID+"_menu");
 if (!m)
  return;
 else if (ctx.isVersions)
  AddVersionMenuItems(m, ctx);
 else if (ctx.listBaseType==1)
  AddDocLibMenuItems(m, ctx);
 else if (ctx.listTemplate==200)
  AddMeetingMenuItems(m, ctx);
 else
  AddListMenuItems(m, ctx);
 InsertFeatureMenuItems(m, ctx);
 currentEditMenu=m;
 container.onmouseout=null;
 OMenu(m, container, null, null, -1);
 itemTable=GetSelectedElement(container, "TABLE");
 m._onDestroy=OutItem;
 e.cancelBubble=true;
 return false;
}

function AddListMenuItems(m, ctx)
{
 if (typeof(Custom_AddListMenuItems) !="undefined")
 {
  if (Custom_AddListMenuItems(m, ctx))
   return;
 }
 if (currentItemFileUrl==null)
  currentItemFileUrl=GetAttributeFromItemTable(itemTable, "Url", "ServerUrl");
 var currentItemEscapedFileUrl;
 if (currentItemFileUrl !=null)
  currentItemEscapedFileUrl=escapeProperly(unescapeProperly(currentItemFileUrl));
 if (currentItemIsEventsExcp==null)
 {
  currentItemIsEventsExcp=false;
  currentItemIsEventsDeletedExcp=false;
  currentItemEvtType=itemTable.getAttribute("EventType");
  if(currentItemEvtType !=null &&
    (currentItemEvtType==2 || currentItemEvtType==3 || currentItemEvtType==4))
  {
   currentItemIsEventsExcp=true;
   if (currentItemEvtType==3)
             currentItemIsEventsDeletedExcp=true;
  }
 }
 var menuOption;
 if (ctx.listBaseType==3 && ctx.listTemplate==108)
 {
  strDisplayText=L_Reply_Text;
  if(itemTable.getAttribute("Ordering").length>=504)
  {
   var L_ReplyLimitMsg_Text="Cannot reply to this thread. The reply limit has been reached.";
   strAction="alert('"+L_ReplyLimitMsg_Text+"')";
  }
  else
  {
   strAction="STSNavigate('"+ctx.newFormUrl
+"?Threading="+escapeProperly(itemTable.getAttribute("Ordering"))
+"&Guid="+escapeProperly(itemTable.getAttribute("ThreadID"))
+"&Subject="+escapeProperly(itemTable.getAttribute("Subject"))
+"&Source="+GetSource()+"')";
  }
  strImagePath=ctx.imagesPath+"reply.gif";
  menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 100);
  menuOption.id="ID_Reply";
 }
 AddSharedNamespaceMenuItems(m, ctx);
 if (currentItemID.indexOf(".0.") < 0 && HasRights(0x0, 0x8)
    && !currentItemIsEventsExcp)
 {
  if (ctx.listBaseType==4)
   strDisplayText=L_DeleteResponse_Text;
  else
   strDisplayText=L_DeleteItem_Text;
  strAction="DeleteListItem()";
  strImagePath=ctx.imagesPath+"delitem.gif";
  menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 300);
  menuOption.id="ID_DeleteItem";
 }
 var contentTypeId=itemTable.getAttribute("CId");
 if (contentTypeId !=null && contentTypeId.indexOf("0x0106")==0
   && HasRights(0x10, 0x0))
 {
  strDisplayText=L_ExportContact_Text;
  strAction="STSNavigate('"+ctx.HttpPath+"&Cmd=Display&CacheControl=1&List="+ctx.listName+"&ID="+currentItemID+"&Using="+escapeProperly(ctx.listUrlDir)+"/vcard.vcf"+"')";
  strImagePath=ctx.imagesPath+"exptitem.gif";
  menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 350);
  menuOption.id="ID_ExportContact";
 }
 CAMSep(m);
 if (ctx.verEnabled==1)
 {
  AddVersionsMenuItem(m, ctx, currentItemEscapedFileUrl);
 }
 AddWorkflowsMenuItem(m, ctx);
 CAMSep(m);
 if ((currentItemID.indexOf(".0.") < 0)
    && HasRights(0x80, 0x0))
 {
  strDisplayText=L_Subscribe_Text;
  strAction="NavigateToSubNewAspx('"+ctx.HttpRoot+"', 'List="+ctx.listName+"&ID="+currentItemID+"')";
  strImagePath="";
  menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1100);
  menuOption.id="ID_Subscribe";
 }
 if (ctx.isModerated==true &&
    HasRights(0x0, 0x10) && HasRights(0x0, 0x4)
   && HasRights(0x0, 0x21000) && ctx.listBaseType !=4)
 {
  strDisplayText=L_ModerateItem_Text;
  strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/approve.aspx?List="+ctx.listName
+"&ID="+currentItemID+"&Source="+GetSource()+"')";
  strImagePath=ctx.imagesPath+"apprj.gif";
  menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1150);
  menuOption.id="ID_ModerateItem";
 }
 if (currentItemFSObjType==1 &&
  ctx.ContentTypesEnabled &&
  ctx.listTemplate !=108)
 {
  strDisplayText=L_CustomizeNewButton_Text;
  strAction="STSNavigate('"+ctx.HttpRoot+"/_layouts/ChangeContentTypeOrder.aspx?List="+ctx.listName+"&RootFolder="+currentItemEscapedFileUrl+"&Source="+GetSource()+"')";
  strImagePath="";
  menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 1170);
  menuOption.id="ID_CustomizeNewButton";
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiangxng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值