Пример #1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            string templateName = "list";
            string action = string.Empty;

            if (EnableSef)
            {
                BXParamsBag<string> sefTemplates = new BXParamsBag<string>();
                sefTemplates.Add("list$page", SefTemplatePageIndex);
                sefTemplates.Add("list$all", SefTemplateShowAll);
                sefTemplates.Add("form$new", SefTemplateCreateElement);
                sefTemplates.Add("form$edit", SefTemplateModifyElement);


                string code = MapVariable(SefFolder, sefTemplates, ComponentCache, "list");

                int position = code.IndexOf('$');
                if (position > 0)
                {
                    templateName = code.Substring(0, position);
                    action = code.Substring(position + 1);
                }
                else
                {
                    templateName = code;
                    action = string.Empty;
                }


                if (string.Equals(templateName, "form", StringComparison.InvariantCultureIgnoreCase))
                {
                    if ((string.Equals(action, "edit", StringComparison.InvariantCultureIgnoreCase) && !InternalBehaviour.IsElementModificationAllowed()) ||
                        (string.Equals(action, "new", StringComparison.InvariantCultureIgnoreCase) && !InternalBehaviour.IsElementCreationAllowed())
                        )
                    {
                        templateName = "list";
                        action = string.Empty;
                    }
                }


                if (string.Equals(templateName, "list", StringComparison.InvariantCultureIgnoreCase))
                {
                    BXParamsBag<object> replaceItems = new BXParamsBag<object>(ComponentCache);
                    replaceItems.Remove("PageID");  

                    replaceItems["IblockId"] = replaceItems["IBLOCK_ID"] = IBlockId.ToString();

                    ComponentCache["PagingIndexTemplate"] = CombineLink(SefFolder, string.Empty);
                    ComponentCache["PagingPageTemplate"] = CombineLink(SefFolder, MakeLink(SefTemplatePageIndex, replaceItems));
                    ComponentCache["PagingShowAllTemplate"] = CombineLink(SefFolder, MakeLink(SefTemplateShowAll, replaceItems));
                    ComponentCache["ShowAll"] = string.Equals(code, "list$all", StringComparison.Ordinal) ? "y" : "n";
                    ComponentCache["ElementCreationUrl"] = CombineLink(SefFolder, MakeLink(SefTemplateCreateElement, replaceItems));
                    ComponentCache["ElementModificationUrl"] = CombineLink(SefFolder, MakeLink(SefTemplateModifyElement, replaceItems));
                }
                else if (string.Equals(templateName, "form", StringComparison.InvariantCultureIgnoreCase))
                    Parameters["RedirectPageUrl"] = CombineLink(SefFolder, string.Empty);
            }
            else
            {
                bool aboutCreateEl = false,
                        aboutModifyEl = false;
                string createElParName = RequestParamNameCreateElement,
                        modifyElParName = RequestParamNameModifyElement;

                if (!string.IsNullOrEmpty(modifyElParName))
                {
                    string elementID = Request.QueryString.Get(modifyElParName);
                    if (!string.IsNullOrEmpty(elementID))
                    {
                        aboutModifyEl = true;
                        ComponentCache["ElementID"] = elementID;
                    }
                }

                if (!aboutModifyEl && !string.IsNullOrEmpty(createElParName))
                {
                    int keyCount = Request.QueryString.Count;
                    for (int i = 0; i < keyCount; i++)
                    {
                        if (!string.Equals(Request.QueryString[i], createElParName, StringComparison.InvariantCultureIgnoreCase))
                            continue;
                        aboutCreateEl = true;
                        ComponentCache["ElementID"] = "0";
                        break;
                    }
                }

                if ((aboutModifyEl && InternalBehaviour.IsElementModificationAllowed()) || (aboutCreateEl && InternalBehaviour.IsElementCreationAllowed()))
                {
                    templateName = "form";
                    Parameters["RedirectPageUrl"] = BXSefUrlManager.CurrentUrl.AbsolutePath;
                }
                else
                {
                    BXParamsBag<string> requestParamAliases = new BXParamsBag<string>();
                    requestParamAliases["PageID"] = RequestParamNamePageIndex;
                    requestParamAliases["ShowAll"] = RequestParamNameShowAll;
                    BXComponentManager.MapVariable(requestParamAliases, ComponentCache, true);

                    if (ComponentCache.ContainsKey("ShowAll") && string.IsNullOrEmpty(ComponentCache.GetString("ShowAll", null)))
                        ComponentCache["ShowAll"] = "y";

                    string filePath = BXSefUrlManager.CurrentUrl.AbsolutePath;

                    ComponentCache["PagingIndexTemplate"] = filePath;
                    ComponentCache["PagingPageTemplate"] = String.Format("{0}?{1}=#PageId#", filePath, RequestParamNamePageIndex);
                    ComponentCache["PagingShowAllTemplate"] = String.Format("{0}?{1}", filePath, RequestParamNameShowAll);

                    ComponentCache["ElementCreationUrl"] = !string.IsNullOrEmpty(createElParName) ? string.Concat("?", createElParName) : string.Empty;
                    ComponentCache["ElementModificationUrl"] = !string.IsNullOrEmpty(modifyElParName) ? string.Concat("?", modifyElParName, "=#ElementID#") : string.Empty;
                }
            }
            IncludeComponentTemplate(templateName);
        }