/**
 * **************************** 总体说明 ************************
 * 1. 该接口是菜单权限管理控制接口. 
 * 2. 需要引入到您的页面里，完成菜单的显示，以及功能点的控制.
 * 3. 我们提供了如下3个方法，
 *  3.1 获得菜单目录菜单的 GPM_GenerMenumsDB(appNo)。
 *  3.2 判断是否可以执行特定功能的GPM_IsCanExecuteFunction(appNo,functionFlat)
 *  3.3 自动设置页面元素显示隐藏的.
 */

/**
 * 获得当前操作员的菜单与目录的API
 * @param {系统编号} appNo 
 * 
 * 返回：两个结果集合的JSON,可以通过下列方式获取到他.
    var dirs = data["Dirs"];   //获得目录.
    var menus = data["Menus"]; //获得菜单.
 
 说明：
 1. 系统返回两个API接口. 目录与菜单，分别是两个数据集合。
 2. 目录的数据结构：dirs   No=编号,Name=标签, Icon=图标
 3. 菜单的数据结构：menus  No=编号,Name=标签, Icon=图标，URL=连接, 
    Target=打开方式0=新窗口,1=本窗口,2=覆盖新窗口. ParentNo=目录编码
 4. 您可以自己组织这些数据根据自己的需要生成菜单框架.
 5. ccbpm提供了两套风格，您可以参考 /Portal/GPMMenus.js ， /Portal20/GPMMenus.js
 */
function GPM_GenerMenumsDB() {

    var handler = new HttpHandler("BP.WF.HttpHandler.GPMPage");
    // alert(appNo);
    if (appNo == null) {
        alert('没有配置appNo,或者没有引入config.js 。');
        return;
    }

    handler.AddPara("AppNo", appNo);
    var data = handler.DoMethodReturnJSON("GPM_DB_Menus"); //获得菜单.
    return data;
}

/**
 * 判断当前用户是否可以执行当前的功能点
 * 
 * @param {项目编号} appNo
 * @param {标记} funcFlag
 * 
 * 返回true ,是可以执行这个功能点.  false=不可以执行功能点.
 * 
 * 说明：用于页面的功能点控制, 例如: 
 * 1. 获取是否可以删除的权限.
 * 2. IsCanDeleteUser 是在新建菜单的时候做的标记.
 * 3. 调用接口true,false 用于显示隐藏功能按钮.
 * 
 *  var isCanDeleteUser=GPM_IsCanExecuteFunction('CCOA','DeleteUser');
 *  
 *  if (isCanDeleteUser==false)
 *     $("#Btn_Delete").hid(); 
 *  else
 *     $("#Btn_Delete").show();
 *  
 */
function GPM_IsCanExecuteFunction(appNo, funcFlag) {
    var handler = new HttpHandler("BP.WF.HttpHandler.GPMPage");
    handler.AddPara("AppNo", appNo);
    handler.AddPara("FuncFlag", funcFlag);
    var data = handler.DoMethodReturnJSON("GPM_IsCanExecuteFunction"); //获得菜单.
    if (data == "1")
        return true;
    return false;
}

/**
 * 自动显示隐藏页面元素(批量控制页面元素的显示隐藏元素.)
 * 
 * @param {系统编号} appNo
 * 
 * 应用场景:
 * 1. 首先在前台配置好功能控制点标记，并把功能控制点分给相关的人员, 功能控制点的标记要与要控制的页面元素id对应.
 * 2. 其次需要把/GPM/API.js 引入到要控制的页面里面.
 * 3. 开发的个性化需要控制的元素ID,默认都是隐藏的.
 *   
 */
function GPM_AutoHidShowPageElement(appNo) {
    var handler = new HttpHandler("BP.WF.HttpHandler.GPMPage");
    handler.AddPara("AppNo", appNo);
    var data = handler.DoMethodReturnJSON("GPM_AutoHidShowPageElement"); //获得所有的标记数据.

    for (var i = 0; i < data.length; i++) {
        var ctrl = data[i].Flag;
        var ctl = $("#" + ctrl);
        if (ctl == null)
            continue;
        ctl.show(); //让其显示出来.
    }

}

