X Blogs

who you gonna call?

RadEditor MVC Helper Sample

clock September 9, 2010 00:09 by author Rok Bermež

I was asked for RadEditor MVC helper, so here it goes (copy paste code out) :

        public static MvcHtmlString RadEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) where TModel : class
        {

            return RadEditorFor(htmlHelper, expression, ((IDictionary<string, object>)null));
        }

        public static MvcHtmlString RadEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) where TModel : class
        {
            return RadEditorFor(htmlHelper, expression, new RouteValueDictionary(htmlAttributes));
        }

        public static MvcHtmlString RadEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes) where TModel : class
        {
            string name = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText((LambdaExpression)expression));
            TProperty value = ExpressionHelper2.GetValue(htmlHelper, expression);
            return RadEditor(htmlHelper, name, value, htmlAttributes);
        }

        public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name)
        {
            return RadEditor(htmlHelper, name, null);
        }

        public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name, object value)
        {
            return RadEditor(htmlHelper, name, null, ((IDictionary<string, object>)null));
        }

        public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes)
        {
            return RadEditor(htmlHelper, name, value, new RouteValueDictionary(htmlAttributes));
        }

        public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name, object value, IDictionary<string, object> htmlAttributes)
        {
            if (String.IsNullOrEmpty(name))
            {
                name = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
                if (string.IsNullOrEmpty(name))
                {
                    throw new ArgumentException("name");
                }
            }
            if (htmlAttributes == null) htmlAttributes = new Dictionary<string, object>();
            Page page = new Page();
            RadMvcScriptManager mvcScriptManager = new RadMvcScriptManager();
            mvcScriptManager.EnableViewState = false;
            page.Controls.Add(mvcScriptManager);
            RadStyleSheetManager radStyleSheetManager = new RadStyleSheetManager();
            page.Controls.Add(radStyleSheetManager);

            //string id = name.Replace(".", "_");
            RadEditor radEditor = new RadEditor();

            radEditor.ID = name + "_radeditor";
            radEditor.ClientIDMode = ClientIDMode.Static;

            radEditor.ImageManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName;
            radEditor.ImageManager.MaxUploadFileSize = 3000000;
            radEditor.ImageManager.ViewPaths = new string[] { "uploaded/images" };
            radEditor.ImageManager.UploadPaths = new string[] { "uploaded/images" };
            radEditor.ImageManager.DeletePaths = new string[] { "uploaded/images" };

            radEditor.DocumentManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName;
            radEditor.DocumentManager.MaxUploadFileSize = 20000000;
            radEditor.DocumentManager.ViewPaths = new string[] { "uploaded/documents" };
            radEditor.DocumentManager.UploadPaths = new string[] { "uploaded/documents" };
            radEditor.DocumentManager.DeletePaths = new string[] { "uploaded/documents" };

            radEditor.MediaManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName;
            radEditor.MediaManager.MaxUploadFileSize = 50000000;
            radEditor.MediaManager.ViewPaths = new string[] { "uploaded/media" };
            radEditor.MediaManager.UploadPaths = new string[] { "uploaded/media" };
            radEditor.MediaManager.DeletePaths = new string[] { "uploaded/media" };

            radEditor.FlashManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName;
            radEditor.FlashManager.MaxUploadFileSize = 50000000;
            radEditor.FlashManager.ViewPaths = new string[] { "uploaded/flash" };
            radEditor.FlashManager.UploadPaths = new string[] { "uploaded/flash" };
            radEditor.FlashManager.DeletePaths = new string[] { "uploaded/flash" };

            //radEditor.TemplateManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName;
            radEditor.TemplateManager.MaxUploadFileSize = 500000;
            radEditor.TemplateManager.ViewPaths = new string[] { "~/content/templates" };

            radEditor.NewLineBr = false;

            radEditor.Skin = "Vista";

            //radEditor.ToolsFile = "~/Content/administracija/EditorToolbar.xml";
            if (htmlAttributes.ContainsKey("ToolsFile")) radEditor.ToolsFile = htmlAttributes["ToolsFile"] as string;
            UIHintControlParameterDataAnnotationsModelMetadata mmd = (UIHintControlParameterDataAnnotationsModelMetadata)htmlHelper.ViewData.ModelMetadata;
            if (mmd.TemplateControlParameterExist("ToolBar"))
            {
                radEditor.ToolsFile = mmd.GetTemplateControlParameter<string>("ToolBar");
            }
            if (mmd.TemplateControlParameterExist("DisableHtmlFormating") && mmd.GetTemplateControlParameter<bool>("DisableHtmlFormating"))
            {
                radEditor.StripFormattingOptions = EditorStripFormattingOptions.None;
                radEditor.DisableFilter(Telerik.Web.UI.EditorFilters.ConvertToXhtml);

            }
            if (value != null) radEditor.Content = value as string;
            radEditor.DialogHandlerUrl = "/Telerik.Web.UI.DialogHandler.axd";
            page.Controls.Add(radEditor);
            StringWriter output = new StringWriter();
            HttpContext.Current.Server.Execute(page, output, false);

            return MvcHtmlString.Create(htmlHelper.Hidden("", "ToBeReplaced").ToString() + output.ToString());
        }


Telerik ASP.NET AJAX Controls in MVC project Part ||

clock September 4, 2010 00:09 by author Rok Bermež

Some controls explicitly require to be placed within

tag. To go around this issue you can do something like this (telerik reporting used in MVC project):
public class NoServerFormPage: Page
        {
            public override void VerifyRenderingInServerForm(Control control)
            {
                // to avoid the server form (<form runat="server">) requirement
            }
        }
        
        public static MvcHtmlString TelerikReport(this HtmlHelper htmlHelper, object  value, object htmlAttributes )
        {
            NoServerFormPage page = new NoServerFormPage();
            RadMvcScriptManager mvcScriptManager = new RadMvcScriptManager();
            mvcScriptManager.EnableViewState = false;
            page.Controls.Add(mvcScriptManager);
            RadStyleSheetManager radStyleSheetManager = new RadStyleSheetManager();
            page.Controls.Add(radStyleSheetManager);

            ReportViewer reportViewer = new ReportViewer();
            reportViewer.ID = "whoCares";
            reportViewer.Height = 890;
            reportViewer.Width = 700;
            
            reportViewer.ToolbarVisible = true;
            reportViewer.Report = new Ntk.Reports.Racun();
            ((Telerik.Reporting.Report)reportViewer.Report).ReportParameters["ID"].Value = value;
            reportViewer.Resources.CurrentPageToolTip = "Trenutna stran";
            reportViewer.Resources.ExportButtonText = "Izvozi";
            reportViewer.Resources.ExportSelectFormatText = "Izberi format za izvoz";
            reportViewer.Resources.ExportToolTip = "Izvoz";
            reportViewer.Resources.FirstPageToolTip = "prva stran";
            reportViewer.Resources.LabelOf = "od";
            reportViewer.Resources.LastPageToolTip = "Zadnja stran";
            reportViewer.Resources.NextPageToolTip = "naslednja stran";
            reportViewer.Resources.PreviousPageToolTip = "prejšnja stran";
            reportViewer.Resources.PrintToolTip = "Natisni";
            reportViewer.Resources.ProcessingReportMessage = "Nalagam...";
            reportViewer.Resources.RefreshToolTip = "Osveži";
            

            page.Controls.Add(reportViewer);
            StringWriter output = new StringWriter();
            HttpContext.Current.Server.Execute(page, output, false);

            return MvcHtmlString.Create(output.ToString());
        }


Battle with User Profile Service

clock September 3, 2010 23:32 by author Robi

I was configuring User Profile Service at one of our clients, and the problem was that after provisioning User Profile Service I was getting 6801 and 6803  errors in event log.

 

Central Administration site was using SSL, for example https://sharePointServer

Following examples at http://www.mylifeinaminute.com/2010/07/07/sharepoint-2010-user-profile-synchronization-errors/ I tried to fix things, but it didn't work for me...

So, after using ULS Viewer and miisclient (C:\Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe) I found out that User profile service can not connect to the approprite Web Service.

What I did was, I opened up a miisClient, opened Management Agents, right clicked on MOSS{guid} Extensible connectivity, clicked on Properties and Configure Connection Information. After trying to configure the right connection, I found out that even though Central Administration site is on URL https://sharepointserver, the user profile connection instead of connecting to direct://sharepointserver/_vti_bin/ProfileImportExportService.asmx?ApplicationID=27c26eca%2D6eeb%2D4da4%2D9012%2Da51e02baae9a, I entered:https://SharePointServer.xnet.si/_vti_bin/ProfileImportExportService.asmx?ApplicationID=27c26eca%2D6eeb%2D4da4%2D9012%2Da51e02baae9a and everything started to work normaly.

 

I hope that helps

 



About the author

Rok Bermež is Slovenian Windows Azure MVP, he works as a Software Engineer and Microsoft Certified Trainer at Kompas Xnet. His primary interests include cloud computing and web development. With extensive experience in development and architecture he participated in many projects and since the CTP release of Windows Azure much of those projects are based on Windows Azure platform. Rok has been delivering courses, writing code and speaking at conferences and community events on Microsoft technologies for the last couple of years. You can also find him on Twitter (@Rok_B).

Month List

Sign In