/// Execute main logic for Home block. public override void Execute() { var pars = this.Check(); if (pars == null) { return; } var prepare = new THashtable(); var doItem = new DOItem(this.context.Connection); prepare["[#BrowseItemsLink]"] = this.GetLink(Config.INDEX_PAGE, "?p=", null, "items"); if (Config.SHOW_IMAGES) { prepare["[#Show_Images]"] = 1; } var source = (String)null; var search = (String)null; var maxRows = Config.DB_HOME_ROWS; var dsItems = doItem.EnumItems(source, search, 1, maxRows); var rowCount = 1; var items = new TArrayList(); for (int n = 0; n < dsItems.GetSize(); n++) { var oItem = dsItems.GetRow(n); var row = FillItemRow(oItem, doItem.GetIdField(), rowCount); items.Add(row); rowCount++; } prepare["[#Items]"] = items; this.Write("Pages/home", prepare); }
/// Execute main logic for Items block. public override void Execute() { var pars = this.Check(); if (pars == null) { return; } var list = (String)pars["list"]; var listNumber = list == null ? 1 : INT(list); var sourceName = (String)pars["source_name"]; var filterName = (String)pars["filter_name"]; var errorMessage = ""; var filter = (String)null; var category = (String)null; if (!NUL(filterName)) { var doCategory = new DOCategory(this.context.Connection); THashtable[] oCategory = { new THashtable() }; if (!doCategory.CheckFilterName(filterName, oCategory)) { errorMessage += "Non-existing filter name!"; } else { category = STR(oCategory[0]["s_Name"]); filter = STR(oCategory[0]["s_Filter"]); } } var sourceId = -1; if (!NUL(sourceName)) { var doSource = new DOSource(this.context.Connection); THashtable[] oSource = { new THashtable() }; if (!doSource.CheckSourceName(sourceName, oSource)) { if (errorMessage.Length > 0) { errorMessage += "<br/>"; } errorMessage += "Non-existing source name!"; } else { sourceId = INT(oSource[0]["i_SourceId"]); } } var engine = this.context.GetEngine(); var prepare = new THashtable(); if (errorMessage.Length > 0) { prepare["[#ErrMessage]"] = errorMessage; this.Write("error", prepare); return; } if (Config.SHOW_IMAGES) { prepare["[#Show_Images]"] = 1; } prepare["[#ColSpan]"] = Config.SHOW_IMAGES ? 4 : 3; // Uncomment to enable filtering by source and/or category prepare["[#FilterItems]"] = engine.IncludeTemplate("Pages/FilterItems"); var s_Title = CAT( "Browse ", Config.NAME_ITEMS, (this.context.IsMobile ? "<br/>" : null), (!BLANK(sourceName) ? CAT(" ... from '", sourceName, "'") : null), (!BLANK(filter) ? CAT(" ... for '", category, "'") : null) ); prepare["[#Title]"] = s_Title; var maxRows = Config.DB_ITEMS_ROWS; var doItem = new DOItem(this.context.Connection); //String realFilter = DOItem.BuildSqlByFilter(filter); var realFilter = DOItem.BuildSqlByCategory(category); var dsItems = doItem.EnumItems(sourceName, realFilter, listNumber, maxRows); var listTotal = dsItems.GetTotalPages(); if (listNumber > listTotal) { if (listTotal > 0) { prepare["[#ErrMessage]"] = "List number is too large!"; this.Write("error", prepare); return; } else { prepare["[#ErrMessage]"] = "Empty list!"; this.Write("error", prepare); return; } } if (listTotal > 1) { prepare["[#List_Total]"] = listTotal; prepare["[#List]"] = listNumber; } var count = 1; var rows = new TArrayList(); for (int n = 0; n < dsItems.GetSize(); n++) { var oItem = dsItems.GetRow(n); var row = FillItemRow(oItem, doItem.GetIdField(), count); count++; rows.Add(row); } prepare["[#Rows]"] = rows; if (listTotal > 1) { var chunk = 2; var before = false; var after = false; var pages = new TArrayList(); for (int n = 1; n <= listTotal; n++) { var page = new THashtable(); if (n < listNumber - chunk) { if (!before) { before = true; page["[#Text]"] = "1"; page["[#Link]"] = GetPageLink(1); pages.Add(page); page = new THashtable(); page["[#Text]"] = " ... "; //row.Remove("[#Link]"); pages.Add(page); } continue; } if (n > listNumber + chunk) { if (!after) { after = true; page["[#Text]"] = " ... "; pages.Add(page); page = new THashtable(); page["[#Text]"] = listTotal; page["[#Link]"] = GetPageLink(listTotal); pages.Add(page); } continue; } if (listNumber == n) { page["[#Text]"] = CAT("=", n, "="); pages.Add(page); } else { if (n == 1) { page["[#Link]"] = GetPageLink(1); page["[#Text]"] = 1; } else { page["[#Link]"] = GetPageLink(n); page["[#Text]"] = n; } pages.Add(page); } } prepare["[#Pages]"] = pages; } this.Write("Pages/items", prepare); }