コード例 #1
0
        public SchoolYearScorePalmerworm()
        {
            InitializeComponent();
            EventHub.Instance.ScoreChanged += new EventHandler <ScoreChangedEventArgs>(Instance_ScoreChanged);
            PreferenceUpdater.Instance.Items.Add(this);
            LoadPreference();
            lvColumnManager1.DenyColumns.AddRange(new ColumnHeader[] { colSchoolYear, colGradeYear });
            _bkwEntryLoader.DoWork               += new DoWorkEventHandler(_bkwEntryLoader_DoWork);
            _bkwEntryLoader.RunWorkerCompleted   += new RunWorkerCompletedEventHandler(_bkwEntryLoader_RunWorkerCompleted);
            _bkwSubjectLoader.DoWork             += new DoWorkEventHandler(_bkwSubjectLoader_DoWork);
            _bkwSubjectLoader.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_bkwSubjectLoader_RunWorkerCompleted);
            Application.Idle += new EventHandler(Application_Idle);

            //取得此 Class 定議的 FeatureCode。
            FeatureCodeAttribute code = Attribute.GetCustomAttribute(this.GetType(), typeof(FeatureCodeAttribute)) as FeatureCodeAttribute;

            FeatureCode = code.FeatureCode;

            _permission = CurrentUser.Acl[FeatureCode];

            btnAdd.Visible    = _permission.Editable;
            btnDelete.Visible = _permission.Editable;
            btnModify.Visible = _permission.Editable;

            btnView.Visible = !_permission.Editable;
        }
コード例 #2
0
        public ClubRestrictItem()
        {
            InitializeComponent();

            Group = "選社限制";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled   = UserPermission.Editable;

            BGW.DoWork             += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            Save_BGW.DoWork             += new DoWorkEventHandler(Save_BGW_DoWork);
            Save_BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Save_BGW_RunWorkerCompleted);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);

            DataListener = new ChangeListener();
            DataListener.Add(new TextBoxSource(tbGrade1Limit));
            DataListener.Add(new TextBoxSource(tbGrade2Limit));
            DataListener.Add(new TextBoxSource(tbGrade3Limit));
            DataListener.Add(new TextBoxSource(tbLimit));
            DataListener.Add(new ComboBoxSource(cbGenderRestrict, ComboBoxSource.ListenAttribute.SelectedIndex));
            DataListener.StatusChanged += new EventHandler <ChangeEventArgs>(DataListener_StatusChanged);
        }
コード例 #3
0
        public UpdateRecordItem()
        {
            InitializeComponent();
            Group = "異動資料";

            BGWorker = new BackgroundWorker();
            BGWorker.DoWork += new DoWorkEventHandler(BGWorker_DoWork);
            BGWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGWorker_RunWorkerCompleted);

            SHUpdateRecord.AfterChange += new EventHandler<K12.Data.DataChangedEventArgs>(SHUpdateRecord_AfterChange);

            if (!string.IsNullOrEmpty(_StudentID))
                BGWorker.RunWorkerAsync();

            #region 權限判斷程式碼。
            //取得此 Class 定議的 FeatureCode。
            FeatureCode = FeatureCodeAttribute.GetCode(this.GetType());
            _permission = FISCA.Permission.UserAcl.Current[FeatureCode];

            btnAdd.Visible = _permission.Editable;
            btnRemove.Visible = _permission.Editable;
            bthUpdate.Visible = _permission.Editable;

            btnView.Visible = !_permission.Editable;
            #endregion

            Disposed += new EventHandler(UpdateRecordItem_Disposed);
        }
コード例 #4
0
        public UpdateRecordItem()
        {
            InitializeComponent();
            Group = "異動資料";

            BGWorker                     = new BackgroundWorker();
            BGWorker.DoWork             += new DoWorkEventHandler(BGWorker_DoWork);
            BGWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGWorker_RunWorkerCompleted);

            SHUpdateRecord.AfterChange += new EventHandler <K12.Data.DataChangedEventArgs>(SHUpdateRecord_AfterChange);

            if (!string.IsNullOrEmpty(_StudentID))
            {
                BGWorker.RunWorkerAsync();
            }

            #region  限判斷程式碼。
            //取得此 Class 定議的 FeatureCode。
            FeatureCode = FeatureCodeAttribute.GetCode(this.GetType());
            _permission = FISCA.Permission.UserAcl.Current[FeatureCode];

            btnAdd.Visible    = _permission.Editable;
            btnRemove.Visible = _permission.Editable;
            bthUpdate.Visible = _permission.Editable;

            btnView.Visible = !_permission.Editable;
            #endregion

            Disposed += new EventHandler(UpdateRecordItem_Disposed);
        }
コード例 #5
0
ファイル: ClubStudent.cs プロジェクト: ischoolinc/MOD_Club2.0
        public ClubStudent()
        {
            InitializeComponent();

            Group = "參與學生";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            //this.Enabled = UserPermission.Editable;
            // 2018/1/5 羿均 因應文華訪談需求,社團常請公假,生輔組需在檢視模式下瀏覽社團學生以及操作待處理動作
            listViewEx1.Enabled              = true;
            toolStripMenuItem2.Enabled       = true; // 將學生加入待處理
            清空學生待處理ToolStripMenuItem.Enabled = true; // 清空待處理

            btnClearStudent.Enabled          = UserPermission.Editable;
            btnInserStudent.Enabled          = UserPermission.Editable;
            鎖定學生選社ToolStripMenuItem.Enabled  = UserPermission.Editable;
            移除選擇學生ToolStripMenuItem.Enabled  = UserPermission.Editable;
            移除選擇學生ToolStripMenuItem1.Enabled = UserPermission.Editable;

            //K12 - 當待處理學生更新後
            K12.Presentation.NLDPanels.Student.TempSourceChanged += new EventHandler(Student_TempSourceChanged);

            //背景模式取得學生
            BGW.DoWork             += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);
        }
コード例 #6
0
        static void _bgLLoadUDT_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            Catalog catalog01 = RoleAclSource.Instance["學生"]["資料項目"];

            catalog01.Add(new DetailItemFeature(typeof(DetailContent.EmergencyDetailContent)));

            FeatureAce UserPermission = FISCA.Permission.UserAcl.Current["K12EmergencyContact.DetailContent.EmergencyDetailContent"];

            if (UserPermission.Editable)
            {
                K12.Presentation.NLDPanels.Student.AddDetailBulider(new DetailBulider <DetailContent.EmergencyDetailContent>());
            }
        }
コード例 #7
0
        public ClubImageItem()
        {
            InitializeComponent();

            Group = "社團照片";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled   = UserPermission.Editable;

            BGW.DoWork             += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);
        }
コード例 #8
0
        public ClubImageItem()
        {
            InitializeComponent();

            Group = "拓展性课程照片";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled = UserPermission.Editable;

            BGW.DoWork += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);
        }
コード例 #9
0
        public StudentResultItem()
        {
            InitializeComponent();

            Group = "拓展性课程成绩";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled = UserPermission.Editable;

            BGW.DoWork += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            DataListener = new ChangeListener();
            DataListener.Add(new DataGridViewSource(dataGridViewX1));
            DataListener.StatusChanged += new EventHandler<ChangeEventArgs>(DataListener_StatusChanged);
        }
コード例 #10
0
        public StudentResultItem()
        {
            InitializeComponent();

            Group = "社團成績";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled   = UserPermission.Editable;

            BGW.DoWork             += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            DataListener = new ChangeListener();
            DataListener.Add(new DataGridViewSource(dataGridViewX1));
            DataListener.StatusChanged += new EventHandler <ChangeEventArgs>(DataListener_StatusChanged);
        }
コード例 #11
0
        static void _bgLLoadUDT_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            // 匯入高關懷特殊身分
            Catalog catalog01 = RoleAclSource.Instance["學生"]["功能按鈕"];

            catalog01.Add(new RibbonFeature("KH_HighConcern_ImportHighConcern", "匯入高關懷特殊身分"));

            Catalog catalog02 = RoleAclSource.Instance["學生"]["資料項目"];

            catalog02.Add(new DetailItemFeature(typeof(DetailContent.HighConcernContent)));

            RibbonBarItem item01 = K12.Presentation.NLDPanels.Student.RibbonBarItems["資料統計"];

            item01["匯入"]["其它相關匯入"]["匯入高關懷特殊身分"].Enable = UserAcl.Current["KH_HighConcern_ImportHighConcern"].Executable;
            item01["匯入"]["其它相關匯入"]["匯入高關懷特殊身分"].Click += delegate {
                new ImportExport.ImportHighConcern().Execute();
            };


            #region 匯出高關懷特殊身分
            // 匯出高關懷特殊身分
            Catalog catalog3 = RoleAclSource.Instance["學生"]["功能按鈕"];
            catalog3.Add(new RibbonFeature("KH_HighConcern_ExportHighConcern", "匯出高關懷特殊身分"));


            // 匯出高關懷特殊身分
            NLDPanels.Student.RibbonBarItems["資料統計"]["匯出"]["其它相關匯出"]["匯出高關懷特殊身分"].Enable = UserAcl.Current["KH_HighConcern_ExportHighConcern"].Executable;
            NLDPanels.Student.RibbonBarItems["資料統計"]["匯出"]["其它相關匯出"]["匯出高關懷特殊身分"].Click += delegate
            {
                SmartSchool.API.PlugIn.Export.Exporter exporter = new ImportExport.ExportHighConcern();
                ImportExport.ExportStudentV2           wizard   = new ImportExport.ExportStudentV2(exporter.Text, exporter.Image);
                exporter.InitializeExport(wizard);
                wizard.ShowDialog();
            };

            #endregion

            // 資料項目-高關懷特殊身分
            FeatureAce UserPermission = FISCA.Permission.UserAcl.Current["KH_HighConcern_HighConcernContent"];
            if (UserPermission.Editable)
            {
                K12.Presentation.NLDPanels.Student.AddDetailBulider(new DetailBulider <DetailContent.HighConcernContent>());
            }
        }
コード例 #12
0
ファイル: CadresItem.cs プロジェクト: ischoolinc/MOD_Club2.0
        public CadresItem()
        {
            //ClubPrimary.President
            //ClubPrimary.VicePresident

            InitializeComponent();
            Group = "社團幹部";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled   = UserPermission.Editable;

            BGW.DoWork             += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            Save_BGW.DoWork             += new DoWorkEventHandler(Save_BGW_DoWork);
            Save_BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Save_BGW_RunWorkerCompleted);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);
        }
コード例 #13
0
        public ClubStudent()
        {
            InitializeComponent();

            Group = "第一阶段参与学生";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled = UserPermission.Editable;

            //K12 - 當待處理學生更新後
            K12.Presentation.NLDPanels.Student.TempSourceChanged += new EventHandler(Student_TempSourceChanged);

            //背景模式取得學生
            BGW.DoWork += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);

        }
コード例 #14
0
        public BeforeEnrollmentItem()
        {
            InitializeComponent();

            prlp  = new PermRecLogProcess();
            Group = "前級畢業資訊";

            #region  限判斷程式碼。
            //取得此 Class 定議的 FeatureCode。
            FeatureCode = FeatureCodeAttribute.GetCode(this.GetType());
            _permission = FISCA.Permission.UserAcl.Current[FeatureCode];

            txtClass.Enabled          = _permission.Editable;
            txtMemo.Enabled           = _permission.Editable;
            txtSchool.Enabled         = _permission.Editable;
            txtSchoolLocation.Enabled = _permission.Editable;
            txtSeatNo.Enabled         = _permission.Editable;

            #endregion
        }
コード例 #15
0
        public BeforeEnrollmentItem()
        {
            InitializeComponent();

            prlp = new PermRecLogProcess();
            Group = "前級畢業資訊";

            #region 權限判斷程式碼。
            //取得此 Class 定議的 FeatureCode。
            FeatureCode = FeatureCodeAttribute.GetCode(this.GetType());
            _permission = FISCA.Permission.UserAcl.Current[FeatureCode];

            txtClass.Enabled = _permission.Editable;
            txtMemo.Enabled = _permission.Editable;
            txtSchool.Enabled  = _permission.Editable;
            txtSchoolLocation.Enabled = _permission.Editable;
            txtSeatNo.Enabled = _permission.Editable;

            #endregion
        }
コード例 #16
0
        bool _ReloadArchiveData = true;  //Cyn
        public SemesterScoreDataAchive()
        {
            InitializeComponent();

            #region UDT
            AccessHelper _a = new AccessHelper();
            //List<SemesterSubjectScoreArchive> sssa = new List<SemesterSubjectScoreArchive>();
            //List<SemesterEntryScoreArchive> sesa = new List<SemesterEntryScoreArchive>();
            //SchemaManager schema = new SchemaManager(FISCA.Authentication.DSAServices.DefaultConnection);
            //schema.SyncSchema(new SemesterSubjectScoreArchive());
            //schema.SyncSchema(new SemesterEntryScoreArchive());
            #endregion

            UserPermission          = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            Group                   = "學期成績(封存)";
            btnDelete.Visible       = FISCA.Permission.UserAcl.Current[Permissions.學期成績封存].Editable;
            BGW.DoWork             += BGW_DoWork;
            BGW.RunWorkerCompleted += BGW_RunWorkerCompleted;

            EventHub.ArchiveChanged += new EventHandler(EventHub_ArchiveChanged);  //Cyn
        }
コード例 #17
0
        public UpdateRecordForm(string id, string updateid)
        {
            _studentid = id;
            _updateid  = updateid;
            _saved     = false;
            _tempInfo  = new Dictionary <UpdateRecordType, XmlElement>();
            _tempInfo.Add(UpdateRecordType.畢業異動, null);
            _tempInfo.Add(UpdateRecordType.新生異動, null);
            _tempInfo.Add(UpdateRecordType.學籍異動, null);
            _tempInfo.Add(UpdateRecordType.轉入異動, null);
            InitializeComponent();
            Initialize();

            FeatureAce ace = FISCA.Permission.UserAcl.Current[UpdatePalmerwormItem.FeatureCode];

            btnOK.Visible = ace.Editable;

            if (!ace.Editable)
            {
                LockAllControl(this);
            }
        }
コード例 #18
0
        public ClubRestrictItem()
        {
            InitializeComponent();

            Group = "限制";

            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled = UserPermission.Editable;

            BGW.DoWork += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            Save_BGW.DoWork += new DoWorkEventHandler(Save_BGW_DoWork);
            Save_BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Save_BGW_RunWorkerCompleted);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);

            DataListener = new ChangeListener();

            DataListener.Add(new TextBoxSource(tbLimit1));
            DataListener.Add(new TextBoxSource(tbLimit2));
            DataListener.Add(new TextBoxSource(tbLimit3));
            DataListener.Add(new TextBoxSource(tbLimit4));
            DataListener.Add(new TextBoxSource(tbLimit5));

            DataListener.Add(new TextBoxSource(tbBoyLimit1));
            DataListener.Add(new TextBoxSource(tbBoyLimit2));
            DataListener.Add(new TextBoxSource(tbBoyLimit3));
            DataListener.Add(new TextBoxSource(tbBoyLimit4));
            DataListener.Add(new TextBoxSource(tbBoyLimit5));

            DataListener.Add(new TextBoxSource(tbGirlLimit1));
            DataListener.Add(new TextBoxSource(tbGirlLimit2));
            DataListener.Add(new TextBoxSource(tbGirlLimit3));
            DataListener.Add(new TextBoxSource(tbGirlLimit4));
            DataListener.Add(new TextBoxSource(tbGirlLimit5));

            DataListener.StatusChanged += new EventHandler<ChangeEventArgs>(DataListener_StatusChanged);
        }
コード例 #19
0
        public ClubDetailItem()
        {
            InitializeComponent();

            Group = "基本资料";
            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled = UserPermission.Editable;

            DataListener = new ChangeListener();
            DataListener.Add(new TextBoxSource(txtClubName));
            DataListener.Add(new TextBoxSource(txtAbout));
            DataListener.Add(new TextBoxSource(txtDomain));
            DataListener.Add(new TextBoxSource(txtFormal));
            DataListener.Add(new TextBoxSource(txtType));
            //DataListener.Add(new TextBoxSource(tbCategory));
            DataListener.Add(new TextBoxSource(tbCLUBNumber));
            DataListener.Add(new TextBoxSource(tbTotalNumberHours)); //總課時數
            DataListener.Add(new ComboBoxSource(cbTeacher1, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbTeacher2, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbTeacher3, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbCategory, ComboBoxSource.ListenAttribute.Text));
            //DataListener.Add(new ComboBoxSource(cbPresident, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbLocation, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbFullPhase, ComboBoxSource.ListenAttribute.SelectedIndex));
            //DataListener.Add(new ComboBoxSource(cbVicePresident, ComboBoxSource.ListenAttribute.Text));
            DataListener.StatusChanged += new EventHandler<ChangeEventArgs>(DataListener_StatusChanged);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);

            BGW.DoWork += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            Save_BGW.DoWork += new DoWorkEventHandler(Save_BGW_DoWork);
            Save_BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Save_BGW_RunWorkerCompleted);

        }
コード例 #20
0
        public ClubDetailItem()
        {
            InitializeComponent();

            Group          = "基本資料";
            UserPermission = UserAcl.Current[FISCA.Permission.FeatureCodeAttribute.GetCode(GetType())];
            this.Enabled   = UserPermission.Editable;

            DataListener = new ChangeListener();
            DataListener.Add(new TextBoxSource(txtClubName));
            DataListener.Add(new TextBoxSource(txtAbout));
            //DataListener.Add(new TextBoxSource(tbCategory));
            DataListener.Add(new TextBoxSource(tbCLUBNumber));
            DataListener.Add(new ComboBoxSource(cbTeacher1, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbTeacher2, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbTeacher3, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbCategory, ComboBoxSource.ListenAttribute.Text));
            //DataListener.Add(new ComboBoxSource(cbPresident, ComboBoxSource.ListenAttribute.Text));
            DataListener.Add(new ComboBoxSource(cbLocation, ComboBoxSource.ListenAttribute.Text));

            DataListener.Add(new ComboBoxSource(cbRank, ComboBoxSource.ListenAttribute.Text));
            //DataListener.Add(new ComboBoxSource(cbVicePresident, ComboBoxSource.ListenAttribute.Text));
            DataListener.StatusChanged += new EventHandler <ChangeEventArgs>(DataListener_StatusChanged);

            ClubEvents.ClubChanged += new EventHandler(ClubEvents_ClubChanged);

            BGW.DoWork             += new DoWorkEventHandler(BGW_DoWork);
            BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BGW_RunWorkerCompleted);

            Save_BGW.DoWork             += new DoWorkEventHandler(Save_BGW_DoWork);
            Save_BGW.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Save_BGW_RunWorkerCompleted);

            cbRank.Items.Add("優等");
            cbRank.Items.Add("甲等");
            cbRank.Items.Add("乙等");
        }
コード例 #21
0
        static public void Main()
        {
            ServerModule.AutoManaged("http://module.ischool.com.tw/module/138/Club_Universal/udm.xml");

            //FISCA.RTOut.WriteLine("註冊Gadget - 參加社團(學生):" + WebPackage.RegisterGadget("Student", "fd56eafc-3601-40a0-82d9-808f72a8272b", "參加社團(學生)").Item2);
            //FISCA.RTOut.WriteLine("註冊Gadget - 社團(老師):" + WebPackage.RegisterGadget("Teacher", "6080a7c0-60e7-443c-bad7-ecccb3a86bcf", "社團(老師)").Item2);

            #region 處理UDT Table沒有的問題

            ConfigData cd           = K12.Data.School.Configuration["通用社團UDT載入設定"];
            bool       checkClubUDT = false;

            string name = "社團UDT是否已載入_20210912";
            //如果尚無設定值,預設為
            if (string.IsNullOrEmpty(cd[name]))
            {
                cd[name] = "false";
            }

            //檢查是否為布林
            bool.TryParse(cd[name], out checkClubUDT);

            if (!checkClubUDT)
            {
                AccessHelper _accessHelper = new AccessHelper();
                _accessHelper.Select <CLUBRecord>("UID = '00000'");
                _accessHelper.Select <SCJoin>("UID = '00000'");
                _accessHelper.Select <WeightProportion>("UID = '00000'");
                _accessHelper.Select <CadresRecord>("UID = '00000'");
                _accessHelper.Select <DTScore>("UID = '00000'");
                _accessHelper.Select <DTClub>("UID = '00000'");
                _accessHelper.Select <ResultScoreRecord>("UID = '00000'");

                //new
                _accessHelper.Select <VolunteerRecord>("UID = '00000'");
                _accessHelper.Select <ConfigRecord>("UID = '00000'");

                cd[name] = "true";
                cd.Save();
            }

            #endregion

            //增加一個社團Tab
            MotherForm.AddPanel(ClubAdmin.Instance);

            //增加一個ListView
            ClubAdmin.Instance.AddView(new ExtracurricularActivitiesView());

            //驗證規則
            FactoryProvider.FieldFactory.Add(new CLUBFieldValidatorFactory());
            FactoryProvider.RowFactory.Add(new CLUBRowValidatorFactory());

            // .NET 版本預設為Ss13(已過時) ,會被擋住, 透過更正連線解決,
            //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

            #region 毛毛蟲

            //學生社團成績
            FeatureAce UserPermission = FISCA.Permission.UserAcl.Current[Permissions.學生社團成績_資料項目];
            if (UserPermission.Editable || UserPermission.Viewable)
            {
                K12.Presentation.NLDPanels.Student.AddDetailBulider(new FISCA.Presentation.DetailBulider <StudentResultItem>());
            }

            //社團照片
            UserPermission = FISCA.Permission.UserAcl.Current[Permissions.社團照片];
            if (UserPermission.Editable || UserPermission.Viewable)
            {
                ClubAdmin.Instance.AddDetailBulider(new FISCA.Presentation.DetailBulider <ClubImageItem>());
            }

            #region 社團基本資料

            UserPermission = FISCA.Permission.UserAcl.Current[Permissions.社團基本資料];
            if (UserPermission.Editable || UserPermission.Viewable)
            {
                IClubDetailItemAPI itemB = FISCA.InteractionService.DiscoverAPI <IClubDetailItemAPI>();
                if (itemB != null)
                {
                    ClubAdmin.Instance.AddDetailBulider(itemB.CreateBasicInfo());
                }
                else
                {
                    ClubAdmin.Instance.AddDetailBulider(new FISCA.Presentation.DetailBulider <ClubDetailItem>());
                }
            }

            #endregion

            //社團限制
            UserPermission = FISCA.Permission.UserAcl.Current[Permissions.社團限制];
            if (UserPermission.Editable || UserPermission.Viewable)
            {
                ClubAdmin.Instance.AddDetailBulider(new FISCA.Presentation.DetailBulider <ClubRestrictItem>());
            }

            //社團學生
            UserPermission = FISCA.Permission.UserAcl.Current[Permissions.社團參與學生];
            if (UserPermission.Editable || UserPermission.Viewable)
            {
                ClubAdmin.Instance.AddDetailBulider(new FISCA.Presentation.DetailBulider <ClubStudent>());
            }

            //社團幹部
            UserPermission = FISCA.Permission.UserAcl.Current[Permissions.社團幹部];
            if (UserPermission.Editable || UserPermission.Viewable)
            {
                ClubAdmin.Instance.AddDetailBulider(new FISCA.Presentation.DetailBulider <CadresItem>());
            }

            #endregion

            #region 功能按鈕
            #region 編輯
            {
                RibbonBarItem edit = ClubAdmin.Instance.RibbonBarItems["編輯"];
                edit["新增社團"].Size   = RibbonBarButton.MenuButtonSize.Large;
                edit["新增社團"].Image  = Properties.Resources.health_and_leisure_add_64;
                edit["新增社團"].Enable = Permissions.新增社團權限;
                edit["新增社團"].Click += delegate
                {
                    NewAddClub insert = new NewAddClub();
                    insert.ShowDialog();
                };

                edit["複製社團"].Size   = RibbonBarButton.MenuButtonSize.Large;
                edit["複製社團"].Image  = Properties.Resources.rotate_64;
                edit["複製社團"].Enable = false;
                edit["複製社團"].Click += delegate
                {
                    CopyClub insert = new CopyClub();
                    insert.ShowDialog();
                };
                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    edit["複製社團"].Enable = SourceCount && Permissions.複製社團權限;
                };

                edit["刪除社團"].Size   = RibbonBarButton.MenuButtonSize.Large;
                edit["刪除社團"].Image  = Properties.Resources.health_and_leisure_remove_64;
                edit["刪除社團"].Enable = false;
                edit["刪除社團"].Click += delegate
                {
                    DeleteClub();
                };
                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    ClubAdmin.Instance.ListPaneContexMenu["刪除社團"].Enable = SourceCount && Permissions.刪除社團權限;
                    edit["刪除社團"].Enable = SourceCount && Permissions.刪除社團權限;
                };
            }
            #endregion
            #region 資料統計
            {
                RibbonBarItem totle = ClubAdmin.Instance.RibbonBarItems["資料統計"];
                totle["匯出"].Size  = RibbonBarButton.MenuButtonSize.Large;
                totle["匯出"].Image = Properties.Resources.Export_Image;

                totle["匯出"]["匯出社團基本資料"].Enable = Permissions.匯出社團基本資料權限;
                totle["匯出"]["匯出社團基本資料"].Click += delegate
                {
                    SmartSchool.API.PlugIn.Export.Exporter  exporter = new K12.Club.Volunteer.CLUB.ExportCLUBData();
                    K12.Club.Volunteer.CLUB.ExportStudentV2 wizard   = new K12.Club.Volunteer.CLUB.ExportStudentV2(exporter.Text, exporter.Image);
                    exporter.InitializeExport(wizard);
                    wizard.ShowDialog();
                };

                totle["匯出"]["匯出聯課活動成績(資料介接)"].Enable = Permissions.匯出社團成績_資料介接權限;
                totle["匯出"]["匯出聯課活動成績(資料介接)"].Click += delegate
                {
                    SmartSchool.API.PlugIn.Export.Exporter  exporter = new K12.Club.Volunteer.CLUB.SpecialResult();
                    K12.Club.Volunteer.CLUB.ExportStudentV2 wizard   = new K12.Club.Volunteer.CLUB.ExportStudentV2(exporter.Text, exporter.Image);
                    exporter.InitializeExport(wizard);
                    wizard.ShowDialog();
                };

                totle["匯出"]["匯出社團幹部清單"].Enable = Permissions.匯出社團幹部清單權限;
                totle["匯出"]["匯出社團幹部清單"].Click += delegate
                {
                    SmartSchool.API.PlugIn.Export.Exporter  exporter = new K12.Club.Volunteer.CLUB.ClubCadResult();
                    K12.Club.Volunteer.CLUB.ExportStudentV2 wizard   = new K12.Club.Volunteer.CLUB.ExportStudentV2(exporter.Text, exporter.Image);
                    exporter.InitializeExport(wizard);
                    wizard.ShowDialog();
                };

                totle["匯出"]["匯出社團參與學生"].Enable = Permissions.匯出社團參與學生權限;
                totle["匯出"]["匯出社團參與學生"].Click += delegate
                {
                    (new Ribbon.Export.frmExportSCJoin()).ShowDialog();
                };

                totle["匯入"].Size  = RibbonBarButton.MenuButtonSize.Large;
                totle["匯入"].Image = Properties.Resources.Import_Image;

                totle["匯入"]["匯入社團基本資料"].Enable = Permissions.匯入社團基本資料權限;
                totle["匯入"]["匯入社團基本資料"].Click += delegate
                {
                    new ImportCLUBData().Execute();
                };

                totle["匯入"]["匯入社團參與學生"].Enable = Permissions.匯入社團參與學生權限;
                totle["匯入"]["匯入社團參與學生"].Click += delegate
                {
                    new ImportSCJoinData().Execute();
                    ClubEvents.RaiseAssnChanged();
                };

                totle["匯入"]["匯入社團幹部清單"].Enable = Permissions.匯入社團幹部清單權限;
                totle["匯入"]["匯入社團幹部清單"].Click += delegate
                {
                    new ImportClubCadres().Execute();

                    ClubEvents.RaiseAssnChanged();
                };

                totle["報表"].Size  = RibbonBarButton.MenuButtonSize.Large;
                totle["報表"].Image = Properties.Resources.Report;
                // 2018/01/16 羿均 註解較舊功能
                totle["報表"]["社團點名單"].Enable = false;
                totle["報表"]["社團點名單"].Click += delegate
                {
                    AssociationsPointList insert = new AssociationsPointList();
                };
                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    totle["報表"]["社團點名單"].Enable = SourceCount && Permissions.社團點名單權限;
                };

                totle["報表"]["社團點名單(套表列印)"].Enable = false;
                totle["報表"]["社團點名單(套表列印)"].Click += delegate
                {
                    ClubPointsListForm insert = new ClubPointsListForm();
                    insert.ShowDialog();
                };
                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    totle["報表"]["社團點名單(套表列印)"].Enable = SourceCount && Permissions.社團點名單_套表列印權限;
                };

                totle["報表"]["社團成績單"].Enable = false;
                totle["報表"]["社團成績單"].Click += delegate
                {
                    ClubTranscript insert = new ClubTranscript();
                };
                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    totle["報表"]["社團成績單"].Enable = SourceCount && Permissions.社團成績單權限;
                };

                totle["報表"]["社團概況表"].Enable = Permissions.社團概況表權限;
                totle["報表"]["社團概況表"].Click += delegate
                {
                    CLUBFactsTable insert = new CLUBFactsTable();
                    insert.ShowDialog();
                };
            }
            #endregion
            #region 學生選社
            {
                RibbonBarItem oder = ClubAdmin.Instance.RibbonBarItems["學生選社"];

                oder["開放選社時間"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                oder["開放選社時間"].Image  = Properties.Resources.time_frame_refresh_128;
                oder["開放選社時間"].Enable = Permissions.開放選社時間權限;
                oder["開放選社時間"].Click += delegate
                {
                    OpenClubJoinDateTime insert = new OpenClubJoinDateTime();
                    insert.ShowDialog();
                };
                // 2018/01/16 羿均 因應弘文高中需求新增
                oder["匯出選社結果"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                oder["匯出選社結果"].Image  = Properties.Resources.Export_Image;
                oder["匯出選社結果"].Enable = Permissions.學生選社志願設定權限;
                oder["匯出選社結果"].Click += delegate
                {
                    Report.匯出選社結果.ExportStudentClubForm e = new Report.匯出選社結果.ExportStudentClubForm();
                    e.ShowDialog();
                };

                // 2018/1/15 羿均 此為社團2.0開發工具: 隨機填入學生社團志願
                //RibbonBarItem test = ClubAdmin.Instance.RibbonBarItems["測試資料"];
                //test["隨機填入學生志願"].Size = RibbonBarButton.MenuButtonSize.Medium;
                //test["隨機填入學生志願"].Image = Properties.Resources.group_up_64;
                //test["隨機填入學生志願"].Enable = true;
                //test["隨機填入學生志願"].Click += delegate
                //{
                //    AutoVolunteer a = new AutoVolunteer();
                //};

                oder["選社志願設定"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                oder["選社志願設定"].Image  = Properties.Resources.presentation_a_config_64;
                oder["選社志願設定"].Enable = Permissions.學生選社志願設定權限;
                oder["選社志願設定"].Click += delegate
                {
                    V_Config v = new V_Config();
                    v.ShowDialog();
                };

                oder["志願分配作業"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                oder["志願分配作業"].Image  = Properties.Resources.group_up_64;
                oder["志願分配作業"].Enable = Permissions.學生社團分配權限;
                oder["志願分配作業"].Click += delegate
                {
                    //是診斷模式 是超級使用者 按下Shift
                    if (FISCA.RTContext.IsDiagMode && FISCA.Authentication.DSAServices.IsSysAdmin && Control.ModifierKeys == Keys.Shift)
                    {
                        //一個社團選社資料清空功能
                        SCJReMove move = new SCJReMove();
                        move.ShowDialog();
                    }
                    else
                    {
                        VolunteerClassForm form = new VolunteerClassForm();
                        DialogResult       dr   = form.ShowDialog();
                        if (dr == DialogResult.Yes)
                        {
                            FISCA.Presentation.MotherForm.SetStatusBarMessage("社團資料已重新讀取");
                            ClubEvents.RaiseAssnChanged();
                        }
                    }
                };
            }
            #endregion
            #region 檢查
            {
                RibbonBarItem check = ClubAdmin.Instance.RibbonBarItems["檢查"];
                check["未選社團檢查"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                check["未選社團檢查"].Image  = Properties.Resources.group_help_64;
                check["未選社團檢查"].Enable = Permissions.未選社團學生權限;
                check["未選社團檢查"].Click += delegate
                {
                    CheckStudentIsNotInClub insert = new CheckStudentIsNotInClub();
                    insert.ShowDialog();
                };

                check["重覆選社檢查"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                check["重覆選社檢查"].Image  = Properties.Resources.meeting_64;
                check["重覆選社檢查"].Enable = Permissions.重覆選社檢查權限;
                check["重覆選社檢查"].Click += delegate
                {
                    RepeatForm insert = new RepeatForm();
                    insert.ShowDialog();
                };

                check["調整社團學生"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                check["調整社團學生"].Image  = Properties.Resources.layers_64;
                check["調整社團學生"].Enable = false;
                check["調整社團學生"].Click += delegate
                {
                    if (ClubAdmin.Instance.SelectedSource.Count > 7)
                    {
                        MsgBox.Show("所選社團大於7個\n本功能最多僅處理7個社團!!");
                    }
                    else if (ClubAdmin.Instance.SelectedSource.Count < 2)
                    {
                        MsgBox.Show("使用調整社團學生功能\n必須2個以上社團!!");
                    }
                    else
                    {
                        SplitClasses insert = new SplitClasses();
                        insert.ShowDialog();
                    }
                };

                check["檢查/批次社團鎖社"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                check["檢查/批次社團鎖社"].Image  = Properties.Resources.layers_64;
                check["檢查/批次社團鎖社"].Enable = Permissions.檢查批次社團鎖社權限;
                check["檢查/批次社團鎖社"].Click += delegate
                {
                    Ribbon.檢查_批次社團鎖社.MutipleLockForm mutiplelock = new Ribbon.檢查_批次社團鎖社.MutipleLockForm();

                    mutiplelock.ShowDialog();
                };


                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    check["調整社團學生"].Enable = SourceCount && Permissions.調整社團學生權限;
                };
            }
            #endregion
            #region 成績
            {
                RibbonBarItem Results = ClubAdmin.Instance.RibbonBarItems["成績"];
                Results["成績輸入"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                Results["成績輸入"].Image  = Properties.Resources.marker_fav_64;
                Results["成績輸入"].Enable = false;
                Results["成績輸入"].Click += delegate
                {
                    ClubResultsInput insert = new ClubResultsInput();
                    insert.ShowDialog();
                };
                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    Results["成績輸入"].Enable = SourceCount && Permissions.成績輸入權限;
                };

                Results["評量比例"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                Results["評量比例"].Image  = Properties.Resources.barchart_64;
                Results["評量比例"].Enable = Permissions.評量項目權限;
                Results["評量比例"].Click += delegate
                {
                    GradingProjectConfig insert = new GradingProjectConfig();
                    insert.ShowDialog();
                };

                Results["學期結算"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                Results["學期結算"].Image  = Properties.Resources.brand_write_64;
                Results["學期結算"].Enable = false;
                Results["學期結算"].Click += delegate
                {
                    IClubClearingFormAPI itemK = FISCA.InteractionService.DiscoverAPI <IClubClearingFormAPI>();
                    if (itemK != null)
                    {
                        itemK.CreateBasicForm().ShowDialog();
                    }
                    else
                    {
                        ClearingForm insert = new ClearingForm();
                        insert.ShowDialog();
                    }
                };
                ClubAdmin.Instance.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (ClubAdmin.Instance.SelectedSource.Count > 0);
                    Results["學期結算"].Enable = SourceCount && Permissions.學期結算權限;
                };

                Results["成績輸入時間"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                Results["成績輸入時間"].Image  = Properties.Resources.time_frame_refresh_128;
                Results["成績輸入時間"].Enable = Permissions.成績輸入時間權限;
                Results["成績輸入時間"].Click += delegate
                {
                    ResultsInputDateTime insert = new ResultsInputDateTime();
                    insert.ShowDialog();
                };
            }
            #endregion
            #region 課程
            {
                RibbonBarItem course = ClubAdmin.Instance.RibbonBarItems["課程"];
                course["轉入課程"].Size   = RibbonBarButton.MenuButtonSize.Medium;
                course["轉入課程"].Image  = Properties.Resources.library_up_64;
                course["轉入課程"].Enable = Permissions.轉入課程權限;
                course["轉入課程"].Click += delegate
                {
                    frmImportToCourse form = new frmImportToCourse();
                    form.ShowDialog();
                };
            }
            #endregion

            #region 右鍵選單
            ClubAdmin.Instance.NavPaneContexMenu["重新整理"].Click += delegate
            {
                ClubEvents.RaiseAssnChanged();
            };
            ClubAdmin.Instance.ListPaneContexMenu["刪除社團"].Enable = false;
            ClubAdmin.Instance.ListPaneContexMenu["刪除社團"].Click += delegate
            {
                DeleteClub();
            };
            #endregion
            #endregion

            #region 學生功能按鈕
            {
                RibbonBarItem Print = FISCA.Presentation.MotherForm.RibbonBarItems["學生", "資料統計"];
                Print["匯出"]["社團相關匯出"]["匯出社團學期成績"].Enable = Permissions.匯出社團學期成績權限;
                Print["匯出"]["社團相關匯出"]["匯出社團學期成績"].Click += delegate
                {
                    SmartSchool.API.PlugIn.Export.Exporter exporter = new ExportStudentClubResult();
                    ExportStudentV2 wizard = new ExportStudentV2(exporter.Text, exporter.Image);
                    exporter.InitializeExport(wizard);
                    wizard.ShowDialog();
                };
            }
            {
                RibbonBarItem Print = FISCA.Presentation.MotherForm.RibbonBarItems["學生", "資料統計"];

                Print["匯出"]["社團相關匯出"]["匯出社團志願序"].Enable = Permissions.匯出社團志願序權限;
                Print["匯出"]["社團相關匯出"]["匯出社團志願序"].Click += delegate
                {
                    SmartSchool.API.PlugIn.Export.Exporter exporter = new K12.Club.Volunteer.CLUB.ExportVolunteerRecord();
                    ExportStudentV2 wizard = new ExportStudentV2(exporter.Text, exporter.Image);
                    exporter.InitializeExport(wizard);
                    wizard.ShowDialog();
                };
            }
            {
                RibbonBarItem Print = FISCA.Presentation.MotherForm.RibbonBarItems["學生", "資料統計"];
                Print["匯入"]["社團相關匯入"]["匯入社團志願序"].Enable = Permissions.匯入社團志願序權限;
                Print["匯入"]["社團相關匯入"]["匯入社團志願序"].Click += delegate
                {
                    new ImportVolunteerMPG().Execute();
                };
            }
            {
                RibbonBarItem Print = FISCA.Presentation.MotherForm.RibbonBarItems["學生", "資料統計"];
                Print["報表"]["社團相關報表"]["社團幹部證明單"].Enable = Permissions.社團幹部證明單權限;
                Print["報表"]["社團相關報表"]["社團幹部證明單"].Click += delegate
                {
                    CadreProveReport cpr = new CadreProveReport();
                    cpr.ShowDialog();
                };
            }
            #endregion

            #region 班級功能按鈕
            {
                RibbonBarItem InClass = FISCA.Presentation.MotherForm.RibbonBarItems["班級", "資料統計"];
                InClass["報表"]["社團相關報表"]["班級學生選社同意確認單"].Enable = false;
                InClass["報表"]["社團相關報表"]["班級學生選社同意確認單"].Click += delegate
                {
                    ElectionForm insert = new ElectionForm();
                    insert.ShowDialog();
                };

                InClass["報表"]["社團相關報表"]["班級社團成績單"].Enable = false;
                InClass["報表"]["社團相關報表"]["班級社團成績單"].Click += delegate
                {
                    ClassClubTranscript insert = new ClassClubTranscript();
                    insert.ShowDialog();
                };

                K12.Presentation.NLDPanels.Class.SelectedSourceChanged += delegate
                {
                    //是否選擇大於0的社團
                    bool SourceCount = (K12.Presentation.NLDPanels.Class.SelectedSource.Count > 0);

                    bool a = (SourceCount && Permissions.班級學生選社_確認表_權限);
                    InClass["報表"]["社團相關報表"]["班級學生選社同意確認單"].Enable = a;


                    bool b = (SourceCount && Permissions.班級社團成績單權限);
                    InClass["報表"]["社團相關報表"]["班級社團成績單"].Enable = b;
                };
            }
            #endregion

            #region 登錄權限代碼

            //是否能夠只用單一代碼,決定此模組之使用
            Catalog detail1;
            detail1 = RoleAclSource.Instance["社團"]["功能按鈕"];
            detail1.Add(new RibbonFeature(Permissions.新增社團, "新增社團"));
            detail1.Add(new RibbonFeature(Permissions.複製社團, "複製社團"));
            detail1.Add(new RibbonFeature(Permissions.刪除社團, "刪除社團"));
            detail1.Add(new RibbonFeature(Permissions.成績輸入, "成績輸入"));
            detail1.Add(new RibbonFeature(Permissions.評量項目, "評量比例"));
            detail1.Add(new RibbonFeature(Permissions.學期結算, "學期結算"));
            detail1.Add(new RibbonFeature(Permissions.未選社團學生, "未選社團學生"));
            detail1.Add(new RibbonFeature(Permissions.調整社團學生, "調整社團學生"));
            detail1.Add(new RibbonFeature(Permissions.檢查批次社團鎖社, "檢查/批次社團鎖社"));
            detail1.Add(new RibbonFeature(Permissions.開放選社時間, "開放選社時間"));
            detail1.Add(new RibbonFeature(Permissions.成績輸入時間, "成績輸入時間"));
            detail1.Add(new RibbonFeature(Permissions.重覆選社檢查, "重覆選社檢查"));
            detail1.Add(new RibbonFeature(Permissions.轉入課程, "轉入課程"));
            //志願序獨有
            detail1.Add(new RibbonFeature(Permissions.學生選社志願設定, "學生選社志願設定"));
            detail1.Add(new RibbonFeature(Permissions.學生社團分配, "學生社團分配"));

            detail1 = RoleAclSource.Instance["社團"]["匯出/匯入"];
            detail1.Add(new RibbonFeature(Permissions.匯出社團基本資料, "匯出社團基本資料"));
            detail1.Add(new RibbonFeature(Permissions.匯出社團幹部清單, "匯出社團幹部清單"));
            detail1.Add(new RibbonFeature(Permissions.匯出社團成績_資料介接, "匯出社團學期成績(資料介接)"));
            detail1.Add(new RibbonFeature(Permissions.匯出社團參與學生, "匯出社團參與學生"));

            //匯入
            detail1.Add(new RibbonFeature(Permissions.匯入社團基本資料, "匯入社團基本資料"));
            detail1.Add(new RibbonFeature(Permissions.匯入社團參與學生, "匯入社團參與學生"));
            detail1.Add(new RibbonFeature(Permissions.匯入社團幹部清單, "匯入社團幹部清單"));

            detail1 = RoleAclSource.Instance["社團"]["報表"];
            detail1.Add(new RibbonFeature(Permissions.社團點名單, "社團點名單"));
            detail1.Add(new RibbonFeature(Permissions.社團點名單_套表列印, "社團點名單(套表列印)"));
            detail1.Add(new RibbonFeature(Permissions.社團成績單, "社團成績單"));
            detail1.Add(new RibbonFeature(Permissions.社團概況表, "社團概況表"));

            detail1 = RoleAclSource.Instance["社團"]["資料項目"];
            detail1.Add(new DetailItemFeature(Permissions.社團基本資料, "基本資料"));
            detail1.Add(new DetailItemFeature(Permissions.社團照片, "社團照片"));
            detail1.Add(new DetailItemFeature(Permissions.社團限制, "社團限制"));
            detail1.Add(new DetailItemFeature(Permissions.社團參與學生, "參與學生"));
            detail1.Add(new DetailItemFeature(Permissions.社團幹部, "社團幹部"));

            detail1 = RoleAclSource.Instance["班級"]["報表"];
            detail1.Add(new RibbonFeature(Permissions.班級學生選社_確認表, "班級學生選社同意確認單"));
            detail1.Add(new RibbonFeature(Permissions.班級社團成績單, "班級社團成績單"));

            detail1 = RoleAclSource.Instance["學生"]["匯出/匯入"];
            detail1.Add(new RibbonFeature(Permissions.匯出社團學期成績, "匯出社團學期成績"));
            detail1.Add(new RibbonFeature(Permissions.匯出社團志願序, "匯出社團志願序"));
            detail1.Add(new RibbonFeature(Permissions.匯入社團志願序, "匯入社團志願序"));

            detail1 = RoleAclSource.Instance["學生"]["資料項目"];
            detail1.Add(new DetailItemFeature(Permissions.學生社團成績_資料項目, "社團成績"));

            detail1 = RoleAclSource.Instance["學生"]["報表"];
            detail1.Add(new RibbonFeature(Permissions.社團幹部證明單, "社團幹部證明單"));
            #endregion

            ClubAdmin.Instance.SelectedSourceChanged += delegate
            {
                FISCA.Presentation.MotherForm.SetStatusBarMessage("選擇「" + ClubAdmin.Instance.SelectedSource.Count + "」個社團");
            };
        }