/Settings/RedditButtonPartSettings.cs

https://bitbucket.org/kobowi/kobowi.redditbutton · C# · 76 lines · 56 code · 14 blank · 6 comment · 4 complexity · c1794e4ed8d134d4374e4904d97d8499 MD5 · raw file

  1. using System.Collections.Generic;
  2. using Orchard.ContentManagement;
  3. using Orchard.ContentManagement.MetaData;
  4. using Orchard.ContentManagement.MetaData.Builders;
  5. using Orchard.ContentManagement.MetaData.Models;
  6. using Orchard.ContentManagement.ViewModels;
  7. using Kobowi.RedditButton.Services;
  8. namespace Kobowi.RedditButton.Settings
  9. {
  10. /// <summary>
  11. /// Per-Content Type settings for a RedditButton part.
  12. /// </summary>
  13. public class RedditButtonPartTypeSettings
  14. {
  15. private string templateName;
  16. private bool? openLinksInNewWindow;
  17. private bool? styled;
  18. public RedditButtonPartTypeSettings()
  19. {
  20. templateName = ButtonService.DefaultTemplateName;
  21. }
  22. public string TemplateName
  23. {
  24. get { return templateName; }
  25. set { templateName = value; }
  26. }
  27. public bool OpenLinksInNewWindow
  28. {
  29. get { return openLinksInNewWindow ?? true; }
  30. set { openLinksInNewWindow = value; }
  31. }
  32. public bool Styled
  33. {
  34. get { return styled ?? false; }
  35. set { styled = value; }
  36. }
  37. }
  38. public class RedditButtonPartSettings : ContentDefinitionEditorEventsBase
  39. {
  40. // Part settings on content type editor
  41. public override IEnumerable<TemplateViewModel> TypePartEditor(ContentTypePartDefinition definition)
  42. {
  43. if (definition.PartDefinition.Name != "RedditButtonPart")
  44. yield break;
  45. // Get the settings for this type definition
  46. var model = definition.Settings.GetModel<RedditButtonPartTypeSettings>();
  47. yield return DefinitionTemplate(model);
  48. }
  49. // The update invoked by changes made on the part settings in the content type editor
  50. public override IEnumerable<TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel)
  51. {
  52. if (builder.Name != "RedditButtonPart")
  53. yield break;
  54. var model = new RedditButtonPartTypeSettings();
  55. updateModel.TryUpdateModel(model, "RedditButtonPartTypeSettings", null, null);
  56. builder.WithSetting("RedditButtonPartTypeSettings.TemplateName", model.TemplateName);
  57. builder.WithSetting("RedditButtonPartTypeSettings.Styled", model.Styled.ToString());
  58. builder.WithSetting("RedditButtonPartTypeSettings.OpenLinksInNewWindow", model.OpenLinksInNewWindow.ToString());
  59. yield return DefinitionTemplate(model);
  60. }
  61. }
  62. }