protected void Page_Load(object sender, System.EventArgs e) { pane_edit.Text = ui.Text("general", "edit", this.getUser()) + " " + ui.Text("general", "macro", this.getUser()); pane_insert.Text = ui.Text("general", "insert", this.getUser()) + " " + ui.Text("general", "macro", this.getUser()); if (Request["macroID"] != null || Request["macroAlias"] != null) { // Put user code to initialize the page here cms.businesslogic.macro.Macro m; if (helper.Request("macroID") != "") { m = new umbraco.cms.businesslogic.macro.Macro(int.Parse(helper.Request("macroID"))); } else { m = cms.businesslogic.macro.Macro.GetByAlias(helper.Request("macroAlias")); } String macroAssembly = ""; String macroType = ""; foreach (cms.businesslogic.macro.MacroProperty mp in m.Properties) { macroAssembly = mp.Type.Assembly; macroType = mp.Type.Type; try { Assembly assembly = Assembly.LoadFrom(IOHelper.MapPath(SystemDirectories.Bin + "/" + macroAssembly + ".dll")); Type type = assembly.GetType(macroAssembly + "." + macroType); interfaces.IMacroGuiRendering typeInstance = Activator.CreateInstance(type) as interfaces.IMacroGuiRendering; if (typeInstance != null) { Control control = Activator.CreateInstance(type) as Control; control.ID = mp.Alias; if (Request[mp.Alias] != null) { if (Request[mp.Alias] != "") { type.GetProperty("Value").SetValue(control, Convert.ChangeType(Request[mp.Alias], type.GetProperty("Value").PropertyType), null); } } // register alias umbraco.uicontrols.PropertyPanel pp = new umbraco.uicontrols.PropertyPanel(); pp.Text = mp.Name; pp.Controls.Add(control); macroProperties.Controls.Add(pp); /* * macroProperties.Controls.Add(new LiteralControl("<script>\nregisterAlias('" + control.ID + "');\n</script>")); * macroProperties.Controls.Add(new LiteralControl("<tr><td class=\"propertyHeader\">" + mp.Name + "</td><td class=\"propertyContent\">")); * macroProperties.Controls.Add(control); * macroProperties.Controls.Add(new LiteralControl("</td></tr>")); */ } else { Trace.Warn("umbEditContent", "Type doesn't exist or is not umbraco.interfaces.DataFieldI ('" + macroAssembly + "." + macroType + "')"); } } catch (Exception fieldException) { Trace.Warn("umbEditContent", "Error creating type '" + macroAssembly + "." + macroType + "'", fieldException); } } } else { IRecordsReader macroRenderings; if (helper.Request("editor") != "") { macroRenderings = SqlHelper.ExecuteReader("select macroAlias, macroName from cmsMacro where macroUseInEditor = 1 order by macroName"); } else { macroRenderings = SqlHelper.ExecuteReader("select macroAlias, macroName from cmsMacro order by macroName"); } macroAlias.DataSource = macroRenderings; macroAlias.DataValueField = "macroAlias"; macroAlias.DataTextField = "macroName"; macroAlias.DataBind(); macroRenderings.Close(); } }
private void askForProperties(string alias) { pl_edit.Visible = true; pl_insert.Visible = false; m = cms.businesslogic.macro.Macro.GetByAlias(alias); String macroAssembly = ""; String macroType = ""; _macroAlias = m.Alias; //If no properties, we will exit now... if (m.Properties.Length == 0) { Literal noProps = new Literal(); noProps.Text = "<script type='text/javascript'>updateMacro()</script>"; macroProperties.Controls.Add(noProps); } else { //if we have properties, we'll render the controls for them... foreach (cms.businesslogic.macro.MacroProperty mp in m.Properties) { macroAssembly = mp.Type.Assembly; macroType = mp.Type.Type; try { Assembly assembly = Assembly.LoadFrom(IOHelper.MapPath(SystemDirectories.Bin + "/" + macroAssembly + ".dll")); Type type = assembly.GetType(macroAssembly + "." + macroType); interfaces.IMacroGuiRendering typeInstance = Activator.CreateInstance(type) as interfaces.IMacroGuiRendering; if (typeInstance != null) { Control control = Activator.CreateInstance(type) as Control; control.ID = mp.Alias; if (!IsPostBack) { if (Request["umb_" + mp.Alias] != null) { if (Request["umb_" + mp.Alias] != "") { type.GetProperty("Value").SetValue(control, Convert.ChangeType(Request["umb_" + mp.Alias], type.GetProperty("Value").PropertyType), null); } } } // register alias umbraco.uicontrols.PropertyPanel pp = new umbraco.uicontrols.PropertyPanel(); pp.Text = mp.Name; pp.Controls.Add(control); macroProperties.Controls.Add(pp); pp.Controls.Add(new LiteralControl("<script type=\"text/javascript\"> registerAlias('" + control.ClientID + "','" + mp.Alias + "'); </script>\n")); } else { Trace.Warn("umbEditContent", "Type doesn't exist or is not umbraco.interfaces.DataFieldI ('" + macroAssembly + "." + macroType + "')"); } } catch (Exception fieldException) { Trace.Warn("umbEditContent", "Error creating type '" + macroAssembly + "." + macroType + "'", fieldException); } } } }