123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- MWF.xApplication.Forum.IS_LOGIN = false;
- MWF.xApplication.Forum.ForumSetting = null;
- MWF.xApplication.Forum.RoleInfoList = [];
- MWF.xApplication.Forum.PermissionInfoList = [];
- MWF.xApplication.Forum.isBBSSystemAdmin = false;
- MWF.xApplication.Forum.Access = new Class({
- //SECTION_SUBJECT_MANAGEMENT_ 主题管理
- //SECTION_REPLY_MANAGEMENT_ 回帖管理
- //SECTION_SECTION_MANAGER_ 子板块增删改
- //SECTION_PERMISSION_MANAGEMENT_ 权限管理
- //SECTION_CONFIG_MANAGEMENT_ 参数配置
- //"SECTION_GUEST_"; //查看范围
- //"SECTION_SUBJECT_PUBLISHER_"; //发帖范围
- //"SECTION_SUBJECT_AUDITOR_"; //发帖审核
- //"SECTION_REPLY_PUBLISHER_"; //回复范围
- //"SECTION_REPLY_AUDITOR_"; //回复审核
- //"SECTION_RECOMMENDER_"; //推荐
- //"SECTION_SUBJECT_STICK_"; //置顶
- //"SECTION_SUBJECT_CREAM_"; //精华
- initialize: function ( actions, lp, userName ) {
- this.actions = actions;
- this.lp = lp;
- this.userName = userName || layout.desktop.session.user.distinguishedName || "";
- this.anonymous = layout.desktop.session.user.name == "anonymous";
- if( this.anonymous ){
- MWF.Actions.get("x_organization_assemble_personal").getRegisterMode(function(json){
- this.signUpMode = json.data.value
- }.bind(this), null ,false)
- }
- if( !MWF.xApplication.Forum.ForumSetting ){
- MWF.xApplication.Forum.ForumSetting = {};
- this.actions.listCategoryAll(function (json) {
- if( !json.data )json.data = [];
- json.data.each(function (d) {
- MWF.xApplication.Forum.ForumSetting[d.id] = d;
- }.bind(this))
- }.bind(this))
- }
- },
- login : function( callback ){
- if( !MWF.xApplication.Forum.IS_LOGIN ){
- this.actions.login( {}, function( json ){
- MWF.xApplication.Forum.RoleInfoList = json.data ? json.data.roleInfoList : [];
- MWF.xApplication.Forum.PermissionInfoList = json.data ? json.data.permissionInfoList : [];
- MWF.xApplication.Forum.IS_LOGIN = true;
- MWF.xApplication.Forum.isBBSSystemAdmin = json.data ? json.data.isBBSSystemAdmin : false;
- if( callback )callback();
- }.bind(this))
- }else{
- if( callback )callback();
- }
- },
- isAnonymous : function(){
- return this.anonymous;
- },
- isAnonymousDynamic : function(){
- var flag = true;
- MWF.Actions.get("x_organization_assemble_authentication").authentication( function( json ){
- if (json.data.tokenType == "anonymous"){
- this.userName = layout.desktop.session.user.distinguishedName = "anonymous";
- flag = true;
- }else{
- this.userName = layout.desktop.session.user.distinguishedName = json.data.distinguishedName;
- flag = false;
- }
- }.bind(this), null, false );
- return flag;
- },
- isAdmin : function(){
- return MWF.AC.isBBSManager() || MWF.xApplication.Forum.isBBSSystemAdmin; //(layout.desktop.session.user.roleList.indexOf("BBSSystemAdmin")!=-1);
- },
- inArray : function( managers, callback, username ){
- var flag = false;
- if( typeOf(managers) == "string" )managers = managers.split(",");
- if( managers.indexOf( username || this.userName ) != -1 )flag = true;
- if( callback )callback( flag );
- return flag;
- },
- isForumViewer : function( forumIdOrData ){
- var flag = true;
- if( this.hasForumAdminAuthority( forumIdOrData, null, null, false ) ){
- return true;
- }
- this.getCategoryData( forumIdOrData, function( data ){
- if( data.forumVisible != this.lp.allPerson ){
- if( MWF.xApplication.Forum.RoleInfoList.indexOf( "FORUM_GUEST_" + data.id ) == -1 ){
- flag = false
- }
- }
- });
- return flag;
- },
- isSectionViewer : function( sectionIdOrData ){
- var flag = true;
- if( this.hasSectionAdminAuthority( sectionIdOrData, null, null, false ) ){
- return true;
- }
- if( typeOf( sectionIdOrData ) == "string" ){
- this.actions.getSection( sectionIdOrData, function( json ){
- var data = json.data;
- if( data.sectionVisible != this.lp.allPerson ){
- if( MWF.xApplication.Forum.PermissionInfoList.indexOf( "SECTION_VIEW_" + data.id ) == -1 ){
- flag = false
- }
- }
- }.bind(this), null, async)
- }else{
- var data = sectionIdOrData;
- if( data.sectionVisible != this.lp.allPerson ){
- if( MWF.xApplication.Forum.PermissionInfoList.indexOf( "SECTION_VIEW_" + data.id ) == -1 ){
- flag = false
- }
- }
- }
- return flag;
- },
- isRecommender : function( sectionIdOrData ){
- var flag = false;
- if( typeOf( sectionIdOrData ) == "string" ){
- this.actions.getSection( sectionIdOrData, function( json ){
- var data = json.data;
- //if( data.sectionVisible == this.lp.allPerson && data.indexRecommendable == true ){
- if( MWF.xApplication.Forum.RoleInfoList.indexOf( "SECTION_RECOMMENDER_" + data.id ) != -1 ){
- flag = true
- }else if( this.hasSectionAdminAuthority( data, null, null, false ) ){ //如果是管理员
- flag = true;
- }
- //}
- }.bind(this), null, async)
- }else{
- var data = sectionIdOrData;
- //if( data.sectionVisible == this.lp.allPerson && data.indexRecommendable == true ){
- if( MWF.xApplication.Forum.RoleInfoList.indexOf( "SECTION_RECOMMENDER_" + data.id ) != -1 ){
- flag = true
- }else if( this.hasSectionAdminAuthority( data, null, null, false ) ){ //如果是管理员
- flag = true;
- }
- //}
- }
- return flag;
- },
- isSubjectPublisher : function( sectionIdOrData ){
- var flag = true;
- if( this.hasSectionAdminAuthority( sectionIdOrData, null, null, false ) ){
- return true;
- }
- if( typeOf( sectionIdOrData ) == "string" ){
- this.actions.getSection( sectionIdOrData, function( json ){
- var data = json.data;
- if( data.subjectPublishAble != this.lp.allPerson ){
- if( MWF.xApplication.Forum.RoleInfoList.indexOf( "SECTION_SUBJECT_PUBLISHER_" + data.id ) == -1 ){
- flag = false
- }
- }
- }.bind(this), null, async)
- }else{
- var data = sectionIdOrData;
- if( data.subjectPublishAble != this.lp.allPerson ){
- if( MWF.xApplication.Forum.RoleInfoList.indexOf( "SECTION_SUBJECT_PUBLISHER_" + data.id ) == -1 ){
- flag = false
- }
- }
- }
- return flag;
- },
- isReplyPublisher : function( sectionIdOrData ){
- var flag = true;
- if( this.hasSectionAdminAuthority( sectionIdOrData, null, null, false ) ){
- return true;
- }
- if( typeOf( sectionIdOrData ) == "string" ){
- this.actions.getSection( sectionIdOrData, function( json ){
- var data = json.data;
- if( data.replyPublishAble != this.lp.allPerson ){
- if( MWF.xApplication.Forum.RoleInfoList.indexOf( "SECTION_REPLY_PUBLISHER_" + data.id ) == -1 ){
- flag = false
- }
- }
- }.bind(this), null, false)
- }else{
- var data = sectionIdOrData;
- if( data.replyPublishAble != this.lp.allPerson ){
- if( MWF.xApplication.Forum.RoleInfoList.indexOf( "SECTION_REPLY_PUBLISHER_" + data.id ) == -1 ){
- flag = false
- }
- }
- }
- return flag;
- },
- getCategoryData : function( forumIdOrData , callback ){
- if( typeOf( forumIdOrData ) == "string" ){
- if( MWF.xApplication.Forum.ForumSetting[ forumIdOrData ] ){
- if( callback )callback( MWF.xApplication.Forum.ForumSetting[ forumIdOrData ] );
- }else{
- this.actions.getCategory( forumIdOrData, function( json ){
- MWF.xApplication.Forum.ForumSetting[ forumIdOrData ] = json.data;
- if( callback )callback( json.data );
- }.bind(this), null, false )
- }
- }else{
- if( !MWF.xApplication.Forum.ForumSetting[ forumIdOrData.id ] ){
- MWF.xApplication.Forum.ForumSetting[ forumIdOrData ] = forumIdOrData;
- }
- if( callback )callback( forumIdOrData );
- }
- },
- isForumManager : function( forumIdOrData, callback, username, async ){ //是否分区管理员
- var flag = false;
- this.getCategoryData( forumIdOrData, function( forumData ){
- flag = this.inArray( forumData.forumManagerName , callback, username );
- }.bind(this) );
- return flag;
- },
- isSectionManager : function( sectionIdOrData , callback, username , async){ //是否板块管理员
- var flag = false;
- if( typeOf( sectionIdOrData ) == "string" ){
- this.actions.getSection( sectionIdOrData, function( json ){
- flag = this.inArray( json.data.moderatorNames, callback, username );
- }.bind(this), null, async)
- }else{
- flag = this.inArray( sectionIdOrData.moderatorNames , callback, username );
- }
- return flag;
- },
- hasForumAdminAuthority : function( forumIdOrData, callback, username, async ) { //具有分区管理权限
- if (!username && this.isAdmin()){
- if( callback )callback( true );
- return true;
- }
- var flag = false;
- flag = this.isForumManager( forumIdOrData, function( flag ){
- if( callback )callback( flag );
- }.bind(this), username , async);
- return flag;
- },
- hasSectionAdminAuthority : function( sectionIdOrData , callback, username, async ){ //具有板块管理权限
- if (!username && this.isAdmin()) {
- if (callback)callback(true);
- return true;
- }
- var flag = false;
- var fun = function( data ){
- var managers = data.moderatorNames;
- if( typeOf(managers) == "string" )managers = managers.split(",");
- if( managers.indexOf( username || this.userName ) != -1 )flag = true;
- if( flag ){
- if( callback )callback( flag );
- }else{
- flag = this.isForumManager( data.forumId, function( flag ){
- if( callback )callback( flag );
- }.bind(this), username , async)
- }
- }.bind(this);
- if( typeOf( sectionIdOrData ) == "string" ){
- this.actions.getSection( sectionIdOrData, function( json ){
- fun( json.data );
- }.bind(this), null, async)
- }else{
- fun( sectionIdOrData );
- }
- return flag;
- },
- getUserPermission: function (callback, reload) {
- if( !reload && this.userPermission ){
- callback(this.userPermission);
- return;
- }
- o2.Actions.load("x_bbs_assemble_control").PermissionInfoAction.getUserPermission(function (json) {
- this.userPermission = json.data;
- callback(this.userPermission);
- }.bind(this))
- }
- });
|