private void SynchronizeMacroProperties(Type typeUserControl, Macro macro) { // first delete all macro properties macro.Properties.ToList().ForEach(mp => mp.Delete()); List <MacroPropertyType> allPropertyTypes = MacroPropertyType.GetAll; // foreach property marked with MacroParameter create an macro parameter foreach (PropertyInfo propInfo in typeUserControl.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) { MacroParameterAttribute macroParamAttr = Util.GetAttribute <MacroParameterAttribute>(propInfo); if (macroParamAttr == null) { // if property is not given attribute MacroParameterAttribute try to create default one based on property type macroParamAttr = this.GetDefaultMacroParameterAttribute(propInfo); if (macroParamAttr == null) { // if default attribute cannot be created (e.g. if property type is DateTime) // skip creating this macro parameter continue; } } string macroParamName = string.IsNullOrEmpty(macroParamAttr.Name) ? propInfo.Name : macroParamAttr.Name; string macroParamAlias = propInfo.Name; MacroProperty.MakeNew(macro, macroParamAttr.Show, macroParamAlias, macroParamName, allPropertyTypes.First(mpt => mpt.Alias.ToLower() == macroParamAttr.Type.ToString().ToLower())); } }
public void Can_Add_Remove_Macro_Properties() { // Arrange var provider = TestObjects.GetScopeProvider(Logger); using (var scope = provider.CreateScope()) { var repository = new MacroRepository((IScopeAccessor)provider, AppCaches.Disabled, Mock.Of <ILogger>()); var macro = new Macro("newmacro", "A new macro", "~/views/macropartials/test1.cshtml", MacroTypes.PartialView); var prop1 = new MacroProperty("blah1", "New1", 4, "test.editor"); var prop2 = new MacroProperty("blah2", "New2", 3, "test.editor"); //add/remove a few to test the collection observable macro.Properties.Add(prop1); macro.Properties.Add(prop2); macro.Properties.Remove(prop1); macro.Properties.Remove("blah2"); macro.Properties.Add(prop2); repository.Save(macro); // Assert var result = repository.Get(macro.Id); Assert.AreEqual(1, result.Properties.Values.Count()); Assert.AreEqual("blah2", result.Properties.Values.Single().Alias); } }
public void macroPropertyCreate(object sender, EventArgs e) { TextBox macroPropertyAliasNew = (TextBox)((Control)sender).Parent.FindControl("macroPropertyAliasNew"); TextBox macroPropertyNameNew = (TextBox)((Control)sender).Parent.FindControl("macroPropertyNameNew"); DropDownList macroPropertyTypeNew = (DropDownList)((Control)sender).Parent.FindControl("macroPropertyTypeNew"); bool _goAhead = true; if (macroPropertyAliasNew.Text != ui.Text("general", "new", this.getUser()) + " " + ui.Text("general", "alias", this.getUser())) { foreach (cms.businesslogic.macro.MacroProperty mp in m_macro.Properties) { if (mp.Alias == macroPropertyAliasNew.Text) { _goAhead = false; break; } } if (_goAhead) { MacroProperty mp = new MacroProperty(); mp.Macro = m_macro; mp.Public = true; mp.Type = new MacroPropertyType(int.Parse(macroPropertyTypeNew.SelectedValue)); mp.Alias = macroPropertyAliasNew.Text; mp.Name = macroPropertyNameNew.Text; mp.Save(); m_macro.RefreshProperties(); macroPropertyBind(); } } }
public void Can_Add_Remove_Macro_Properties() { // Arrange IScopeProvider provider = ScopeProvider; using (provider.CreateScope()) { var repository = new MacroRepository((IScopeAccessor)provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = new Macro(ShortStringHelper, "newmacro", "A new macro", "~/views/macropartials/test1.cshtml"); var prop1 = new MacroProperty("blah1", "New1", 4, "test.editor"); var prop2 = new MacroProperty("blah2", "New2", 3, "test.editor"); // add/remove a few to test the collection observable macro.Properties.Add(prop1); macro.Properties.Add(prop2); macro.Properties.Remove(prop1); macro.Properties.Remove("blah2"); macro.Properties.Add(prop2); repository.Save(macro); // Assert IMacro result = repository.Get(macro.Id); Assert.AreEqual(1, result.Properties.Values.Count()); Assert.AreEqual("blah2", result.Properties.Values.Single().Alias); } }
public void Can_Add_Remove_Macro_Properties() { // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of <ILogger>(), SqlSyntax)) { var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"); var prop1 = new MacroProperty("blah1", "New1", 4, "test.editor"); var prop2 = new MacroProperty("blah2", "New2", 3, "test.editor"); //add/remove a few to test the collection observable macro.Properties.Add(prop1); macro.Properties.Add(prop2); macro.Properties.Remove(prop1); macro.Properties.Remove("blah2"); macro.Properties.Add(prop2); repository.AddOrUpdate(macro); unitOfWork.Commit(); // Assert var result = repository.Get(macro.Id); Assert.AreEqual(1, result.Properties.Count()); Assert.AreEqual("blah2", result.Properties.Single().Alias); } }
protected void Button1_Click(object sender, System.EventArgs e) { string result = ""; // Get the macro object umbraco.cms.businesslogic.macro.Macro macroObject = new umbraco.cms.businesslogic.macro.Macro(Convert.ToInt32(Request.QueryString["macroID"])); // Load all macroPropertyTypes Hashtable macroPropertyTypes = new Hashtable(); Hashtable macroPropertyIds = new Hashtable(); // SqlDataReader dr = SqlHelper.ExecuteReader(_ConnString, CommandType.Text, "select id, macroPropertyTypeBaseType, macroPropertyTypeAlias from cmsMacroPropertyType"); List <MacroPropertyType> macroPropTypes = MacroPropertyType.GetAll; foreach (MacroPropertyType mpt in macroPropTypes) { macroPropertyIds.Add(mpt.Alias, mpt.Id.ToString()); macroPropertyTypes.Add(mpt.Alias, mpt.BaseType); } // dr.Close(); foreach (ListItem li in MacroProperties.Items) { if (li.Selected && !macrohasProperty(macroObject, li.Text.Substring(0, li.Text.IndexOf(" ")).ToLower())) { result += "<li>Added: " + spaceCamelCasing(li.Text) + "</li>"; string _macroPropertyTypeAlias = findMacroType(macroPropertyTypes, li.Value); if (_macroPropertyTypeAlias == "") { _macroPropertyTypeAlias = "text"; } object propertyId = macroPropertyIds[_macroPropertyTypeAlias]; if (propertyId != null) { int macroPropertyTypeId = 0; if (int.TryParse(string.Format("{0}", propertyId), out macroPropertyTypeId)) { MacroProperty.MakeNew(macroObject, true, li.Text.Substring(0, li.Text.IndexOf(" ")), spaceCamelCasing(li.Text), macroPropTypes.Find(delegate(MacroPropertyType mpt) { return(mpt.Id == macroPropertyTypeId); })); } } } else if (li.Selected) { result += "<li>Skipped: " + spaceCamelCasing(li.Text) + " (already exists as a parameter)</li>"; } } ChooseProperties.Visible = false; ConfigProperties.Visible = true; resultLiteral.Text = result; }
protected void Button1_Click(object sender, EventArgs e) { var result = ""; // Get the macro object var macroObject = new Macro(Convert.ToInt32(Request.QueryString["macroID"])); // Load all macroPropertyTypes var macroPropertyTypes = new Hashtable(); var macroPropertyIds = new Hashtable(); var macroPropTypes = MacroPropertyType.GetAll; foreach (var mpt in macroPropTypes) { macroPropertyIds.Add(mpt.Alias, mpt.Id.ToString()); macroPropertyTypes.Add(mpt.Alias, mpt.BaseType); } foreach (ListItem li in MacroProperties.Items) { if (li.Selected && !MacroHasProperty(macroObject, li.Text.Substring(0, li.Text.IndexOf(" ")).ToLower())) { result += "<li>Added: " + SpaceCamelCasing(li.Text) + "</li>"; var macroPropertyTypeAlias = FindMacroType(macroPropertyTypes, li.Value); if (macroPropertyTypeAlias == "") { macroPropertyTypeAlias = "text"; } var propertyId = macroPropertyIds[macroPropertyTypeAlias]; if (propertyId != null) { var macroPropertyTypeId = 0; if (int.TryParse(string.Format("{0}", propertyId), out macroPropertyTypeId)) { MacroProperty.MakeNew(macroObject, true, li.Text.Substring(0, li.Text.IndexOf(" ")), SpaceCamelCasing(li.Text), macroPropTypes.Find(mpt => mpt.Id == macroPropertyTypeId)); } } } else if (li.Selected) { result += "<li>Skipped: " + SpaceCamelCasing(li.Text) + " (already exists as a parameter)</li>"; } } ChooseProperties.Visible = false; ConfigProperties.Visible = true; resultLiteral.Text = result; }
public void Macro_Make_New_Add_Property() { var m = Macro.MakeNew(Guid.NewGuid().ToString("N")); Assert.IsTrue(m.Id > 0); Assert.IsInstanceOfType(m, typeof(Macro)); //now, add a property... //get the first macro property type we can find var mpt = MacroPropertyType.GetAll.First(); var mp = MacroProperty.MakeNew(m, false, Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("N"), mpt); Assert.IsTrue(mp.Id > 0); Assert.IsInstanceOfType(mp, typeof(MacroProperty)); m.Delete(); //make sure the property is gone var props = MacroProperty.GetProperties(m.Id); Assert.IsFalse(props.Select(x => x.Id).Contains(mp.Id)); var isfound = false; try { var asdf = new Macro(m.Id); isfound = true; } catch (ArgumentException) { isfound = false; } Assert.IsFalse(isfound); }
protected void Page_Load(object sender, EventArgs e) { m_macro = new Macro(Convert.ToInt32(Request.QueryString["macroID"])); if (!IsPostBack) { ClientTools .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree <loadMacros>().Tree.Alias) .SyncTree("-1,init," + m_macro.Id.ToString(), false); macroName.Text = m_macro.Name; macroAlias.Text = m_macro.Alias; string tempMacroAssembly = m_macro.Assembly == null ? "" : m_macro.Assembly; string tempMacroType = m_macro.Type == null ? "" : m_macro.Type; macroXslt.Text = m_macro.Xslt; macroPython.Text = m_macro.ScriptingFile; cachePeriod.Text = m_macro.RefreshRate.ToString(); macroRenderContent.Checked = m_macro.RenderContent; macroEditor.Checked = m_macro.UseInEditor; cacheByPage.Checked = m_macro.CacheByPage; cachePersonalized.Checked = m_macro.CachePersonalized; // Populate either user control or custom control if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) { macroAssembly.Text = tempMacroAssembly; macroType.Text = tempMacroType; } else { macroUserControl.Text = tempMacroType; } // Check for assemblyBrowser if (tempMacroType.IndexOf(".ascx") > 0) { assemblyBrowserUserControl.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('" + umbraco.IO.IOHelper.ResolveUrl(umbraco.IO.SystemDirectories.Umbraco) + "/developer/macros/assemblyBrowser.aspx?fileName=" + macroUserControl.Text + "¯oID=" + m_macro.Id.ToString() + "', 'Browse Properties', true, 475,500); return false;\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) { assemblyBrowser.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('" + umbraco.IO.IOHelper.ResolveUrl(umbraco.IO.SystemDirectories.Umbraco) + "/developer/macros/assemblyBrowser.aspx?fileName=" + macroAssembly.Text + "¯oID=" + m_macro.Id.ToString() + "&type=" + macroType.Text + "', 'Browse Properties', true, 475,500); return false\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } // Load elements from macro macroPropertyBind(); // Load xslt files from default dir populateXsltFiles(); // Load python files from default dir populatePythonFiles(); // Load usercontrols populateUserControls(IOHelper.MapPath(SystemDirectories.Usercontrols)); userControlList.Items.Insert(0, new ListItem("Browse usercontrols on server...", string.Empty)); userControlList.Attributes.Add("onChange", "document.getElementById('" + macroUserControl.ClientID + "').value = this[this.selectedIndex].value;"); } else { int macroID = Convert.ToInt32(Request.QueryString["macroID"]); string tempMacroAssembly = macroAssembly.Text; string tempMacroType = macroType.Text; string tempCachePeriod = cachePeriod.Text; if (tempCachePeriod == string.Empty) { tempCachePeriod = "0"; } if (tempMacroAssembly == string.Empty && macroUserControl.Text != string.Empty) { tempMacroType = macroUserControl.Text; } // Save macro m_macro.UseInEditor = macroEditor.Checked; m_macro.RenderContent = macroRenderContent.Checked; m_macro.CacheByPage = cacheByPage.Checked; m_macro.CachePersonalized = cachePersonalized.Checked; m_macro.RefreshRate = Convert.ToInt32(tempCachePeriod); m_macro.Alias = macroAlias.Text; m_macro.Name = macroName.Text; m_macro.Assembly = tempMacroAssembly; m_macro.Type = tempMacroType; m_macro.Xslt = macroXslt.Text; m_macro.ScriptingFile = macroPython.Text; m_macro.Save(); // Save elements foreach (RepeaterItem item in macroProperties.Items) { HtmlInputHidden macroPropertyID = (HtmlInputHidden)item.FindControl("macroPropertyID"); TextBox macroElementName = (TextBox)item.FindControl("macroPropertyName"); TextBox macroElementAlias = (TextBox)item.FindControl("macroPropertyAlias"); CheckBox macroElementShow = (CheckBox)item.FindControl("macroPropertyHidden"); DropDownList macroElementType = (DropDownList)item.FindControl("macroPropertyType"); MacroProperty mp = new MacroProperty(int.Parse(macroPropertyID.Value)); mp.Type = new MacroPropertyType(int.Parse(macroElementType.SelectedValue)); mp.Alias = macroElementAlias.Text; mp.Name = macroElementName.Text; mp.Save(); } // Flush macro from cache! if (UmbracoSettings.UseDistributedCalls) { dispatcher.Refresh( new Guid("7B1E683C-5F34-43dd-803D-9699EA1E98CA"), macroID); } else { macro.GetMacro(macroID).removeFromCache(); } base.speechBubble(speechBubbleIcon.save, "Macro saved", ""); // Check for assemblyBrowser if (tempMacroType.IndexOf(".ascx") > 0) { assemblyBrowserUserControl.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('developer/macros/assemblyBrowser.aspx?fileName=" + macroUserControl.Text + "¯oID=" + Request.QueryString["macroID"] + "', 'Browse Properties', true, 500, 475); return false\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) { assemblyBrowser.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('developer/macros/assemblyBrowser.aspx?fileName=" + macroAssembly.Text + "¯oID=" + Request.QueryString["macroID"] + "&type=" + macroType.Text + "', 'Browse Properties', true, 500, 475); return false\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } } }
public void MacroProperty_Not_Found_Constructor() { MacroProperty u = new MacroProperty(-1111); }
protected void Page_Load(object sender, EventArgs e) { m_macro = new Macro(Convert.ToInt32(Request.QueryString["macroID"])); if (!IsPostBack) { ClientTools .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree <loadMacros>().Tree.Alias) .SyncTree("-1,init," + m_macro.Id.ToString(), false); string tempMacroAssembly = m_macro.Assembly ?? ""; string tempMacroType = m_macro.Type ?? ""; PopulateFieldsOnLoad(m_macro, tempMacroAssembly, tempMacroType); // Check for assemblyBrowser if (tempMacroType.IndexOf(".ascx") > 0) { assemblyBrowserUserControl.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('" + IOHelper.ResolveUrl(SystemDirectories.Umbraco) + "/developer/macros/assemblyBrowser.aspx?fileName=" + macroUserControl.Text + "¯oID=" + m_macro.Id.ToString() + "', 'Browse Properties', true, 475,500); return false;\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) { assemblyBrowser.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('" + IOHelper.ResolveUrl(SystemDirectories.Umbraco) + "/developer/macros/assemblyBrowser.aspx?fileName=" + macroAssembly.Text + "¯oID=" + m_macro.Id.ToString() + "&type=" + macroType.Text + "', 'Browse Properties', true, 475,500); return false\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } // Load elements from macro macroPropertyBind(); // Load xslt files from default dir PopulateXsltFiles(); // Load python files from default dir PopulatePythonFiles(); // Load usercontrols PopulateUserControls(IOHelper.MapPath(SystemDirectories.UserControls)); userControlList.Items.Insert(0, new ListItem("Browse usercontrols on server...", string.Empty)); } else { int macroID = Convert.ToInt32(Request.QueryString["macroID"]); ClientTools .SetActiveTreeType(TreeDefinitionCollection.Instance.FindTree <loadMacros>().Tree.Alias) .SyncTree("-1,init," + m_macro.Id.ToString(), true); //true forces the reload string tempMacroAssembly = macroAssembly.Text; string tempMacroType = macroType.Text; string tempCachePeriod = cachePeriod.Text; if (tempCachePeriod == string.Empty) { tempCachePeriod = "0"; } if (tempMacroAssembly == string.Empty && macroUserControl.Text != string.Empty) { tempMacroType = macroUserControl.Text; } SetMacroValuesFromPostBack(m_macro, Convert.ToInt32(tempCachePeriod), tempMacroAssembly, tempMacroType); m_macro.Save(); // Save elements foreach (RepeaterItem item in macroProperties.Items) { HtmlInputHidden macroPropertyID = (HtmlInputHidden)item.FindControl("macroPropertyID"); TextBox macroElementName = (TextBox)item.FindControl("macroPropertyName"); TextBox macroElementAlias = (TextBox)item.FindControl("macroPropertyAlias"); CheckBox macroElementShow = (CheckBox)item.FindControl("macroPropertyHidden"); DropDownList macroElementType = (DropDownList)item.FindControl("macroPropertyType"); MacroProperty mp = new MacroProperty(int.Parse(macroPropertyID.Value)); mp.Type = new MacroPropertyType(int.Parse(macroElementType.SelectedValue)); mp.Alias = macroElementAlias.Text; mp.Name = macroElementName.Text; mp.Save(); } ClientTools.ShowSpeechBubble(speechBubbleIcon.save, "Macro saved", ""); // Check for assemblyBrowser if (tempMacroType.IndexOf(".ascx") > 0) { assemblyBrowserUserControl.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('developer/macros/assemblyBrowser.aspx?fileName=" + macroUserControl.Text + "¯oID=" + Request.QueryString["macroID"] + "', 'Browse Properties', true, 500, 475); return false\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) { assemblyBrowser.Controls.Add( new LiteralControl("<br/><button onClick=\"UmbClientMgr.openModalWindow('developer/macros/assemblyBrowser.aspx?fileName=" + macroAssembly.Text + "¯oID=" + Request.QueryString["macroID"] + "&type=" + macroType.Text + "', 'Browse Properties', true, 500, 475); return false\" class=\"guiInputButton\"><img src=\"../../images/editor/propertiesNew.gif\" align=\"absmiddle\" style=\"width: 18px; height: 17px; padding-right: 5px;\"/> Browse properties</button>")); } } }