• 通过sharepoint 客户脚本,验证列表添加页面上的时间


         项目上遇到一个需求,在我们已经开发好的"会议室预约"系统上,增加一个对时间控制,具体要求如下

      只有北京会议,除管理员以外的人在预定会议室时,一次只能预约两小时,不能预约30以后的会议室。

      经过考虑以觉得,只有通过sharepoint客户端脚本实现是最简单的,以下是实现方式

    引入net的验证控件

     <asp:customvalidator id="CustomValidator2" runat="server" ErrorMessage="不可预定三十天以后会议室!" ClientValidationFunction="valiatorEndTime"></asp:customvalidator>
     <asp:customvalidator id="CustomValidator3" runat="server" ErrorMessage="该用户预定会议室的时间一次不得超过两小时间!" ClientValidationFunction="valiatorTime"></asp:customvalidator>

     JS实现代码:

    var falg=false;
      ExecuteOrDelayUntilScriptLoaded(getAllSiteGroups1, "sp.js");
    
         //Get All The Site Groups in SharePoint Using ECMAScript
         var groupCollection;
         var id=0;
        function getAllSiteGroups1() {
            var clientContext = new SP.ClientContext();
            this.groupCollection = clientContext.get_web().get_siteGroups();
            clientContext.load(groupCollection);
            clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededgetAllSiteGroups),
            Function.createDelegate(this, this.onQueryFailedgetAllSiteGroups));
    
        }
    
        function onQuerySucceededgetAllSiteGroups() {
        thisHREF = document.location.href;
        if(thisHREF.indexOf("SPMeetingRoomBooking")>0)
        {
         var groupName = 'Site Groups: 
    ';
            var groupsEnumerator = this.groupCollection.getEnumerator();
            while (groupsEnumerator.moveNext()) {
                var group = groupsEnumerator.get_current();
                if(group.get_title()=="会议室管理员")
                {
                    id=group.get_id();
                }
            }
           getAllSiteGroups();
        }
        else
        {
            falg= true;
        }
           
      }
    
        function onQueryFailedgetAllSiteGroups(sender, args) {}
        
              //Get All The Site Groups in SharePoint Using ECMAScript
         var groupCollection;
         function getAllSiteGroups() {
             var context = new SP.ClientContext();
             var siteColl = context.get_site();
             var web = siteColl.get_rootWeb();
             var groupCollection = web.get_siteGroups();
            
             // Get the Our Group's ID       
             var _group = groupCollection.getById(id); // ID of the Group that we are checking
             var users = _group.get_users(); // Get all Users of the group
             context.load(_group);
             context.load(users);
             this._users = users;
             this._currentUser = web.get_currentUser(); // Get current user
             context.load(this._currentUser);
             context.executeQueryAsync(Function.createDelegate(this, this.CheckUserSucceededUserIsInGroup),
            Function.createDelegate(this, this.CheckUserfailedUserIsInGroup));
    
         }
         //The below Checks  if User is the member of the specified group
         function CheckUserSucceededUserIsInGroup() {
             //debugger;
             IsInThisGroupFlag = false;
             var userLoginName = this._currentUser.get_loginName();
             if(userLoginName.split('\')[1]=="system")
             {
             falg= true;
             }
             else if (this._users.get_count() > 0) {
                 var _usersEnum = this._users.getEnumerator();
                 while (_usersEnum.moveNext()) {
                     var user = _usersEnum.get_current();
                     
                     if (user.get_loginName() == userLoginName) {
                         //debugger;
                         falg= true;
                     }
                     else
                     {
                         falg=false;
                     }
    
                   
                 }
             }
         }
    
         function CheckUserfailedUserIsInGroup() {
             falg=false;
         }
    
           
     
            function searchFieldEditorElement(tagName, identifier, title) { 
                var len = identifier.length; 
                var tags = document.getElementsByTagName(tagName); 
                for (var i = 0; i < tags.length; i++) { 
                    var tempString = tags[i].id;
                     if (tags[i].title == title) { 
                        return tags[i]; 
                    } 
                } 
                return null; 
            }
            function valiatorTime(source,args)
            {
                    var txtstartDate = searchFieldEditorElement("input", "DateTimeFieldDate", "开始时间"); 
                    var txtendDate = searchFieldEditorElement("input", "DateTimeFieldDate", "结束时间"); 
                    var startDateID = txtstartDate.id;
                    var startDataHoursID=startDateID +"Hours";
                    var startDataMinutesID=startDateID +"Minutes";
                    var startDataValue=document.getElementById(startDateID ).value;
                    var startDataHoursValue=document.getElementById(startDataHoursID).value;
                    var startDataMinutesValue=document.getElementById(startDataMinutesID).value;
                    var startTimestr=startDataValue+" "+startDataHoursValue+startDataMinutesValue+":00";
                    var startTime=new Date(startTimestr);
                    var endDateID = txtendDate.id; 
                    var endDataHoursID=endDateID+"Hours";
                    var endDataMinutesID=endDateID+"Minutes";
                    var endDataValue=document.getElementById(endDateID ).value;
                    var endDataHoursValue=document.getElementById(endDataHoursID).value;
                    var endDataMinutesValue=document.getElementById(endDataMinutesID).value;
                    var endTimestr=endDataValue+" "+endDataHoursValue+endDataMinutesValue+":00";
                    var endTime=new Date(endTimestr);
                    var betTime=(endTime.getTime()-startTime.getTime())/(1000*60*60);
                    if(betTime>2 && falg==false)
                    {
                        args.IsValid=false;
                    }
                    else
                    {
                        args.IsValid=true;
                    }
            
            }
            
            function valiatorEndTime(source,args1)
            {
                 var txtendDate = searchFieldEditorElement("input", "DateTimeFieldDate", "结束时间");
                   var endDateID = txtendDate.id; 
                    var endDataHoursID=endDateID+"Hours";
                    var endDataMinutesID=endDateID+"Minutes";
                    var endDataValue=document.getElementById(endDateID ).value;
                    var endDataHoursValue=document.getElementById(endDataHoursID).value;
                    var endDataMinutesValue=document.getElementById(endDataMinutesID).value;
                    var endTimestr=endDataValue+" "+endDataHoursValue+endDataMinutesValue+":00";
                    var endTime=new Date(endTimestr);
                    var betTime=(endTime.getTime()-new Date())/(1000*60*60*24);
                    if(betTime>30 && falg==false)
                    {
                        args1.IsValid=false;
                    }
                    else
                    {
                        args1.IsValid=true;
                    }
    
            }
            _spBodyOnLoadFunctionNames.push("valiatorField");  
  • 相关阅读:
    hdu1078 记忆化搜索
    AC之路开始了~
    Balanced Lineup poj3264 线段树
    Billboard 题解 hdu2795
    Count Color poj2777 线段树
    D-query SPOJ 树状数组+离线
    Poj 3468 A Simple Problem with Integers 线段树
    最小生成树两大算法总结+模板
    最短路三大算法及其优化算法大总结+模板
    POJ-1502 MPI Maelstrom 迪杰斯特拉+题解
  • 原文地址:https://www.cnblogs.com/jinhailang/p/3385868.html
Copyright © 2020-2023  润新知