o2oa api: x-游戏厅捕鱼达人

source

mwf.xdesktop.requireapp("process.xform", "$module", null, false);
mwf.require("mwf.widget.attachmentcontroller", null, false);
mwf.xapplication.process.xform.attachmentcontroller = new class({
    extends: mwf.widget.atter,
    "options": {
        "officefiles": ["doc", "docx", "dotx", "dot", "xls", "xlsx", "xlsm", "xlt", "xltx", "pptx", "ppt", "pot", "potx", "potm", "pdf"],
        "allowpreviewextension" : ["zip","pdf", "ofd", "png", "jpg", "bmp", "jpeg", "gif", "js", "css", "java", "json", "xml", "php", "html", "htm", "xhtml", "log", "md", "txt"],
        "checktextenable": true
    },
    checkattcontrol: function(att, currentuser){
        var attuser = att.data.person || att.data.creatoruid;
        switch (this.options.isdeleteoption){
            case "o":
                return attuser===currentuser;
            case "a":
                return att.data.activity===this.module.form.businessdata.activity.id;
            case "ao":
                return (attuser===currentuser || att.data.activity===this.module.form.businessdata.activity.id);
            default:
                return true;
        }
    },
    checkattachmentdeleteaction: function () {
        if (this.options.readonly || this.options.isdeleteoption==="n" || this.options.isdeleteoption==="hidden" || !this.attachments.length) {
            this.setattachmentsaction("delete", false);
            return false;
        }
        var currentuser = layout.session.user.distinguishedname;
        for (var i = 0; i < this.attachments.length; i  ) {
            var att = this.attachments[i];
            this.setattachmentaction(att, "delete", (att.data.control.allowedit && this.checkattcontrol(att, currentuser)));
        }
    },
    checkdeleteaction: function () {
        this.checkattachmentdeleteaction();
        if (this.options.readonly) {
            if (this.options.isdeleteoption === "hidden") {
                this.setactionhidden(this.deleteaction);
                this.setactionhidden(this.min_deleteaction);
            } else {
                this.setactiondisabled(this.deleteaction);
                this.setactiondisabled(this.min_deleteaction);
            }
            return false;
        }
        if (this.options.isdeleteoption === "hidden") {
            this.setactionhidden(this.deleteaction);
            this.setactionhidden(this.min_deleteaction);
        }else if( this.options.isdeleteoption === "n" ){
            this.setactiondisabled(this.deleteaction);
            this.setactiondisabled(this.min_deleteaction);
        } else {
            if (this.selectedattachments.length) {
                var user = layout.session.user.distinguishedname;
                var flag = true;
                if (this.options.isdeleteoption === "o") {
                    for (var i = 0; i < this.selectedattachments.length; i  ) {
                        var att = this.selectedattachments[i];
                        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
                        if (!att.data.control.allowedit && att.data.person !== user) {
                            flag = false;
                            break;
                        }
                        if (att.data.person !== layout.desktop.session.user.distinguishedname) {
                            flag = false;
                            break;
                        }
                    }
                } else if (this.options.isdeleteoption === "a") {
                    for (var i = 0; i < this.selectedattachments.length; i  ) {
                        var att = this.selectedattachments[i];
                        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
                        if (!att.data.control.allowedit && att.data.person !== user) {
                            flag = false;
                            break;
                        }
                        if (att.data.activity !== this.module.form.businessdata.activity.id) {
                            flag = false;
                            break;
                        }
                    }
                } else if (this.options.isdeleteoption === "ao") {
                    for (var i = 0; i < this.selectedattachments.length; i  ) {
                        var att = this.selectedattachments[i];
                        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
                        if (!att.data.control.allowedit && att.data.person !== user) {
                            flag = false;
                            break;
                        }
                        if ((att.data.activity !== this.module.form.businessdata.activity.id) || (att.data.person !== layout.desktop.session.user.distinguishedname)) {
                            flag = false;
                            break;
                        }
                    }
                } else {
                    for (var i = 0; i < this.selectedattachments.length; i  ) {
                        var att = this.selectedattachments[i];
                        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
                        if (!att.data.control.allowedit && att.data.person !== user) {
                            flag = false;
                            break;
                        }
                    }
                }
                if (flag) {
                    this.setactionenabled(this.deleteaction);
                    this.setactionenabled(this.min_deleteaction);
                } else {
                    this.setactiondisabled(this.deleteaction);
                    this.setactiondisabled(this.min_deleteaction);
                }
            } else {
                this.setactiondisabled(this.deleteaction);
                this.setactiondisabled(this.min_deleteaction);
            }
        }
        // else {
        //     // if (!this.options.isdelete){
        //     this.setactiondisabled(this.deleteaction);
        //     this.setactiondisabled(this.min_deleteaction);
        //     // }else{
        //     //     if (this.selectedattachments.length){
        //     //         this.setactionenabled(this.deleteaction);
        //     //         this.setactionenabled(this.min_deleteaction);
        //     //     }else{
        //     //         this.setactiondisabled(this.deleteaction);
        //     //         this.setactiondisabled(this.min_deleteaction);
        //     //     }
        //     // }
        // }
    },
    checkeditattaction: function () {
        if(layout.mobile){
            this.setactiondisabled(this.editattaction);
            this.setactiondisabled(this.min_editattaction);
        } else if (this.options.iseditatt === "hidden" ){
            this.setactionhidden(this.editattaction);
            this.setactionhidden(this.min_editattaction);
        } else if (!this.options.iseditatt || this.options.readonly){
            this.setactiondisabled(this.editattaction);
            this.setactiondisabled(this.min_editattaction);
        }else{
            if (this.selectedattachments.length){
                var flag = false;
                for (var i = 0; i < this.selectedattachments.length; i  ) {
                    var att = this.selectedattachments[i];
                    if (["doc","docx","xls","xlsx","ppt","pptx"].contains(att.data.extension)) {
                        flag = true;
                        break;
                    }
                }
                if(flag){
                    this.setactionenabled(this.editattaction);
                    this.setactionenabled(this.min_editattaction);
                }
            }else{
                this.setactiondisabled(this.editattaction);
                this.setactiondisabled(this.min_editattaction);
            }
        }
    },
    checkpreviewattaction: function () {
        // if(layout.mobile){
        //     this.setactiondisabled(this.previewattaction);
        //     this.setactiondisabled(this.min_previewattaction);
        // } else
        if (this.options.ispreviewatt === "hidden" ){
            this.setactionhidden(this.previewattaction);
            this.setactionhidden(this.min_previewattaction);
        } else if (!this.options.ispreviewatt){
            this.setactiondisabled(this.previewattaction);
            this.setactiondisabled(this.min_previewattaction);
        }else{
            if (this.selectedattachments.length){
                var flag = false;
                for (var i = 0; i < this.selectedattachments.length; i  ) {
                    var att = this.selectedattachments[i];
                    if (this.options.allowpreviewextension.contains(att.data.extension)) {
                        flag = true;
                        break;
                    }
                    if (["doc","docx","xls","xlsx","ppt","pptx"].contains(att.data.extension)) {
                        flag = true;
                        break;
                    }
                }
                if(flag){
                    this.setactionenabled(this.previewattaction);
                    this.setactionenabled(this.min_previewattaction);
                    //this.setactionenabled(this.min_downloadaction);
                }
            }else{
                this.setactiondisabled(this.previewattaction);
                this.setactiondisabled(this.min_previewattaction);
            }
        }
    },
    isattdeleteavailable: function (att) {
        if (this.options.readonly) return false;
        if (this.options.toolbargrouphidden.contains("edit")) return false;
        if (this.options.isdeleteoption === "n" || this.options.isdeleteoption === "hidden") return false;
        var user = layout.session.user.distinguishedname;
        var flag = true;
        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
        if (this.options.isdeleteoption === "o") {
            if (!att.data.control.allowedit && att.data.person !== user) flag = false;
            if (att.data.person !== layout.desktop.session.user.distinguishedname) flag = false;
        } else if (this.options.isdeleteoption === "a") {
            if (!att.data.control.allowedit && att.data.person !== user) flag = false;
            if (att.data.activity !== this.module.form.businessdata.activity.id) flag = false;
        } else if (this.options.isdeleteoption === "ao") {
            if (!att.data.control.allowedit && att.data.person !== user) flag = false;
            if ((att.data.activity !== this.module.form.businessdata.activity.id) || (att.data.person !== layout.desktop.session.user.distinguishedname)) flag = false;
        } else {
            if (!att.data.control.allowedit && att.data.person !== user) flag = false;
        }
        return flag;
    },
    openinofficecontrol: function (att, office) {
        if (office) {
            if (!office.openedattachment || office.openedattachment.id !== att.id) {
                office.save();
                if (this.module.form.businessdata.workcompleted) {
                    mwf.actions.get("x_processplatform_assemble_surface").getattachmentworkcompleted {
                        office.openedattachment = { "id": att.id, "site": this.module.json.name, "name": att.name };
                        office.officeocx.beginopenfrom;
                    }.bind(this));
                } else {
                    mwf.actions.get("x_processplatform_assemble_surface").getattachment {
                        office.openedattachment = { "id": att.id, "site": this.module.json.name, "name": att.name };
                        office.officeocx.beginopenfrom;
                    }.bind(this));
                }
            }
        }
    },
    checkreplaceaction: function () {
        if (this.options.isreplacehidden) return;
        if (this.options.readonly) {
            if (this.options.isreplaceoption === "hidden") {
                this.setactionhidden(this.replaceaction);
                this.setactionhidden(this.min_replaceaction);
            }else{
                this.setactiondisabled(this.replaceaction);
                this.setactiondisabled(this.min_replaceaction);
            }
            return false;
        }
        if (this.options.isreplaceoption === "hidden") {
            this.setactionhidden(this.replaceaction);
            this.setactionhidden(this.min_replaceaction);
        }else if(this.options.isreplaceoption === "n"){
            this.setactiondisabled(this.replaceaction);
            this.setactiondisabled(this.min_replaceaction);
        } else {
            if (this.selectedattachments.length && this.selectedattachments.length === 1) {
                var att = this.selectedattachments[0];
                if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
                var user = layout.session.user.distinguishedname;
                var flag = true;
                if (this.options.isreplaceoption === "o") {
                    flag = att.data.person === layout.desktop.session.user.distinguishedname;
                }
                if (this.options.isreplaceoption === "a") {
                    flag = att.data.activity === this.module.form.businessdata.activity.id;
                }
                if (this.options.isreplaceoption === "ao") {
                    flag = (att.data.person === layout.desktop.session.user.distinguishedname && att.data.activity === this.module.form.businessdata.activity.id);
                }
                if (flag && !att.data.control.allowedit && att.data.person !== user) {
                    flag = false;
                }
                if (flag) {
                    this.setactionenabled(this.replaceaction);
                    this.setactionenabled(this.min_replaceaction);
                } else {
                    this.setactiondisabled(this.replaceaction);
                    this.setactiondisabled(this.min_replaceaction);
                }
            } else {
                this.setactiondisabled(this.replaceaction);
                this.setactiondisabled(this.min_replaceaction);
            }
        }
        // else {
        //     // if (!this.options.isreplace){
        //     this.setactiondisabled(this.replaceaction);
        //     this.setactiondisabled(this.min_replaceaction);
        // }
    },
    replaceattachment: function (e, node) {
        var att = this.selectedattachments[0].data;
        if (this.module.json.isopeninoffice && this.module.json.officecontrolname && (this.options.officefiles.indexof(att.extension) !== -1)) {
            var office = this.module.form.all[this.module.json.officecontrolname];
            if (office) {
                if (this.min_closeofficeaction) this.setactionenabled(this.min_closeofficeaction);
                if (this.closeofficeaction) this.setactionenabled(this.closeofficeaction);
                this.openinofficecontrol(att, office);
            } else {
                if (this.selectedattachments.length && this.selectedattachments.length == 1) {
                    if (this.module) this.module.replaceattachment(e, node, this.selectedattachments[0]);
                }
            }
        } else {
            if (this.selectedattachments.length && this.selectedattachments.length == 1) {
                if (this.module) this.module.replaceattachment(e, node, this.selectedattachments[0]);
            }
        }
    },
    isattreplaceavailable: function (att) {
        if (this.options.readonly) return false;
        if (this.options.toolbargrouphidden.contains("edit")) return false;
        if (this.options.isreplaceoption === "n" || this.options.isreplaceoption === "hidden") return false;
        var user = layout.session.user.distinguishedname;
        var flag = true;
        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
        if (this.options.isreplaceoption === "o") {
            flag = att.data.person === layout.desktop.session.user.distinguishedname;
        }
        if (this.options.isreplaceoption === "a") {
            flag = att.data.activity === this.module.form.businessdata.activity.id;
        }
        if (this.options.isreplaceoption === "ao") {
            flag = (att.data.person === layout.desktop.session.user.distinguishedname && att.data.activity === this.module.form.businessdata.activity.id);
        }
        if (flag && !att.data.control.allowedit && att.data.person !== user) {
            flag = false;
        }
        return flag;
    },
    //checkattachmentorderaction : function(){
    //    if (this.options.readonly){
    //        this.setattachmentsaction("order", false );
    //        return false;
    //    }
    //    if (this.attachments.length){
    //        var user = layout.session.user.distinguishedname;
    //        for (var i=0; i 1) {
                var flag = true;
                var user = layout.session.user.distinguishedname;
                for (var i = 0; i < this.attachments.length; i  ) {
                    var att = this.attachments[i];
                    if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
                    if ((!att.data.control.allowcontrol && !att.data.control.allowedit) && att.data.person !== user) { //|| !att.data.control.allowedit
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    this.setactionenabled(this.orderaction);
                    this.setactionenabled(this.min_orderaction);
                } else {
                    this.setactiondisabled(this.orderaction);
                    this.setactiondisabled(this.min_orderaction);
                }
                //this.setactionenabled(this.min_deleteaction);
            } else {
                this.setactiondisabled(this.orderaction);
                this.setactiondisabled(this.min_orderaction);
                //this.setactiondisabled(this.min_deleteaction);
            }
        }
    },
    isattorderavailable: function (att) {
        if (this.options.readonly) return false;
        if (this.options.toolbargrouphidden.contains("config")) return false;
        var user = layout.session.user.distinguishedname;
        var flag = true;
        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
        if ((!att.data.control.allowcontrol || !att.data.control.allowedit) && att.data.person !== user) {
            flag = false;
        }
        return flag;
    },
    createtopnode: function () {
        if (this.options.title) {
            if (!this.titlenode) this.titlenode = new element("div", { "styles": this.css.titlenode, "text": this.options.title }).inject(this.node);
        }
        if (!this.topnode) {
            this.topnode = new element("div", { "styles": this.css.topnode }).inject(this.node);
        } else {
            this.topnode.empty();
            this.editactionboxnode = null;
            this.editactionsgroupnode = null;
            this.topnode.setstyle("display", "");
            if (this.ishiddentop) {
                //this.container.setstyle("height", this.container.getsize().y   45 );
                //this.node.setstyle("height", this.node.getsize().y   45 );
                if (this.oldcontentscrollnodeheight && this.contentscrollnode) {
                    this.contentscrollnode.setstyle("min-height", this.oldcontentscrollnodeheight);
                    this.oldcontentscrollnodeheight = null;
                }
                this.ishiddentop = false;
            }
        }
        var hiddengroup = this.options.toolbargrouphidden;
        if (hiddengroup.contains("edit") && hiddengroup.contains("read") && hiddengroup.contains("list") &&
            hiddengroup.contains("view") && hiddengroup.contains("config") &&
            !(this.module.json.isopeninoffice && this.module.json.officecontrolname)
        ) {
            if (this.contentscrollnode) {
                this.oldcontentscrollnodeheight = this.contentscrollnode.getstyle("min-height");
                this.contentscrollnode.setstyle("min-height", this.node.getstyle("min-height"));
                this.topnode.setstyle("display", "none");
            }
            this.ishiddentop = true;
        }
        if (!hiddengroup.contains("edit")) this.createeditgroupactions();
        if (!hiddengroup.contains("read")) this.createreadgroupactions();
        if (!hiddengroup.contains("list")) this.createlistgroupactions();
        if (this.module.json.isopeninoffice && this.module.json.officecontrolname) this.createofficegroupactions();
        if (!hiddengroup.contains("config")) this.createconfiggroupactions();
        if (!hiddengroup.contains("view")) this.createviewgroupactions();
        this.checkactions();
    },
    checkactions: function () {
        //    if (this.options.readonly){
        //        this.setreadonly();
        //    }else{
        this.checkuploadaction();
        this.checkdeleteaction();
        this.checkreplaceaction();
        this.checkpreviewattaction();
        this.checkeditattaction();
        //this.checkofficeaction();
        this.checkdownloadaction();
        this.checksizeaction();
        this.checkconfigaction();
        this.checkorderaction();
        this.checkliststyleaction();
        if( this.options.size === "max" ){
            this.checkeditactionbox();
            this.checkconfigactionbox();
        }else if( this.options.size === "min" ){
            this.checkminactionbox();
        }
        //    }
    },
    checkeditactionbox: function(){
        var isshowedit = false;
        ["isupload", "isdelete", "isreplace", "ispreviewatt", "iseditatt"].each(function( key ){
            if( key === "isreplace" && this.options.isreplacehidden )return;
            if( key === "ispreviewatt" && layout.mobile )return;
            if( this.options[key] !== "hidden" )isshowedit = true;
        }.bind(this));
        var isshowread = false;
        ["isdownload"].each(function( key ){
            if( this.options[key] !== "hidden" )isshowread = true;
        }.bind(this));
        if(this.editactionseparatenode)this.editactionseparatenode.setstyle( "display", isshowedit && isshowread ? "" : "none" );
        if(this.editactionboxnode )this.editactionboxnode.setstyle( "display", isshowedit || isshowread ? "" : "none" );
    },
    checkconfigactionbox: function(){
        var isshowconfig = false;
        ["isconfig"].each(function( key ){
            if( this.options[key] !== "hidden" )isshowconfig = true;
        }.bind(this));
        var isshoworder = false;
        ["isorder"].each(function( key ){
            if( this.options[key] !== "hidden" )isshoworder = true;
        }.bind(this));
        if(this.configactionseparatenode)this.configactionseparatenode.setstyle( "display", isshowconfig && isshoworder ? "" : "none" );
        if(this.configactionboxnode )this.configactionboxnode.setstyle( "display", isshowconfig || isshoworder ? "" : "none" );
    },
    checkminactionbox: function(){
        var isshowleft = false;
        var hiddengroup = this.options.toolbargrouphidden || [];
        if( this.min_closeofficeaction ){
            isshowleft = true;
        }else {
            ["isupload", "isdelete", "isreplace", "isdownload", "isorder"].each(function (key) {
                if (key === "isreplace" && this.options.isreplacehidden) return;
                if (this.options[key] !== "hidden") isshowleft = true;
            }.bind(this));
            if( isshowleft ){
                if( hiddengroup.contains("edit") && hiddengroup.contains("read") && hiddengroup.contains("config") ){
                    isshowleft = false;
                }
            }
        }
        var isshowright = this.options.issizechange && !hiddengroup.contains("view");
        if(this.minseparatenode)this.minseparatenode.setstyle( "display", isshowleft && isshowright ? "" : "none" );
        if(this.minactionareanode )this.minactionareanode.setstyle( "display", isshowleft || isshowright ? "" : "none" );
    },
    checkattachmentconfigaction: function () {
        if (this.options.readonly || !this.attachments.length) {
            this.setattachmentsaction("config", false);
            return false;
        }
        var currentuser = layout.session.user.distinguishedname;
        for (var i = 0; i < this.attachments.length; i  ) {
            var att = this.attachments[i];
            var attuser = att.data.person || att.data.creatoruid;
            this.setattachmentaction(att, "config", att.data.control.allowcontrol && attuser===currentuser);
        }
    },
    checkconfigaction: function () {
        if( this.options.isconfig === "hidden" ){
            this.setactionhidden(this.configaction);
            return;
        }
        if( !this.options.isconfig ){
            this.setactiondisabled(this.configaction);
            return;
        }
        this.checkattachmentconfigaction();
        if (this.options.readonly) {
            this.setactiondisabled(this.configaction);
            if (this.checktextaction) this.setactiondisabled(this.checktextaction);
            return false;
        }
        if (this.selectedattachments.length) {
            var flag = true;
            var user = layout.session.user.distinguishedname;
            for (var i = 0; i < this.selectedattachments.length; i  ) {
                var att = this.selectedattachments[i];
                if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
                if ((!att.data.control.allowcontrol) && att.data.person !== user) { //|| !att.data.control.allowedit
                    flag = false;
                    break;
                }
            }
            if (flag) {
                this.setactionenabled(this.configaction);
            } else {
                this.setactiondisabled(this.configaction);
            }
            //this.setactionenabled(this.min_deleteaction);
        } else {
            this.setactiondisabled(this.configaction);
            //this.setactiondisabled(this.min_deleteaction);
        }
        if (this.checktextaction) {
            this.setactiondisabled(this.checktextaction);
            if (this.selectedattachments.length && this.selectedattachments.length === 1) {
                var att = this.selectedattachments[0];
                if (this.options.images.indexof(att.data.extension.tolowercase()) !== -1) {
                    this.setactionenabled(this.checktextaction);
                }
            }
        }
    },
    isattconfigavailable: function (att) {
        if (this.options.readonly) return false;
        if (this.options.isconfig === "hidden") return false;
        if (this.options.toolbargrouphidden.contains("config")) return false;
        var user = layout.session.user.distinguishedname;
        var flag = true;
        if (!att.data.person && att.data.creatoruid) att.data.person = att.data.creatoruid;
        if (!att.data.control.allowcontrol && att.data.person !== user) {
            flag = false;
        }
        return flag;
    },
    createeditgroupactions: function () {
        if (!this.editactionboxnode) this.editactionboxnode = new element("div", { "styles": this.css.actionsboxnode }).inject(this.topnode);
        if (!this.editactionsgroupnode) this.editactionsgroupnode = new element("div", { "styles": this.css.actionsgroupnode }).inject(this.editactionboxnode);
        this.uploadaction = this.createaction(this.editactionsgroupnode, "upload", o2.lp.widget.upload, function (e, node) {
            this.uploadattachment(e, node);
        }.bind(this));
        this.deleteaction = this.createaction(this.editactionsgroupnode, "delete", o2.lp.widget["delete"], function (e, node) {
            this.deleteattachment(e, node);
        }.bind(this));
        //if(!layout.mobile){
            this.previewattaction = this.createaction(this.editactionsgroupnode, "previewatt", o2.lp.widget["previewatt"], function (e, node) {
                this.previewattachment(e, node);
            }.bind(this));
        //}
        if(!layout.mobile){
            this.editattaction = this.createaction(this.editactionsgroupnode, "editatt", o2.lp.widget["editatt"], function (e, node) {
                this.editattachment(e, node);
            }.bind(this));
        }
        if (!this.options.isreplacehidden) {
            this.replaceaction = this.createaction(this.editactionsgroupnode, "replace", o2.lp.widget.replace, function (e, node) {
                this.replaceattachment(e, node);
            }.bind(this));
        }
        // this.officeaction = this.createaction(this.editactionsgroupnode, "office", o2.lp.widget.office, function(e, node){
        //     this.openinofficecontrol(e, node);
        // }.bind(this));
        if (!this.options.toolbargrouphidden.contains("read")) this.editactionseparatenode = this.createseparate(this.editactionsgroupnode);
    },
    createconfiggroupactions: function () {
        this.configactionboxnode = new element("div", { "styles": this.css.actionsboxnode }).inject(this.topnode);
        this.configactionsgroupnode = new element("div", { "styles": this.css.actionsgroupnode }).inject(this.configactionboxnode);
        this.configaction = this.createaction(this.configactionsgroupnode, "config", mwf.lp.widget.configattachment, function (e, node) {
            this.configattachment(e, node);
        }.bind(this));
        // if (this.options.checktextenable) {
        //     this.checktextaction = this.createaction(this.configactionsgroupnode, "check", mwf.lp.widget.checkocrtext, function (e, node) {
        //         this.checkimagetex(e, node);
        //     }.bind(this));
        // }
        this.configactionseparatenode = this.createseparate(this.configactionsgroupnode);
        this.orderaction = this.createaction(this.configactionsgroupnode, "order", mwf.lp.widget.order, function (e, node) {
            this.orderattachment(e, node);
        }.bind(this));
        if (this.configaction) this.setactiondisabled(this.configaction);
        if (this.checktextaction) this.setactiondisabled(this.checktextaction);
    },
    createofficegroupactions: function () {
        this.officeactionboxnode = new element("div", { "styles": this.css.actionsboxnode }).inject(this.topnode);
        this.officeactionsgroupnode = new element("div", { "styles": this.css.actionsgroupnode }).inject(this.officeactionboxnode);
        this.closeofficeaction = this.createaction(this.officeactionsgroupnode, "closeoffice", mwf.lp.widget.closeoffice, function (e, node) {
            this.closeattachmentoffice(e, node);
        }.bind(this));
        if (this.closeofficeaction) this.setactiondisabled(this.closeofficeaction);
    },
    loadminactions: function () {
        var hiddengroup = this.options.toolbargrouphidden;
        if (!hiddengroup.contains("edit")) {
            this.min_uploadaction = this.createaction(this.minactionareanode, "upload", mwf.lp.widget.upload, function (e, node) {
                this.uploadattachment(e, node);
            }.bind(this));
            this.min_deleteaction = this.createaction(this.minactionareanode, "delete", mwf.lp.widget["delete"], function (e, node) {
                this.deleteattachment(e, node);
            }.bind(this));
            if (!this.options.isreplacehidden) {
                this.min_replaceaction = this.createaction(this.minactionareanode, "replace", mwf.lp.widget.replace, function (e, node) {
                    this.replaceattachment(e, node);
                }.bind(this));
            }
            if(!layout.mobile){
                this.min_editattaction = this.createaction(this.minactionareanode, "editatt", o2.lp.widget["editatt"], function (e, node) {
                    this.editattachment(e, node);
                }.bind(this));
            }
        }
        if (!hiddengroup.contains("read")) {
            this.min_downloadaction = this.createaction(this.minactionareanode, "download", mwf.lp.widget.download
                , function (e, node) {
                    this.downloadattachment(e, node);
                }.bind(this));
            //if(!layout.mobile){
                this.min_previewattaction = this.createaction(this.minactionareanode, "previewatt", o2.lp.widget["previewatt"], function (e, node) {
                    this.previewattachment(e, node);
                }.bind(this));
            //}
        }
        if (!hiddengroup.contains("config")) {
            this.min_orderaction = this.createaction(this.minactionareanode, "order", mwf.lp.widget.order, function (e, node) {
                this.orderattachment(e, node);
            }.bind(this));
        }
        if (this.module.json.isopeninoffice && this.module.json.officecontrolname) {
            this.min_closeofficeaction = this.createaction(this.minactionareanode, "closeoffice", mwf.lp.widget.closeoffice, function (e, node) {
                this.closeattachmentoffice(e, node);
            }.bind(this));
            if (this.min_closeofficeaction) this.setactiondisabled(this.closeofficeaction);
        }
        if (!hiddengroup.contains("edit") || !hiddengroup.contains("read")) {
            this.minseparatenode = this.createseparate(this.minactionareanode);
        }
        //this.createseparate(this.configactionsgroupnode);
        if (this.options.issizechange) {
            //this.createseparate(this.minactionareanode);
            if (!hiddengroup.contains("view")) {
                this.sizeaction = this.createaction(this.minactionareanode, "max", mwf.lp.widget.min, function () {
                    this.changecontrollersize();
                }.bind(this));
            }
        }
    },
    closeattachmentoffice: function () {
        var office = this.module.form.all[this.module.json.officecontrolname];
        if (office) {
            office.openfile();
            if (this.min_closeofficeaction) this.setactiondisabled(this.min_closeofficeaction);
            if (this.closeofficeaction) this.setactiondisabled(this.closeofficeaction);
        }
    },
    configattachment: function(){
        o2.actions.load("x_general_assemble_control").securityclearanceaction["enable"]().then(function(json){
            if (json.data.enable){
                this.configattachmentsecurity();
            }else{
                this.configattachmentpower();
            }
        }.bind(this));
    },
    getsecuritydefaultlabellist: function(){
        if (this.securitylabellist) return promise.resolve(this.securitylabellist);
        var _self = this
        return o2.actions.load("x_general_assemble_control").securityclearanceaction["object"]().then(function(json){
            return _self.securitylabellist = json.data;
        });
    },
    getsecuritylabellist: function(){
        var _self = this;
        return this.getsecuritydefaultlabellist().then(function(list){
            var label = _self.module.form.businessdata.data.objectsecurityclearance;
            label = (!label && label!==0) ? infinity : label;
            var o = {};
            object.keys(list).foreach(function(k){
                if (list[k]<=label){
                    o[k] = list[k];
                }
            });
            return o;
        })
    },
    configattachmentsecurity: function(){
        var lp = mwf.xapplication.process.xform.lp;
        var css = this.module.form.css;
        var node = new element("div", { "styles": (layout.mobile ? css.attachmentpermissionnode_mobile : css.attachmentpermissionnode) }).inject(this.node);
        var attnames = new element("div", { "styles": css.attachmentpermissionnamesnode }).inject(node);
        var attnamestitle = new element("div", { "styles": css.attachmentpermissionnamestitlenode, "text": lp.attachmentpermissioninfo }).inject(attnames);
        var attnamesarea = new element("div", { "styles": css.attachmentpermissionnamesareanode }).inject(attnames);
        if (this.selectedattachments.length) {
            this.selectedattachments.each(function (att) {
                var attnode = new element("div", { "styles": css.attachmentpermissionattnode, "text": att.data.name }).inject(attnamesarea);
            }.bind(this));
        }
        var label = "";
        if (this.selectedattachments.length){
            for (var i=0; i{
                return object.keys(list).find((key)=>{
                    return list[key]===data.objectsecurityclearance;
                });
            });
        }
        if (this.options.size=="min"){
            this.attachments.push(new o2.widget.attachmentcontroller.attachmentmin(data, this, messageid, ischeckposition));
        }else{
            this.attachments.push(new o2.widget.attachmentcontroller.attachment(data, this, messageid, ischeckposition));
        }
        this.checkactions();
    }
});
/** @class attachment 附件组件。
 * @o2cn 附件
 * @example
 * //可以在脚本中获取该组件
 * //方法1:
 * var attachment = this.form.get("name"); //获取组件
 * //方法2
 * var attachment = this.target; //在组件事件脚本中获取
 * @extends mwf.xapplication.process.xform.$module
 * @o2category formcomponents
 * @o2range {process|cms}
 * @hideconstructor
 */
mwf.xapplication.process.xform.attachment = mwf.appattachment = new class(
    /** @lends mwf.xapplication.process.xform.attachment# */
{
    extends: mwf.app$module,
    options: {
        /**
         * @event mwf.xapplication.process.xform.attachment#postload
         * @ignore
         */
        "moduleevents": [
            /**附件组件(this.target)加载前触发。
             * @event mwf.xapplication.process.xform.attachment#queryload
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "queryload",
            /**附件容器(this.target.attachmentcontroller)初始化之前触发,可以通过this.event获取附件容器的选项。
             * @event mwf.xapplication.process.xform.attachment#queryloadcontroller
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "queryloadcontroller",
            /**附件容器(this.target.attachmentcontroller)初始化之后,加载之前触发。
             * @event mwf.xapplication.process.xform.attachment#loadcontroller
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "loadcontroller",
            /**附件容器(this.target.attachmentcontroller)加载之后触发,但这时还未加载具体的附件。
             * @event mwf.xapplication.process.xform.attachment#postloadcontroller
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "postloadcontroller",
            /**
             * 附件组件(this.target)加载完成后触发。这时候附件容器和每个附件都已加载完成。
             * @event mwf.xapplication.process.xform.attachment#load
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "load",
            /**
             * 附件组件(this.target)加载完成后触发。这时候附件容器和每个附件都已加载完成。
             * @event mwf.xapplication.process.xform.attachment#afterload
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "afterload",
            /**
             * 加载每个附件前触发。本事件中可以通过this.event获取加载的附件对象
             * @event mwf.xapplication.process.xform.attachment#beforeloadattachment
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "beforeloadattachment",
            /**
             * 加载每个附件后触发。本事件中可以通过this.event获取加载的附件对象
             * @event mwf.xapplication.process.xform.attachment#loadattachment
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "loadattachment",
            /**
             * 附件上传前触发。本事件中可以通过this.event获取上传的文件数组
             * @event mwf.xapplication.process.xform.attachment#beforeupload
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "beforeupload",
            /**
             * 附件上传后触发。本事件中可以通过this.event获取上传附件的数据
             * @event mwf.xapplication.process.xform.attachment#upload
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "upload",
            /**
             * 删除附件前触发。本事件中可以通过this.event获取被删附件的数据
             * @event mwf.xapplication.process.xform.attachment#delete
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "delete",
            /**
             * 删除附件后触发。本事件中可以通过this.event获取被删附件的数据
             * @event mwf.xapplication.process.xform.attachment#afterdelete
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "afterdelete",
            /**
             * 附件有变化的时候会被触发,包括上传、替换、删除、排序
             * @event mwf.xapplication.process.xform.attachment#change
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "change",
            /**
             * 下载附件后触发。本事件中可以通过this.event获取被下载附件对象
             * @event mwf.xapplication.process.xform.attachment#download
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "download",
            /**
             * 打开附件后触发。本事件中可以通过this.event获取被打开附件对象
             * @event mwf.xapplication.process.xform.attachment#open
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "open",
            /**
             * 选中附件后触发。本事件中可以通过this.event获取被选中的附件对象
             * @event mwf.xapplication.process.xform.attachment#select
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "select",
            /**
             * 取消选中附件后触发。本事件中可以通过this.event获取被取消选中的附件对象
             * @event mwf.xapplication.process.xform.attachment#unselect
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zts|组件事件说明}
             */
            "unselect"
        ]
    },
    initialize: function (node, json, form, options) {
        this.node = $(node);
        this.node.store("module", this);
        this.json = json;
        this.form = form;
        this.field = true;
        this.fieldmoduleloaded = false;
    },
    _loaduserinterface: function () {
        this.node.empty();
        if (this.form.businessdata.work.starttime){
            this.loadattachmentcontroller();
            this.fireevent("afterload");
        }
        this.fieldmoduleloaded = true;
    },
    /*
     * @summary 重新加载附件。会触发queryloadcontroller、loadcontroller和postloadcontroller事件。
     * @example
     *  this.form.get("fieldid").reload(); //重新加载
     */
    reload: function(){
        this.node.empty();
        if (this.form.businessdata.work.starttime){
            this.loadattachmentcontroller();
        }
    },
    getflagdefaultfalse: function( key ){
        if( this.json[key] === "y" || this.json[key] === "true" )return true;
        if( this.json[key] === "hidden" )return "hidden";
        return false;
    },
    getflagdefaulttrue: function( key ){
        if( this.json[key] === "n" || this.json[key] === "false" )return false;
        if( this.json[key] === "hidden" )return "hidden";
        return true;
    },
    loadattachmentcontroller: function () {
        //mwf.require("mwf.widget.attachmentcontroller", function() {
        var options = {
            "style": this.json.style || "default",
            "title": mwf.xapplication.process.xform.lp.attachmentarea,
            "liststyle": this.json.liststyle || "icon",
            "size": this.json.size || "max",
            "resize": this.getflagdefaultfalse("resize"),
            "attachmentcount": this.json.attachmentcount || 0,
            "isupload": this.getflagdefaultfalse("isupload"),
            "isdelete": this.getflagdefaultfalse("isdelete"),
            "isreplace": this.getflagdefaultfalse("isreplace"),
            "isdownload": this.getflagdefaultfalse("isdownload"),
            "ispreviewatt": this.getflagdefaultfalse("ispreviewatt"),
            "iseditatt": this.getflagdefaultfalse("iseditatt"),
            "issizechange": this.getflagdefaultfalse("issizechange"),
            "isconfig": this.getflagdefaulttrue("isconfig"),
            "isorder": this.getflagdefaulttrue("isorder"),
            "dblclick": this.json.dblclick,
            "readonly": (this.json.readonly === "y" || this.json.readonly === "true" || this.json.isreadonly || this.form.json.isreadonly),
            "availableliststyles": this.json.availableliststyles ? this.json.availableliststyles : ["list", "seq", "icon", "preview"],
            "isdeleteoption": this.json.isdelete,
            "isreplaceoption": this.json.isreplace,
            "toolbargrouphidden": this.json.toolbargrouphidden || [],
            "onorder": function () {
                this.fireevent("change");
                this.save();
            }.bind(this)
        };
        if (this.readonly) options.readonly = true;
        if (this.form.json.attachmentstyle) {
            options = object.merge(options, this.form.json.attachmentstyle);
        }
        //this.attachmentcontroller = new mwf.widget.atter(this.node, this, options);
        this.fireevent("queryloadcontroller", [options]);
        /**
         * @summary 附件容器.
         * @member {mwf.xapplication.process.xform.attachmentcontroller}
         * @example
         * var attachmentcontroller = this.form.get("fieldid").attachmentcontroller; //获取附件容器
         * var attachmentlist = attachmentcontroller.attachments; //获取所有的附件
         * var attachmentdata = attachmentlist[0].data; //获取第一个附件的数据
         */
        this.attachmentcontroller = new mwf.xapplication.process.xform.attachmentcontroller(this.node, this, options);
        this.fireevent("loadcontroller");
        this.attachmentcontroller.load();
        this.fireevent("postloadcontroller");
        this.form.businessdata.attachmentlist.each(function (att) {
            //if (att.site===this.json.id || (this.json.isopeninoffice && this.json.officecontrolname===att.site)) this.attachmentcontroller.addattachment(att);
            if (att.site === (this.json.site || this.json.id)) this.attachmentcontroller.addattachment(att);
        }.bind(this));
        this.setattachmentbusinessdata();
        this.addevent("change", function () {
            if(this.validationmode)this.validationmode();
        }.bind(this))
        //}.bind(this));
    },
    setattachmentbusinessdata: function () {
        if (this.attachmentcontroller) {
            if (this.attachmentcontroller.attachments.length) {
                var values = this.attachmentcontroller.attachments.map(function (d) {
                    return d.data.name;
                });
                this._setbusinessdata(values);
            } else {
                this._setbusinessdata([]);
            }
        }
    },
    save: function(){
        if( this.json.id.indexof("..") > 0 )return;
        if (this.attachmentcontroller) {
            var values = [];
            if (this.attachmentcontroller.attachments.length) {
                values = this.attachmentcontroller.attachments.map(function (d) {
                    return d.data.name;
                });
            }
            var modifeddata = {};
            modifeddata[ this.json.id ] = values;
            this.form.workaction.savedata(function () {
                if(this.form.businessdata.originaldata)this.form.businessdata.originaldata[this.json.id] = values;
            }.bind(this), function(){
                return true;
            }, this.form.businessdata.work.id, modifeddata, false);
        }
    },
    _loadevents: function (editorconfig) {
        object.each(this.json.events, function (e, key) {
            if (e.code) {
                if (this.options.moduleevents.indexof(key) !== -1) {
                    this.addevent(key, function (event) {
                        return this.form.macro.fire(e.code, this, event);
                    }.bind(this));
                } else {
                    this.node.addevent(key, function (event) {
                        return this.form.macro.fire(e.code, this, event);
                    }.bind(this));
                }
            }
        }.bind(this));
    },
    isempty : function(){
        var data = this.getdata();
        if( typeof(data) === "array" ){
            return data.length == 0
        }else{
            return !data;
        }
    },
    /**
     * @summary 获取当前组件所有附件的标题.如果没有附件返回null
     * @example
     * var getattachmentnames = this.form.get("name").getdata();
     * @return {stringarray|null} 附件标题.
     */
    getdata: function () {
        return (this.attachmentcontroller) ? this.attachmentcontroller.getattachmentnames() : null;
    },
    createuploadfilenode: function (files) {
        var accept = "*";
        if (!this.json.attachmentexttype || (this.json.attachmentexttype.indexof("other") != -1 && !this.json.attachmentextothertype)) {
        } else {
            accepts = [];
            var othertype = this.json.attachmentextothertype;
            this.json.attachmentexttype.each(function (v) {
                switch (v) {
                    case "word":
                        accepts.push(".doc, .docx, .dot, .dotx");
                        break;
                    case "excel":
                        accepts.push(".xls, .xlsx, .xlsm, .xlt, .xltx");
                        break;
                    case "ppt":
                        accepts.push(".pptx, .ppt, .pot, .potx, .potm");
                        break;
                    case "txt":
                        accepts.push(".txt");
                        break;
                    case "pic":
                        accepts.push(".bmp, .gif, .psd, .jpeg, .jpg, .png");
                        break;
                    case "pdf":
                        accepts.push(".pdf");
                        break;
                    case "zip":
                        accepts.push(".zip, .rar");
                        break;
                    case "audio":
                        accepts.push(".mp3, .wav, .wma, .wmv, .flac, .ape");
                        break;
                    case "video":
                        accepts.push(".avi, .mkv, .mov, .ogg, .mp4, .mpeg");
                        break;
                    case "other":
                        if (this.json.attachmentextothertype) accepts.push(this.json.attachmentextothertype);
                        break;
                }
            }.bind(this));
            accept = accepts.join(", ");
        }
        var size = 0;
        if (this.json.attachmentsize) size = this.json.attachmentsize.tofloat();
        this.attachmentcontroller.douploadattachment({ "site": (this.json.site || this.json.id) }, this.form.workaction.action, "uploadattachment", { "id": this.form.businessdata.work.id }, null, function (o) {
            if (o.id) {
                this.form.workaction.getattachment(o.id, this.form.businessdata.work.id, function (json) {
                    if (json.data) {
                        if (!json.data.control) json.data.control = {};
                        this.form.businessdata.attachmentlist.push(json.data);
                        this.attachmentcontroller.addattachment(json.data, o.messageid);
                    }
                    this.attachmentcontroller.checkactions();
                    this.setattachmentbusinessdata();
                    this.fireevent("upload", [json.data]);
                    this.fireevent("change");
                    this.save();
                }.bind(this))
            }
            this.attachmentcontroller.checkactions();
        }.bind(this), function (files) {
            if (files.length) {
                if ((files.length   this.attachmentcontroller.attachments.length > this.attachmentcontroller.options.attachmentcount) && this.attachmentcontroller.options.attachmentcount > 0) {
                    var content = mwf.xapplication.process.xform.lp.uploadmore;
                    content = content.replace("{n}", this.attachmentcontroller.options.attachmentcount);
                    this.form.notice(content, "error");
                    return false;
                }
            }
            this.uploadingfiles = files;
            if (this.json.uploadvalidation && this.json.uploadvalidation.code) {
                var flag = this.form.macro.exec(this.json.uploadvalidation.code, this);
                if (!flag) flag = mwf.xapplication.process.xform.lp.notattachmentvalidation;
                if (flag.tostring()!="true"){
                    this.form.notice(flag, "error");
                    return false;
                }
            }
            this.fireevent("beforeupload", [files]);
            return true;
        }.bind(this), true, accept, size, function (o) { //错误的回调
            if (o.messageid && this.attachmentcontroller.messageitemlist) {
                var message = this.attachmentcontroller.messageitemlist[o.messageid];
                if( message && message.node )message.node.destroy();
            }
        }.bind(this), files);
    },
    uploadattachment: function (e, node, files) {
        if (window.o2android && window.o2android.postmessage) {
            var body = {
                type: "uploadattachment",
                data: {
                    site: this.json.site || this.json.id
                }
            };
            window.o2android.postmessage(json.stringify(body));
        } else if (window.o2android && window.o2android.uploadattachment) {
            window.o2android.uploadattachment((this.json.site || this.json.id));
        } else if (window.webkit && window.webkit.messagehandlers && window.webkit.messagehandlers.uploadattachment) {
            window.webkit.messagehandlers.uploadattachment.postmessage({ "site": (this.json.site || this.json.id) });
        } else {
            // if (!this.uploadfileareanode){
            this.createuploadfilenode(files);
            // }
            // this.fileuploadnode.click();
        }
    },
    deleteattachments: function (e, node, attachments) {
        var names = [];
        attachments.each(function (attachment) {
            names.push(attachment.data.name);
        }.bind(this));
        // if ((window.o2 && window.o2.replaceattachment) || (window.webkit && window.webkit.messagehandlers)){
        //     if (window.confirm(mwf.xapplication.process.xform.lp.deleteattachment "( " names.join(", ") " )")){
        //         while (attachments.length){
        //             attachment = attachments.shift();
        //             this.deleteattachment(attachment);
        //         }
        //     }
        // }else {
        // var tmpnode = new element("div", {
        //     "styles": {
        //         "background-color": "#0000ff",
        //         "border-style": "solid",
        //         "border-color": "#fff",
        //         "border-width": "1",
        //         "box-shadow": "0px 0px 20px #999",
        //         "z-index": "20000",
        //         "overflow": "hidden",
        //         "font-size": "14px",
        //         "height": "160px",
        //         "padding": "0px",
        //         "width": "300px",
        //         "position": "absolute",
        //         "top": "50px",
        //         "left": "20px",
        //         "opacity": 1,
        //         "border-radius": "5px"
        //     }
        // }).inject(this.form.app.content);
        var _self = this;
        this.form.confirm("warn", e, mwf.xapplication.process.xform.lp.deleteattachmenttitle, mwf.xapplication.process.xform.lp.deleteattachment   "( "   o2.txt(names.join(", "))   " )", 300, 120, function () {
            while (attachments.length) {
                var attachment = attachments.shift();
                _self.deleteattachment(attachment);
            }
            this.close();
        }, function () {
            this.close();
        }, null, null, this.form.json.confirmstyle);
    },
    editattachment: function (attachments) {
        var att = attachments[0];
        switch (this.json.officetool) {
            case "libreoffice":
                this.editlibreoffice(att);
                break;
            case "officeonline":
                this.editofficeonline(att);
                break;
            case "onlyoffice":
                this.editonlyoffice(att);
                break;
            case "yozooffice":
                this.edityozooffice(att);
                break;
            case "wpsoffice":
                this.editwpsoffice(att);
                break;
            default :
                this.editlibreoffice(att);
        }
    },
    edityozooffice : function (att){
        var jars ;
        if(att.data.activity){
            jars = "x_processplatform_assemble_surface";
        }
        if(att.data.categoryid){
            jars = "x_cms_assemble_control";
        }
        var options = {
            "documentid": att.data.id,
            "mode":"write",
            "jars" : jars,
            "appid":  "yozoofficeeditor"   att.data.id
        };
        layout.openapplication(null, "yozoofficeeditor", options);
    },
    editofficeonline : function (att){
        var jars ;
        if(att.data.activity){
            jars = "x_processplatform_assemble_surface";
        }
        if(att.data.categoryid){
            jars = "x_cms_assemble_control";
        }
        var options = {
            "documentid": att.data.id,
            "mode":"write",
            "jars" : jars,
            "appid":  "officeonlineeditor"   att.data.id
        };
        layout.openapplication(null, "officeonlineeditor", options);
    },
    editonlyoffice : function (att){
        var jars ;
        if(att.data.activity){
            jars = "x_processplatform_assemble_surface";
        }
        if(att.data.categoryid){
            jars = "x_cms_assemble_control";
        }
        var options = {
            "documentid": att.data.id,
            "mode":"edit",
            "jars" : jars,
            "appid":  "onlyofficeeditor"   att.data.id
        };
        layout.openapplication(null, "onlyofficeeditor", options);
    },
    editwpsoffice : function (att){
        var jars ;
        if(att.data.activity){
            jars = "x_processplatform_assemble_surface";
        }
        if(att.data.categoryid){
            jars = "x_cms_assemble_control";
        }
        var options = {
            "documentid": att.data.id,
            "mode":"write",
            "jars" : jars,
            "appid":  "wpsofficeeditor"   att.data.id
        };
        layout.openapplication(null, "wpsofficeeditor", options);
    },
    editlibreoffice : function (att){
        this.form.notice("not support");
    },
    previewattachment: function (attachments) {
        var att = attachments[0];
        new mwf.xapplication.process.xform.attachmenpreview(att,this);
    },
    deleteattachment: function (attachment) {
        this.fireevent("delete", [attachment.data]);
        var id = attachment.data.id;
        this.form.workaction.deleteattachment(attachment.data.id, this.form.businessdata.work.id, function (josn) {
            this.attachmentcontroller.removeattachment(attachment);
            this.attachmentcontroller.checkactions();
            for( var i=0; i";
        // this.replacefileareanode.set("html", html);
        //
        // this.filereplacenode = this.replacefileareanode.getfirst();
        // this.filereplacenode.addevent("change", function(){
        //
        //     var files = this.filereplacenode.files;
        //     if (files.length){
        //         for (var i = 0; i < files.length; i  ) {
        //             var file = files.item(i);
        //
        //             var formdata = new formdata();
        //             formdata.append('file', file);
        //         //    formdata.append('site', this.json.id);
        //
        //             this.form.workaction.replaceattachment(attachment.data.id, this.form.businessdata.work.id ,function(o, text){
        //                 this.form.workaction.getattachment(attachment.data.id, this.form.businessdata.work.id, function(json){
        //                     attachment.data = json.data;
        //                     attachment.reload();
        //                     this.attachmentcontroller.checkactions();
        //                 }.bind(this))
        //             }.bind(this), null, formdata, file);
        //         }
        //     }
        // }.bind(this));
    },
    replaceattachmentfile: function (attachment) {
        //if (!this.replacefileareanode){
        this.createreplacefilenode(attachment);
        // }
        // this.filereplacenode.click();
    },
    querydownload : function( att ){
        if( this.json.events && this.json.events.querydownload && this.json.events.querydownload.code ){
            var flag = this.form.macro.exec(this.json.events.querydownload.code, att );
            if( flag === false ){
                return false
            }else{
                return true;
            }
        }else{
            return true;
        }
    },
    queryopen : function( att ){
        if( this.json.events && this.json.events.queryopen && this.json.events.queryopen.code ){
            var flag = this.form.macro.exec(this.json.events.queryopen.code, att );
            if( flag === false ){
                return false
            }else{
                return true;
            }
        }else{
            return true;
        }
    },
    //小程序文件是否支持打开
    checkminiprogramfile: function(ext) {
        var exts = ["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"];
        for(var i = 0; i < exts.length; i  ){
            if(ext === exts[i]){
                return true;
            }
        }
        return false;
    },
    addmessage: function(data) {
        if (layout.desktop.message) {
            var msg = {
                "subject": mwf.xapplication.process.xform.lp.taskprocessed,
                "content": data
            };
            layout.desktop.message.addtooltip(msg);
            return layout.desktop.message.addmessage(msg);
        } else {
            if (this.app.inbrowser) {
                this.inbrowserdkg(data);
            }
        }
    },
    downloadattachment: function (e, node, attachments) {
        var data = this.form.businessdata;
        var isworkcompleted = data.work && data.work.completedtime;
        var workid = data.work.id;
        var actionurl = "getattachmenturl";
        var actiondata = "getattachmentstream";
        var urlworkkey = "work";
        if (isworkcompleted){
            workid = (data.workcompleted) ? data.workcompleted.id : workid;
            actionurl = "getattachmentworkcompletedurl";
            actiondata = "getworkcompletedattachmentstream";
            urlworkkey = "workcompleted";
        }
        var client = this.getdownloadattachmentclienttype();
        console.log(client " 客户端");
        attachments.each(function (att) {
            if( !this.querydownload( att ) )return;
            switch (client){
                case "flutter":
                    var body = {
                        type: "downloadattachment",
                        data: {
                            attachmentid: att.data.id
                        }
                    };
                    window.o2android.postmessage(json.stringify(body));
                    break
                case "android":
                    window.o2android.downloadattachment(att.data.id);
                    break;
                case "ios":
                    window.webkit.messagehandlers.downloadattachment.postmessage({ "id": att.data.id, "site": (this.json.site || this.json.id) });
                    break;
                case "wx":
                    if(this.checkminiprogramfile(att.data.extension)) {
                        wx.miniprogram.navigateto({
                            url: '../file/download?attid='   att.data.id   '&type=work&' urlworkkey '='   workid
                        });
                    }
                    break;
                case "mobile":
                    this.form.workaction[actionurl](att.data.id, workid, function (url) {
                        var xtoken = layout.session.token;
                        // window.location = o2.filter;
                        window.location = url   "?" o2.tokenname "="   xtoken;
                    });
                    break;
                case "pcclient":
                    this.form.workaction[actionurl](att.data.id, workid, function (url) {
                        var xtoken = layout.session.token;
                        // window.location = o2.filter;
                        window.location = url   "?" o2.tokenname "="   xtoken;
                    });
                    break;
                default:
                    this.form.workaction[actiondata](att.data.id, workid);
            }
            this.fireevent("download",[att]);
        }.bind(this));
    },
    getdownloadattachmentclienttype: function(){
        if (window.o2android && window.o2android.postmessage) {
            return "flutter";
        }
        if (window.o2android && window.o2android.downloadattachment){
            return "android";
        }
        if (window.webkit && window.webkit.messagehandlers && window.webkit.messagehandlers.downloadattachment){
            return "ios";
        }
        if (window.wx && window.__wxjs_environment === 'miniprogram'){
            return "wx";
        }
        if (layout.mobile){
            return "mobile";
        }
        if (o2.thirdparty.isdingdingpc() || o2.thirdparty.isqywxpc()){
            return "pcclient";
        }
        return "pc";
    },
    openattachment: function (e, node, attachments) {
        var data = this.form.businessdata;
        var isworkcompleted = data.work && data.work.completedtime;
        var workid = data.work.id;
        var actionurl = "getattachmenturl";
        var actiondata = "getattachmentdata";
        var urlworkkey = "work";
        if (isworkcompleted){
            workid = (data.workcompleted) ? data.workcompleted.id : workid;
            actionurl = "getattachmentworkcompletedurl";
            actiondata = "getworkcompletedattachmentdata";
            urlworkkey = "workcompleted";
        }
        var client = this.getdownloadattachmentclienttype();
        console.log(client " 客户端");
        attachments.each(function (att) {
            if( !this.queryopen( att ) )return;
            switch (client){
                case "flutter":
                    var body = {
                        type: "downloadattachment",
                        data: {
                            attachmentid: att.data.id
                        }
                    };
                    window.o2android.postmessage(json.stringify(body));
                    break
                case "android":
                    window.o2android.downloadattachment(att.data.id);
                    break;
                case "ios":
                    window.webkit.messagehandlers.downloadattachment.postmessage({ "id": att.data.id, "site": (this.json.site || this.json.id) });
                    break;
                case "wx":
                    if(this.checkminiprogramfile(att.data.extension)) {
                        wx.miniprogram.navigateto({
                            url: '../file/download?attid='   att.data.id   '&type=work&' urlworkkey '='   workid
                        });
                    }
                    break;
                case "mobile":
                    this.form.workaction[actionurl](att.data.id, workid, function (url) {
                        var xtoken = layout.session.token;
                        // window.location = o2.filter;
                        window.location = url   "?" o2.tokenname "="   xtoken;
                    });
                    break;
                case "pcclient":
                    this.form.workaction[actionurl](att.data.id, workid, function (url) {
                        var xtoken = layout.session.token;
                        // window.location = o2.filter;
                        window.location = url   "?" o2.tokenname "="   xtoken;
                    });
                    break;
                default:
                    this.form.workaction[actiondata](att.data.id, workid);
            }
            this.fireevent("open",[att]);
        }.bind(this));
    },
    getattachmenturl: function (attachment, callback) {
        if (this.form.businessdata.work && !this.form.businessdata.work.completedtime) {
            this.form.workaction.getattachment;
        } else {
            this.form.workaction.getattachmentworkcompleted;
        }
    },
    gettextdata: function(){
        var data = [];
        this.attachmentcontroller.attachments.each(function(att){
            var o = {
                "id": att.data.id,
                "person": att.data.person,
                "creatoruid": att.data.creatoruid,
                "name": att.data.name,
                "ordernumber": att.data.ordernumber,
                "length": att.data.length,
                "extension": att.data.extension,
                "lastupdatetime": att.data.lastupdatetime,
                "activityname": att.data.activityname,
                "control" : att.data.control
            }
            data.push(o);
        });
        return data;
    },
    /**
     * @summary 为组件重新设置附件,该附件必须已经上传。
     *  @param data {array}.
     *  
[{
     *     "id": "56c4e86f-a4c8-4cc2-a150-1a0d2c5febcb",   //附件id
     *     "name": "133203a2-92e6-4653-9954-161b72ddb7f9.png", //附件名称
     *     "extension": "png",                             //附件扩展名
     *     "length": 43864,                                //附件大小
     *     "person": "xx@huqi@p",                          //附件上传人
     *     "lastupdatetime": "2018-09-27 15:50:34",        //最后的修改时间
     *     "lastupdateperson": "xx@huqi@p",                //最后的修改人
     *     "activity": "e31ad938-c495-45a6-8d77-b8a9b61a165b", //附件上传的活动id
     *     "activityname": "申请人",                           //附件上传的活动名称
     *     "activitytype": "manual",                           //附件上传的活动类型
     *     "site": "$mediaopinion",                        //附件存储位置(一般用于区分附件在哪个表单元素中显示)
     *     "type": "image/png",                             //附件类型(contenttype)
     *     "control": {}
     * }]
*/ setdata: function(data){ this.attachmentcontroller.clear(); ( data || [] ).each(function (att) { var attachment = this.form.businessdata.attachmentlist.find(function(a){ return a.id==att.id; }); var attdata = attachment || att; this.attachmentcontroller.addattachment(attdata); }.bind(this)); this.setattachmentbusinessdata(); }, createerrornode: function (text) { var node = new element("div"); var iconnode = new element("div", { "styles": { "width": "20px", "height": "20px", "float": "left", "background": " center center no-repeat" } }).inject(node); var textnode = new element("div", { "styles": { "line-height": "20px", "margin-left": "20px", "color": "red", "word-break": "keep-all" }, "text": text }).inject(node); return node; }, notvalidationmode: function (text) { if (!this.isnotvalidationmode) { this.isnotvalidationmode = true; this.node.store("borderstyle", this.node.getstyles("border-left", "border-right", "border-top", "border-bottom")); this.node.setstyle("border", "1px solid red"); this.errnode = this.createerrornode(text).inject(this.node, "after"); this.shownotvalidationmode(this.node); var parentnode = this.errnode; while( parentnode && parentnode.offsetparent === null ){ parentnode = parentnode.getparent(); } if ( parentnode && !parentnode.isintoview()) parentnode.scrollintoview(false); } }, shownotvalidationmode: function (node) { var p = node.getparent("div"); if (p) { if (p.get("mwftype") == "tab$content") { if (p.getparent("div").getstyle("display") == "none") { var contentareanode = p.getparent("div").getparent("div"); var tabareanode = contentareanode.getprevious("div"); var idx = contentareanode.getchildren().indexof(p.getparent("div")); var tabnode = tabareanode.getlast().getfirst().getchildren()[idx]; tabnode.click(); p = tabareanode.getparent("div"); } } this.shownotvalidationmode(p); } }, validationmode: function () { if (this.isnotvalidationmode) { this.isnotvalidationmode = false; this.node.setstyles(this.node.retrieve("borderstyle")); if (this.errnode) { this.errnode.destroy(); this.errnode = null; } } }, validationconfigitem: function (routename, data) { var flag = (data.status == "all") ? true : (routename == data.decision); if (flag) { var n = this.getdata() || []; var v = (data.valuetype == "value") ? n : n.length; switch (data.operateor) { case "isnull": if (!v) { this.notvalidationmode(data.prompt); return false; } break; case "notnull": if (v) { this.notvalidationmode(data.prompt); return false; } break; case "gt": if (v > data.value) { this.notvalidationmode(data.prompt); return false; } break; case "lt": if (v < data.value) { this.notvalidationmode(data.prompt); return false; } break; case "equal": if (v == data.value) { this.notvalidationmode(data.prompt); return false; } break; case "neq": if (v != data.value) { this.notvalidationmode(data.prompt); return false; } break; case "contain": if (v.indexof(data.value) != -1) { this.notvalidationmode(data.prompt); return false; } break; case "notcontain": if (v.indexof(data.value) == -1) { this.notvalidationmode(data.prompt); return false; } break; } } return true; }, validationconfig: function (routename, opinion) { if (this.json.validationconfig) { if (this.json.validationconfig.length) { for (var i = 0; i < this.json.validationconfig.length; i ) { var data = this.json.validationconfig[i]; if (!this.validationconfigitem(routename, data)) return false; } } return true; } return true; }, getexceldata: function(){ return ""; }, setexceldata: function(data){ }, }); mwf.xapplication.process.xform.attachmenpreview = new class({ implements: [options, events], initialize : function(att,app ){ this.att = att; this.app = app; this.load(); }, load:function(){ var extension = this.att.data.extension; if(extension === "ofd"){ //ofd预览暂时屏蔽ie,等兼容性改好了开启 if(browser.name!=="ie"){ this.previewofd(); } } if(extension === "zip"){ this.previewzip(); } if(extension === "pdf"){ this.previewpdf(); } if(["doc","docx","xls","xlsx","ppt","pptx"].contains(extension)){ this.previewoffice(); } if(["png","jpg","bmp","jpeg","gif"].contains(extension)){ this.previewimage(); } if(extension === "js"){ this.previewace("javascript"); } if(extension === "css"){ this.previewace("css"); } if(extension === "java"){ this.previewace("java"); } if(extension === "json"){ this.previewace("json"); } if(extension === "xml"){ this.previewace("xml"); } if(extension === "php"){ this.previewace("php"); } if(["html","htm","xhtml"].contains(extension)){ this.previewace("html"); } if(["log","md","txt"].contains(extension)){ this.previewace("text"); } }, previewzip: function () { //zip压缩包预览 var _self = this; var zipviewnode = new element("div",{"text":"loadding..."}); o2.load(["../o2_lib/jszip/jszip.min.js", "../o2_lib/jszip/jszip-utils.min.js"], function () { this.app.getattachment { var width, height; if( layout.mobile ){ var size = $(document.body).getsize(); width = size.x "px"; height = size.y "px"; }else{ width = "660px"; height = "510px"; } o2.require("mwf.widget.tree", function(){ var dlg = o2.dl.open({ "title": _self.att.data.name, "width": width, "height": height, "mask": true, "content": zipviewnode, "container": null, "positionnode": document.body, "onqueryclose": function () { zipviewnode.destroy(); }, "buttonlist": [ { "text": "关闭", "action": function () { dlg.close(); } } ], "onpostshow": function () { dlg.recenter(); }, "onpostload" : function(){ } }); }.bind(this)); zipviewnode.empty(); jsziputils.getbinarycontent(url, function (err, data) { jszip.loadasync(data).then(function (zip) { var nodelist = []; zip.foreach(function (relativepath, zipentry) { nodelist.push(zipentry.name); }); var tree = new mwf.widget.tree(zipviewnode, {"style":"form"}); var treedata = _pathtotree(nodelist); tree.load(treedata); }); }); }.bind(this)); }.bind(this)); function _pathtotree(pathlist) { var pathjsonlist = []; for (var i = 0; i < pathlist.length; i ) { var chain = pathlist[i].split("/"); var currentnode = pathjsonlist; for (var j = 0; j < chain.length; j ) { if (chain[j] === "") { break; } var wantednode = chain[j]; var lastnode = currentnode; for (var k = 0; k < currentnode.length; k ) { if (currentnode[k].name == wantednode) { currentnode = currentnode[k].sub; break; } } if (lastnode == currentnode) { var obj = { key: pathlist[i], name: wantednode, title:wantednode, text:wantednode, sub: [] }; var newnode = (currentnode[k] = obj); if (wantednode.indexof(".") > -1) { obj.dir = false; obj.icon = "file.png"; delete obj.sub; } else { obj.dir = true; obj.expand = false; currentnode = newnode.sub; //delete obj.sub; } } else { delete currentnode.sub; } } } var nodes = []; var folder = { "title" : _self.att.name, "text" : _self.att.name, "sub" : [] }; pathjsonlist.each(function(path){ folder.sub.push(path); }) _sortpath(folder, nodes); return nodes; } function _sortpath(pathjsonlist, nodes) { var folderlist = []; pathjsonlist.sub.each(function (file) { if (file.dir) { folderlist.push(file); } }); pathjsonlist.sub.each(function (file) { if (!file.dir) { folderlist.push(file); } }); folderlist.each(function (file) { var node = { text: file.name, title: file.name, expand : false }; if (!file.dir) { node.icon = "file.png"; } nodes.push(node); if(file.sub && file.sub.length>0){ node.sub = []; _sortpath(file,node.sub); } }) } }, previewpdf : function(){ this.app.getattachment { if(layout.mobile){ location.href = "../o2_lib/pdfjs/web/viewer.html?file=" url; }else{ window.open("../o2_lib/pdfjs/web/viewer.html?file=" url); } }); }, previewoffice : function(){ switch (this.app.json.officetool) { case "libreoffice": this.previewlibreoffice(); break; case "officeonline": this.previewofficeonline(); break; case "onlyoffice": this.previewonlyoffice(); break; case "yozooffice": this.previewyozooffice(); break; case "wpsoffice": this.previewwpsoffice(); break; default : this.previewlibreoffice(); } }, previewofficeonline : function (){ var att = this.att; var jars ; if(att.data.activity){ jars = "x_processplatform_assemble_surface"; } if(att.data.categoryid){ jars = "x_cms_assemble_control"; } var options = { "documentid": att.data.id, "mode":"view", "jars" : jars, "appid": "officeonlineeditor" att.data.id }; layout.openapplication(null, "officeonlineeditor", options); }, previewonlyoffice : function (){ var att = this.att; var jars ; if(att.data.activity){ jars = "x_processplatform_assemble_surface"; } if(att.data.categoryid){ jars = "x_cms_assemble_control"; } var options = { "documentid": att.data.id, "mode":"view", "jars" : jars, "appid": "onlyofficeeditor" att.data.id }; layout.openapplication(null, "onlyofficeeditor", options); }, previewyozooffice : function (){ var att = this.att; var jars ; if(att.data.activity){ jars = "x_processplatform_assemble_surface"; } if(att.data.categoryid){ jars = "x_cms_assemble_control"; } var options = { "documentid": att.data.id, "mode":"view", "jars" : jars, "appid": "yozoofficeeditor" att.data.id }; layout.openapplication(null, "yozoofficeeditor", options); }, previewwpsoffice : function (){ var att = this.att; var jars ; if(att.data.activity){ jars = "x_processplatform_assemble_surface"; } if(att.data.categoryid){ jars = "x_cms_assemble_control"; } var options = { "documentid": att.data.id, "mode":"view", "jars" : jars, "appid": "wpsofficeeditor" att.data.id }; layout.openapplication(null, "wpsofficeeditor", options); }, previewlibreoffice : function (){ if(!layout.serviceaddresslist["x_libreoffice_assemble_control"]){ this.app.form.notice("please install libreoffice"); return; } var srv = layout.serviceaddresslist["x_libreoffice_assemble_control"]; var protocol = window.location.protocol; var module; if(this.att.data.activity){ module = "processplatform"; } if(this.att.data.categoryid){ module = "cms"; } var url = protocol "//" srv.host ":" srv.port srv.context "/jaxrs/office/doc/to/pdf/" module "/" this.att.data.id; window.open("../o2_lib/pdfjs/web/viewer.html?file=" url); }, previewofd : function(){ this.app.getattachment { window.open("../o2_lib/ofdjs/index.html?file=" url) }); }, previewimage : function(){ this.app.getattachment { var imgnode = new element("img",{"src":url,"alt":this.att.name}).inject(document.body).hide(); o2.loadcss("../o2_lib/viewer/viewer.css", document.body,function(){ o2.load("../o2_lib/viewer/viewer.js", function(){ this.viewer = new viewer(imgnode,{ navbar : false, toolbar : true, hidden : function(){ imgnode.destroy(); this.viewer.destroy(); }.bind(this) }); this.viewer.show(); }.bind(this)); }.bind(this)); }.bind(this)); }, previewace:function(type){ this.app.getattachment { o2.require("o2.widget.ace", null, false); var filerequest = new request({ url: url, method: 'get', withcredentials: true, onsuccess: function(responsetext){ var editornode = new element("div",{"style":"padding:10px"}); editornode.set("text",responsetext); o2.widget.ace.load(function(){ o2.load("../o2_lib/ace/src-min-noconflict/ext-static_highlight.js", function(){ var highlight = ace.require("ace/ext/static_highlight"); highlight(editornode, {mode: "ace/mode/" type , theme: "ace/theme/tomorrow", "fontsize": 30,"showlinenumbers":true}); }.bind(this)); }.bind(this)); var width, height; if( layout.mobile ){ var size = $(document.body).getsize(); width = size.x "px"; height = size.y "px"; }else{ width = "960px"; height = "610px"; } var dlg = o2.dl.open({ "title": this.att.data.name, "width": width, "height": height, "mask": true, "content": editornode, "container": null, "positionnode": document.body, "onqueryclose": function () { editornode.destroy(); }.bind(this), "buttonlist": [ { "text": "关闭", "action": function () { dlg.close(); }.bind(this) } ], "onpostshow": function () { dlg.recenter(); }.bind(this) }); }.bind(this), onfailure: function(){ console.log('text', 'sorry, your request failed :('); } }); filerequest.send(); }.bind(this)); }, }); mwf.xapplication.process.xform.attachmentdg = mwf.appattachmentdg = new class({ extends: mwf.appattachment, loadattachmentcontroller: function () { //mwf.require("mwf.widget.attachmentcontroller", function() { var options = { "style": this.json.style || "default", "title": mwf.xapplication.process.xform.lp.attachmentarea, "liststyle": this.json.liststyle || "icon", "size": this.json.size || "max", "resize": this.getflagdefaultfalse("resize"), "attachmentcount": this.json.attachmentcount || 0, "isupload": this.getflagdefaultfalse("isupload"), "isdelete": this.getflagdefaultfalse("isdelete"), "isreplace": this.getflagdefaultfalse("isreplace"), "isdownload": this.getflagdefaultfalse("isdownload"), "ispreviewatt": this.getflagdefaultfalse("ispreviewatt"), "iseditatt": this.getflagdefaultfalse("iseditatt"), "issizechange": this.getflagdefaultfalse("issizechange"), "isconfig": this.getflagdefaulttrue("isconfig"), "isorder": this.getflagdefaulttrue("isorder"), "dblclick": this.json.dblclick, "readonly": (this.json.readonly === "y" || this.json.readonly === "true" || this.json.isreadonly || this.form.json.isreadonly), "availableliststyles": this.json.availableliststyles ? this.json.availableliststyles : ["list", "seq", "icon", "preview"], "isdeleteoption": this.json.isdelete, "isreplaceoption": this.json.isreplace, "toolbargrouphidden": this.json.toolbargrouphidden || [], "ignoresite": this.json.ignoresite, "onorder": function () { this.fireevent("change"); }.bind(this) }; if (this.readonly) options.readonly = true; if (this.form.json.attachmentstyle) { options = object.merge(options, this.form.json.attachmentstyle); } this.fireevent("queryloadcontroller", [options]); this.attachmentcontroller = new mwf.xapplication.process.xform.attachmentcontroller(this.node, this, options); this.fireevent("loadcontroller"); this.attachmentcontroller.load(); this.fireevent("postloadcontroller"); // var d = this._getbusinessdata(); // if (d) d.each(function (att) { // this.attachmentcontroller.addattachment(att); // }.bind(this)); if(this.json.ignoresite) { ( this._getbusinessdata() || [] ).each(function (att) { var flag = this.form.businessdata.attachmentlist.some(function (attdata) { return att.id === attdata.id; }.bind(this)); if(flag)this.attachmentcontroller.addattachment(att); }.bind(this)); }else{ this.form.businessdata.attachmentlist.each(function (att) { if (att.site === (this.json.site || this.json.id)) this.attachmentcontroller.addattachment(att); }.bind(this)); } this.setattachmentbusinessdata(); }, setattachmentbusinessdata: function(){ if (this.attachmentcontroller) { if (this.attachmentcontroller.attachments.length) { var values = this.attachmentcontroller.attachments.map(function (d) { return { "control": d.data.control, "name": d.data.name, "id": d.data.id, "person": d.data.person, "creatoruid": d.data.creatoruid, "ordernumber": d.data.ordernumber, "length": d.data.length, "extension": d.data.extension, "lastupdatetime": d.data.lastupdatetime, "activityname": d.data.activityname }; }); this._setbusinessdata(values); } else { this._setbusinessdata([]); } } }, uploadattachment: function (e, node, files) { if (window.o2android && window.o2android.postmessage) { var body = { type: "uploadattachmentfordatagrid", data: { param: this.json.id, site: this.json.site || this.json.id } }; window.o2android.postmessage(json.stringify(body)); } else if (window.o2android && window.o2android.uploadattachmentfordatagrid) { window.o2android.uploadattachmentfordatagrid((this.json.site || this.json.id), this.json.id); } else if (window.webkit && window.webkit.messagehandlers && window.webkit.messagehandlers.uploadattachmentfordatagrid) { window.webkit.messagehandlers.uploadattachmentfordatagrid.postmessage({ "site": (this.json.site || this.json.id) , "param":this.json.id}); } else { // if (!this.uploadfileareanode){ this.createuploadfilenode(files); // } // this.fileuploadnode.click(); } }, replaceattachment: function (e, node, attachment) { if (window.o2android && window.o2android.postmessage) { var body = { type: "replaceattachmentfordatagrid", data: { attachmentid: attachment.data.id, param: this.json.id, site: this.json.site || this.json.id } }; window.o2android.postmessage(json.stringify(body)); } else if (window.o2android && window.o2android.replaceattachmentfordatagrid) { window.o2android.replaceattachmentfordatagrid(attachment.data.id, (this.json.site || this.json.id), this.json.id); } else if (window.webkit && window.webkit.messagehandlers && window.webkit.messagehandlers.replaceattachmentfordatagrid) { window.webkit.messagehandlers.replaceattachmentfordatagrid.postmessage({ "id": attachment.data.id, "site": (this.json.site || this.json.id) , "param":this.json.id}); } else { var _self = this; this.form.confirm("warn", e, mwf.xapplication.process.xform.lp.replaceattachmenttitle, mwf.xapplication.process.xform.lp.replaceattachment "( " attachment.data.name " )", 350, 120, function () { _self.replaceattachmentfile(attachment); this.close(); }, function () { this.close(); }, null, null, this.form.json.confirmstyle); } } });
网站地图