public GetCustomModuleRuleByParameters ( string CultureCode, int TabId, string Parameters ) : Satrabel.HttpModules.Provider.UrlRule | ||
CultureCode | string | |
TabId | int | |
Parameters | string | |
return | Satrabel.HttpModules.Provider.UrlRule |
public UrlRule GetCustomModuleRuleByParameters(string CultureCode, int TabId, string Parameters)
{
UrlRule rule = null;
IEnumerable<UrlRule> rules;
if (TabId == Null.NullInteger)
{
rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatch(Parameters) && r.RemoveTab == true);
}
else
{
rules = _rules.Where(r => r.RuleType == UrlRuleType.Custom && r.Action == UrlRuleAction.Rewrite && r.IsMatch(Parameters));
}
rules = rules.Where(r => !r.Url.Contains("[pagename]")); // pagename present, it not possible to know the right url
if (TabId != Null.NullInteger)
{
//with tabid
var tabRules = rules.Where(r => r.TabId == TabId);
rule = GetFirstRule(tabRules, CultureCode);
}
else
{
rule = GetFirstRule(rules, CultureCode);
}
//without tabid
if (rule == null)
{
var tabRules = rules.Where(r => r.TabId <= 0);
rule = GetFirstRule(tabRules, CultureCode);
}
return rule;
}
private static void ProcessQuery(CacheController cacheCtrl, RewriterAction action, int PortalId) { if ((action.QueryUrl.Trim().Length > 0)) { //split the value into an array based on "/" ( ie. /tabid/##/ ) string parameters = action.QueryUrl.TrimStart('?', '&').Trim(); var rule = cacheCtrl.GetModuleRuleByParameters(action.CultureCode, action.TabId, parameters); if (rule != null) { if (rule.RemoveTab) { action.RedirectPage = ""; } action.RedirectModule = rule.Url; action.DoRedirect = true; action.Raison += "+ModuleRule:" + rule.Parameters + ">" + rule.Url; action.QueryUrl = ""; return; } rule = cacheCtrl.GetCustomModuleRuleByParameters(action.CultureCode, action.TabId, parameters); if (rule != null) { if (rule.RemoveTab) { action.RedirectPage = ""; } action.RedirectModule = rule.Replace(parameters, ""); action.DoRedirect = true; action.Raison += "+ModuleRule:" + parameters + ">" + action.RedirectModule; action.QueryUrl = ""; return; } } }