Migration usability in admin area
I have successfully upgraded my 3.7 site to 4.x with your migration tool. I needed a little help along the way, thanks for your input. I'm now in the process of finalizing our migration process and have some issues.
Disclaimer
Our 3.7 site was built as a web site project, not a web application project. I have followed the instructions found here - and have successfully setup our 4.x site as a web site project.
We are using Sitefinity 4.1.1501.0 SE
Issue #1
All of our Content->ContentBlocks came over successfully. The pages
are showing the correct content. However, if we add a new page and with a new content block we attempt to insert "select from previously shared
content", our screen says, "No records to display" - despite the fact,
we can see all of our contentblocks that have been imported in the Admin->Content->Content Blocks section
[ screen shot - no records to display ]
[ screen shot - shared contentblocks ]
Question - What do you recommend we do - so that we can select our shared content when editing a page?
Issue #2
I have one particular control, that when added to our homepage breaks the homepage.
[ screen shot ]
However, when I'm in the admin section, editing this page with the control ADDED to the page, and I click "preview" -- the page works perfectly!?!
[ screen shot ]
This control was copied from our v3.7 -- and compiles successfully.
Question -- Any suggestions on what to do? This control was originally placed in the page from the migration tool, but it had an error (see issue #4 below, it was the same kind of error). So I removed the control from the page, added the control to the widgets side bar (using the admin->Settings->Advanced->Toolboxes->PageControls->Sections), and then added the control back to the page. Now I get this error, and I'm at a loss on what to do next. In preview mode, it works great. Just after I publish, it breaks.
Issue #3
We opted to have the migration tool insert error content into the control's place holder.
[ screen shot ]
We have approximately 70 custom user controls -- and all though the site is 'working' with our controls, the controls are not present when editing a page or a template - under the 'widgets' area. So, I have started adding all of our controls thru Admin->Settings->Advanced->Toolboxes->PageControls->Sections. This will allow our users to add our user controls/widgets to any new pages created.
Question 1 - Is this the correct way to move forward? I would have thought the migration tool would have setup the controls in the "widgets" area for us; per the setup we defined in the web.config.
Question 2 - Do I need to "delete" the controls from each page, and then re-add them from the "widget" area? As you'll see below, several of our user controls are generating errors.
Issue #4
The site is displaying our pages and custom user controls properly when browsing the website, as a public user; some have error messages from the migration process, but mostly -- they work great. When we log in as an admin -- and attempt to edit a page, we get error messages in the controls.
[ screen shot - public page ]
[ screen shot - admin, editing page ]
Question 1 - Why are some controls (TopNavigation -- which is the primary navigation bar) working on the public side, but not on the admin side? Need to remove the error message from the admin side.
Question 2 - Why are some controls (SubNavigation.ascx -- sub navigation on the right side bar) failing to work on both the public and admin side?
Question 3 - How do I fix this? There isn't a compile or syntax issue with the control.
Note: The web site compiles successfully in VS2010. We copied these controls from our 3.7 SF project -- which is in production, so I'm fairly certain these aren't programitcal or syntax errors. These two errors are specifically referencing an error that they cannot find the event handlers, even though they clearly exist -- and the page works!
Yes, the control references "codeFile" and not "CodeBehind" in the Control Declaration. And, yes, we have the event handlers in the .cs page.
I copied one controls' source code below for reference, but they all act similar to this one (TopNavigation.ascx) - in terms of functionality.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TopNavigation.ascx.cs" Inherits="controls_TopNavigation" %>
<
asp:Repeater
ID
=
"rptTopNav"
runat
=
"server"
DataSourceID
=
"SiteMapDataSource1"
onitemdatabound
=
"rptTopNav_ItemDataBound"
>
<
HeaderTemplate
>
<
ul
id
=
"nav"
>
</
HeaderTemplate
>
<
FooterTemplate
>
</
ul
>
</
FooterTemplate
>
<
ItemTemplate
>
<
li
runat
=
"server"
id
=
"liItem"
><
asp:HyperLink
ID
=
"lnkItem"
runat
=
"server"
NavigateUrl='<%# Eval("url") %>'><%# Eval("title") %></
asp:HyperLink
></
li
>
</
ItemTemplate
>
</
asp:Repeater
>
<
asp:HyperLink
ID
=
"lnkListen"
runat
=
"server"
href
=
"#OneListen"
CssClass
=
"button-listen"
Text
=
"LISTEN"
/>
<
asp:HyperLink
ID
=
"lnkResources"
runat
=
"server"
CssClass
=
"button-cart"
Text
=
"Shopping Cart"
/>
<
asp:SiteMapDataSource
ID
=
"SiteMapDataSource1"
ShowStartingNode
=
"false"
runat
=
"server"
/>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
public
partial
class
controls_TopNavigation : System.Web.UI.UserControl
protected
void
Page_Load(
object
sender, EventArgs e)
try
if
(SiteMap.CurrentNode.HasChildNodes)
SiteMapDataSource1.StartingNodeOffset = 0;
else
SiteMapDataSource1.StartingNodeOffset = -1;
lnkListen.Attributes.Add(
"onclick"
, Broadcast.GetTodaysBroadcast(BroadcastType.Broadcast).ListenLinkToOnePlace_Today);
lnkResources.NavigateUrl =
"~/"
+ Constants.PUBLIC_URL_FOR_SHOPPING_CART_AND_RESOURCE_PAGE;
catch
(System.Exception exc)
protected
void
rptTopNav_ItemDataBound(
object
sender, RepeaterItemEventArgs e)
try
if
(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
HyperLink lnk = ((HyperLink)e.Item.FindControl(
"lnkItem"
));
HtmlGenericControl item = (HtmlGenericControl)e.Item.FindControl(
"liItem"
);
if
(DataBinder.Eval(e.Item.DataItem,
"url"
).ToString().Equals(SiteMap.CurrentNode.Url, StringComparison.CurrentCultureIgnoreCase))
item.Attributes.Add(
"class"
,
"active"
);
if
(DataBinder.Eval(e.Item.DataItem,
"url"
).ToString().Equals(SiteMap.CurrentNode.ParentNode.Url, StringComparison.CurrentCultureIgnoreCase))
item.Attributes.Add(
"class"
,
"active"
);
catch
(Exception exc)
Hi Mexner,
I have replied in your support ticket.
Best wishes,I too am experiencing issue # 1, in which content blocks have been imported, are visible and appear fine in the Content Block area, but are not available when placing content on a page. Any suggestions?
I have figured out that if I open each content block in the Content Block area and click to Save it, it then appears in the dialog when I try to place shared content blocks on pages. Tedious, but better than nothing.