Jump to:

794 Posts in 409 Topics by 304 members

Widgets

SilverStripe Forums » Widgets » Bad Widget Class Name Given

Discuss SilverStripe Widgets.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 1522 Views
  • Aram
    Avatar
    Community Member
    598 Posts

    Bad Widget Class Name Given Link to this post

    Hi Guys

    I am using widgets for the first time on a project and I seem to have run into a major problem. On install they seems to work fine, I Installed the Links and Google Calender widgets and all was good (I'm not using the blog module at all, just widget areas on other pages).

    But as soon as I started adding more/removing widgets it all breaks and I get 'Bad Class name given' in the widget area when dragging a widget across.

    I tried clearing the widget related tables in the database and setting the class Enum back to just 'Widget' before doing a dev/build but still the same problem. The only way I have managed to get it back is via a complete reinstall and then it just happens again as soon as I start adding more widgets.

    Interestingly when it breaks firebug throws a javascript error: $(widget).getElementsByClassName is not a function, which appears to imply that Prototype is not being loaded properly, but I can't think how adding/removing widgets could break that?

    Also if there is already a widget in the area, then it works adding others......it's when the area is empty that it breaks....

    Any help would be most appreciated.

    Aram

  • FungshuiElephant
    Avatar
    Community Member
    57 Posts

    Re: Bad Widget Class Name Given Link to this post

    Probably worth posting the list of widgets you're trying to use to see if anyone can spot something obvious. If you're debugging with Firebug/Firefox it's worth closing Firefox completely and checking it's gone in TaskManager, I've had a few issues with Firebug when debugging javascript.

    But, other than that, I would try and narrow it down a bit:

    Process:
    Try adding / removing the widgets one at a time to see if you can identify which one, or combination breaks it. Start with the simplest one and add the next most complex, then do it the other way arround.

    Speeding things up:
    You shouldn't have to reinstall if it borks, just delete the relevant rows from the WidgetEnabledPage table (set it to 0 (zero)) (replace WidgetEnabledPage with the name of you custom page). You should clear out any related entries in the Widget and WidgetArea tables but it shouldn't cause you problems if you don't, it'll just be untidy in there. Try this on a dev site while you're testing. I don't think you need to delete the widget code folders or rebuild the database.

    Hope that helps

  • Aram
    Avatar
    Community Member
    598 Posts

    Re: Bad Widget Class Name Given Link to this post

    Hi FengshuiElephant, thanks for the reply

    Unfortunately, once this issue is here it doesn't seem to want to go away even when i remove all widgets and clear all the related database fields, then try adding a single widget (which works when the install is fresh).

    The Widgets I tried initially were Links & google calender which worked, then I added youtube which broke everything. Then on a fresh install Links and google working, then added my own widget with just a simple text field in, then everything broke, so I removed my widget and it was still broken....then removed all widgets and cleaned out the db, and installed the blog module. Still the same problem....but more sporadic on the blog, sometimes it adds them but errors on save, other times it gives the Bad Class Name error and very occasionally it will work completely.

    I tried on a machine without firebug and I get the same result........

    I am totally confused and I cant seem to get it back to working without completely clearing the db, which seems crazy as I am sure I have cleared all relevant columns/tables in the db.

    Very confused

    I guess I will try reinstalling and see if I can pick out any clearer pattern before it breaks. I am only at the development stage at the mo, so luckily there is no live site

  • FungshuiElephant
    Avatar
    Community Member
    57 Posts

    Re: Bad Widget Class Name Given Link to this post

    If you've removed the db entries (including the additional columns in the WidgetEnabledPage) and all of the widget code then you should be back to normal; if it isn't, there must be something left over.

    You could try deleting the widget code, deleting the WidgetEnabledPage tables and deleting all the rows from Widget and WidgetArea tables before rebuilding the db. I can't think of anything that would be left after that.

    It's very odd that it sometimes works completely and other times not, sounds like a race condition, or something that's dependent on network traffic. That would cause me to suspect the YouTube and Google Calendar widgets so I'd concentrate my testing there. If you can find out which widget is causing the problem (assuming that there's only one), you could try testing it different times when the network traffic is likely to be light / heavy to see if that makes a difference.

    Let us know what you managed to find out. I'm interested in this because I have a similar problem, though I'm sure I caused mine.

  • FungshuiElephant
    Avatar
    Community Member
    57 Posts

    Re: Bad Widget Class Name Given Link to this post

    The way I tracked down my error may help you.
    I opened the CMS and Firebug's Net panel and clicked the XHR filter which just shows Ajax calls. One of the Ajax calls from the CMS was failing and I could see what it was sending to the server (hover over the red failure).

    I'd misspelt one of the fields in my widget; HTMLEditorField instead of HtmlEditorField (it's case sensitive). This caused the Bad Widget Class Name Given error that you've got.

  • Aram
    Avatar
    Community Member
    598 Posts

    Re: Bad Widget Class Name Given Link to this post

    Yea I think you might be right, I ended up just doing a reinstall before I left work and then created 3 custom widgets with textfields and I had no issues. I will test it tomo by adding the calender widget and see if I can isolate the issue.

    I guess I must have missed something in the db, but I couldn't see anything else....anyway I will let you know how I get on tomo.

    Thanks again

  • CHD
    Avatar
    Community Member
    218 Posts

    Re: Bad Widget Class Name Given Link to this post

    We got our widgets working on all pages eventually, here's our solution. Hopefully it helps!

    http://www.clickheredigital.co.uk/blog/bad-widget-class-name-given-our-experience-with-widgets-on-any-silverstripe-page/

    1522 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.