コード例 #1
0
        private static void Fill(ConfigurationDataSet dataSet, ActionElementCollection actions, Guid?parentActionId)
        {
            foreach (ActionElement action in actions)
            {
                ConfigurationDataSet.ActionRow actionRow = dataSet.Action.FindByActionId(action.Id);
                if (actionRow != null)
                {
                    if (!actionRow.BuiltIn)
                    {
                        actionRow = null;
                    }
                }

                if (actionRow == null)
                {
                    actionRow = dataSet.Action.NewActionRow();
                    LoadActionAttributes(actionRow, action, parentActionId);
                    dataSet.Action.AddActionRow(actionRow);
                }

                FillAlternativeParents(dataSet.ActionsParentActions, action);
                RoleProvider.FillRolesActions(dataSet, action);

                int visibleChildSettingsCount = 0;
                foreach (SettingElement s in action.Settings)
                {
                    if (s.Visible)
                    {
                        visibleChildSettingsCount++;
                    }
                }

                if (visibleChildSettingsCount > 0)
                {
                    if (string.IsNullOrEmpty(action.NavigateUrl))
                    {
                        actionRow.NavigateUrl = ResourceProvider.SettingsPageVirtualPath + "?actionid=" + actionRow.ActionId.ToString("N");
                    }

                    SettingProvider.Fill(dataSet.Setting, dataSet.SettingListsValues, action.Settings, null, actionRow.ActionId, GetActionSettingLevels(actionRow.AuthenticationRequired, actionRow.InstanceRequired));

                    dataSet.Setting.AcceptChanges();
                    dataSet.SettingListsValues.AcceptChanges();
                }

                Fill(dataSet, action.Actions, actionRow.ActionId);
            }
        }