} // Example "|" ... originally tried adding this as input to rule, but, oddly a single pipe as a value breaks the UI public override void Apply(T ruleContext) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNullOrEmpty(Name, "Name"); Assert.ArgumentNotNullOrEmpty(Term, "Term"); // Assert.ArgumentNotNullOrEmpty(Delimiter, "Delimiter"); Delimiter = "|"; // hard code for now if (string.IsNullOrWhiteSpace(ruleContext.Reference.Settings.Parameters)) { ruleContext.Reference.Settings.Parameters = $"{Name}={Term ?? string.Empty}}}"; return; } var urlString = new UrlString(ruleContext.Reference.Settings.Parameters); var rawValue = urlString.Parameters[Name]; if (string.IsNullOrWhiteSpace(rawValue)) { urlString.Append(Name, Term ?? string.Empty); return; } if (!rawValue.EndsWith(Delimiter)) { rawValue += Delimiter; } rawValue += Term; urlString.Append(Name, rawValue); ruleContext.Reference.Settings.Parameters = urlString.GetUrl(); }
public override void Apply(T ruleContext) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNullOrEmpty(Name, "Name"); foreach (var rendering in ruleContext.SelectedRenderings) { // Simple case, no parameters, nothing to remove if (string.IsNullOrWhiteSpace(rendering.Parameters)) { continue; } // Parse case var urlString = new UrlString(rendering.Parameters); if (string.IsNullOrEmpty(urlString.Parameters[Name])) { continue; // does not exist, nothing to remove } urlString.Remove(Name); rendering.Parameters = urlString.GetUrl(); ruleContext.HasLayoutChange = true; BotLog.Log.Info($"UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) cleared parameter {Name}"); Log.Info($"DESIGNBOT:: UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) cleared parameter {Name}", this); } }
} // Example "|" ... ugh this breaks the UI public override void Apply(T ruleContext) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNullOrEmpty(Name, "Name"); Assert.ArgumentNotNullOrEmpty(Term, "Term"); // Assert.ArgumentNotNullOrEmpty(Delimiter, "Delimiter"); Delimiter = "|"; if (string.IsNullOrWhiteSpace(ruleContext.Reference.Settings.Parameters)) { return; } var urlString = new UrlString(ruleContext.Reference.Settings.Parameters); var rawValue = urlString.Parameters[Name]; if (string.IsNullOrWhiteSpace(rawValue)) { return; } var valueList = rawValue.Split(new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries); var newList = string.Join(Delimiter, valueList.Where(x => x != null && !HttpUtility.UrlDecode(x).Equals(HttpUtility.UrlDecode(Term), StringComparison.OrdinalIgnoreCase)) ); urlString.Append(Name, newList ?? string.Empty); ruleContext.Reference.Settings.Parameters = urlString.GetUrl(); }
protected virtual void Run(ClientPipelineArgs args) { string databaseName = args.Parameters["databasename"]; string id = args.Parameters["id"]; Database database = Factory.GetDatabase(databaseName); Assert.IsNotNull(database, typeof (Database), "Database \"" + database + "\" not found.", new object[0]); Item item = database.Items[id]; if (item != null) { if (item.Fields[FieldIDs.LayoutField] != null && item.Fields[FieldIDs.LayoutField].Value != string.Empty) { if (!args.IsPostBack) { UrlString url = new UrlString(UIUtil.GetUri("control:Calendar.ConfigureControls")); url.Append("id", item.ID.ToString()); url.Append("db", item.Database.Name); Windows.RunApplication("Calendar ConfigureControls", url.GetUrl()); } } else { Context.ClientPage.ClientResponse.Alert(ResourceManager.Localize("ITEM_HAS_NO_LAYOUT")); } } else { SheerResponse.Alert("Item not found.", new string[0]); } }
public override void Apply(T ruleContext) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNullOrEmpty(Name, "Name"); foreach (var rendering in ruleContext.SelectedRenderings) { // Simple case, no existing parameters if (string.IsNullOrWhiteSpace(rendering.Parameters)) { rendering.Parameters = $"{Name}={Value ?? string.Empty}}}"; ruleContext.HasLayoutChange = true; BotLog.Log.Info($"UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} to value '{Value}'"); Log.Info($"DESIGNBOT:: UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} to value '{Value}'", this); continue; } // Parse case, set new value keeping other name-value pairs // Value matches case, exit var urlString = new UrlString(rendering.Parameters); if (!string.IsNullOrWhiteSpace(urlString[Name]) && HttpUtility.UrlDecode(urlString[Name]).Equals(HttpUtility.UrlDecode(Value))) { continue; } urlString.Append(Name, Value ?? string.Empty); rendering.Parameters = urlString.GetUrl(); ruleContext.HasLayoutChange = true; BotLog.Log.Info($"UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} to value '{Value}'"); Log.Info($"DESIGNBOT:: UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} to value '{Value}'", this); } }
} // Example "|" ... originally tried adding this as input to rule, but, oddly a single pipe as a value breaks the UI public override void Apply(T ruleContext) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNullOrEmpty(Name, "Name"); Assert.ArgumentNotNullOrEmpty(Term, "Term"); // Assert.ArgumentNotNullOrEmpty(Delimiter, "Delimiter"); Delimiter = "|"; // hard code for now foreach (var rendering in ruleContext.SelectedRenderings) { // Simple case, no parameters, set our name-value directly (no conflicts) if (string.IsNullOrWhiteSpace(rendering.Parameters)) { rendering.Parameters = $"{Name}={Term ?? string.Empty}"; ruleContext.HasLayoutChange = true; BotLog.Log.Info($"UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} added term '{Term}'"); Log.Info($"DESIGNBOT:: UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} added term '{Term}'", this); continue; } var urlString = new UrlString(rendering.Parameters); var rawValue = urlString.Parameters[Name]; // Missing parameter case, add our name-value to list if (string.IsNullOrWhiteSpace(rawValue)) { urlString.Append(Name, Term ?? string.Empty); ruleContext.HasLayoutChange = true; BotLog.Log.Info($"UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} added term '{Term}'"); Log.Info($"DESIGNBOT:: UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} added term '{Term}'", this); continue; } if (!rawValue.EndsWith(Delimiter)) { rawValue += Delimiter; } // Case already exists if (string.Concat(Delimiter, HttpUtility.UrlDecode(rawValue)).Contains(string.Concat(Delimiter, HttpUtility.UrlDecode(Term), Delimiter))) { continue; } rawValue += Term; urlString.Append(Name, rawValue); rendering.Parameters = urlString.GetUrl(); ruleContext.HasLayoutChange = true; BotLog.Log.Info($"UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} added term '{Term}'"); Log.Info($"DESIGNBOT:: UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} added term '{Term}'", this); } }
public override void Apply(T ruleContext) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNullOrEmpty(Name, "Name"); if (string.IsNullOrWhiteSpace(ruleContext.Reference.Settings.Parameters)) { ruleContext.Reference.Settings.Parameters = $"{Name}={Value ?? string.Empty}}}"; return; } var urlString = new UrlString(ruleContext.Reference.Settings.Parameters); urlString.Append(Name, Value ?? string.Empty); ruleContext.Reference.Settings.Parameters = urlString.GetUrl(); }
protected void PostStep(Item item) { Assert.ArgumentNotNull(item, "item"); if (callback != null) { callback(item.ID.ToString()); } UrlString url = new UrlString(); url.Append("ro", item.ID.ToString()); url.Append("fo", item.ID.ToString()); url.Append("id", item.ID.ToString()); url.Append("la", item.Language.Name); url.Append("vs", item.Version.Number.ToString()); Windows.RunApplication("Content editor", url.GetUrl()); }
} // Example "|" ... ugh this breaks the UI public override void Apply(T ruleContext) { Assert.ArgumentNotNull(ruleContext, "ruleContext"); Assert.ArgumentNotNullOrEmpty(Name, "Name"); Assert.ArgumentNotNullOrEmpty(Term, "Term"); // Assert.ArgumentNotNullOrEmpty(Delimiter, "Delimiter"); Delimiter = "|"; foreach (var rendering in ruleContext.SelectedRenderings) { // Simple case, no value, nothing to clear if (string.IsNullOrWhiteSpace(rendering.Parameters)) { continue; } // Missing parameter case, nothing to clear var urlString = new UrlString(rendering.Parameters); var rawValue = urlString.Parameters[Name]; if (string.IsNullOrWhiteSpace(rawValue)) { continue; } // Missing value case, nothing to clear var valueList = rawValue.Split(new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries); if (!valueList.Any(x => x != null && HttpUtility.UrlDecode(x).Equals(HttpUtility.UrlDecode(Term)))) { continue; } // Remove term var newList = string.Join(Delimiter, valueList.Where(x => x != null && !HttpUtility.UrlDecode(x).Equals(HttpUtility.UrlDecode(Term), StringComparison.OrdinalIgnoreCase)) ); urlString.Append(Name, newList ?? string.Empty); rendering.Parameters = urlString.GetUrl(); ruleContext.HasLayoutChange = true; BotLog.Log.Info($"UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} removed term '{Term}'"); Log.Info($"DESIGNBOT:: UPDATED rendering {rendering.ItemID} ({rendering.Placeholder}{rendering.UniqueId}) parameter {Name} removed term '{Term}'", this); } }
protected void PostStep(Item item) { Assert.ArgumentNotNull(item, "item"); if (item.TemplateID == CalendarIDs.ModuleSettingsTemplate) { tpModuleSettings.Value = item.ID.ToString(); OnChangeModuleSettings(this, null); } else { tpSettingsItem.Value = item.ID.ToString(); OnChangeSettingsItem(this, null); } Context.ClientPage.ClientResponse.Redraw(); UrlString url = new UrlString(); url.Append("ro", item.ID.ToString()); url.Append("fo", item.ID.ToString()); url.Append("id", item.ID.ToString()); url.Append("la", item.Language.Name); url.Append("vs", item.Version.Number.ToString()); Windows.RunApplication("Content editor", url.GetUrl()); }
protected override bool DoProcessRequest(HttpContext context) { Assert.ArgumentNotNull((object)context, nameof(context)); MediaRequest mediaRequest = this.GetMediaRequest(context.Request); if (mediaRequest == null) { return(false); } string url = (string)null; Media media1 = MediaManager.GetMedia(mediaRequest.MediaUri); if (media1 == null) { using (new SecurityDisabler()) media1 = MediaManager.GetMedia(mediaRequest.MediaUri); if (media1 == null) { url = Settings.ItemNotFoundUrl; } else { Assert.IsNotNull((object)Context.Site, Helper.Constants.Properties.Site); if (!Context.User.IsAuthenticated && Context.Site.RequireLogin && !string.IsNullOrEmpty(Context.Site.LoginPage)) { url = Context.Site.LoginPage; if (Settings.Authentication.SaveRawUrl) { UrlString urlString = new UrlString(url); urlString.Append(Helper.Constants.Properties.Url, HttpUtility.UrlEncode(Context.RawUrl)); url = urlString.GetUrl(); } } else { url = Settings.NoAccessUrl; } } } else { bool flag = mediaRequest.Options.Thumbnail || media1.MediaData.HasContent; string lowerInvariant = media1.MediaData.MediaItem.InnerItem[Helper.Constants.TemplateFields.Path].ToLowerInvariant(); if (!flag && !string.IsNullOrEmpty(lowerInvariant)) { Media media2 = MediaManager.GetMedia(new MediaUri(lowerInvariant, Language.Current, Sitecore.Data.Version.Latest, Context.Database)); if (media2 != null) { media1 = media2; } } else if (mediaRequest.Options.UseDefaultIcon && !flag) { url = Themes.MapTheme(Settings.DefaultIcon).ToLowerInvariant(); } else if (!mediaRequest.Options.UseDefaultIcon && !flag) { url = Settings.ItemNotFoundUrl; } } if (string.IsNullOrEmpty(url)) { return(this.DoProcessRequest(context, mediaRequest, media1)); } HttpContext.Current.Response.Redirect(url); return(true); }