Oops, sorry I missed a FK constraint on custom_template_rendition's templateid column pointing back to weblog_custom_template's id. I just put that in, both the 500-to-510 upgrade script and in createdb.vm. There should be no migration problems with this, because child table custom_template_rendition doesn't exist in 5.0.x.

Data model frozen again.  :)

Glen

On 7/24/2014 6:40 PM, Glen Mazza wrote:
OK, I'm finished with all database changes, we can have our schema freeze. :) The Weblog.customstylesheet column is gone. The 5.0.4 -> 5.1 upgrade process will mark custom stylesheets from custom themes with a "STYLESHEET" action in weblog_custom_template, so Roller 5.1 can easily identify them. As for custom stylesheets from shared themes, the upgrade process can't switch them from custom -> stylesheet (the necessary data for that isn't available within the DB), however due to some redundancy in StylesheetEdit.java's myPrepare(), Roller 5.1 will still detect the custom stylesheets and the moment they're saved again, their value will switch to STYLESHEET. We'll keep that redundancy until 5.0.x upgrade support is no longer an issue.

Presently the actions are ALL CAPS in the theme template listing page, a little tough on the eyes, but we can put in an init caps value within the Enums so friendly text (Custom, Weblog, etc.) will be shown instead.

I'm going to be looking at some LDAP enhancements and documentation tomorrow (stuff from Juergen) but that doesn't have to get into Roller 5.1. Dave, if you can confirm when you have the chance that the latest 5.1 works fine with Apache Blogs, I think we'll be ready to have a vote for 5.1.

Regards,
Glen


On 07/24/2014 03:19 PM, Glen Mazza wrote:
I'm doing this now...it should get done today.

Glen

On 07/24/2014 11:27 AM, Glen Mazza wrote:
Hi Team, I figured out why WEBLOG.custom_stylesheet is presently being used, but can be retired with some coding changes. These are changes I think would be good to do anyway.

There are two types of custom stylesheets: shared theme w/custom stylesheet and custom theme w/custom stylesheet, either of which store one row in WEBLOG_CUSTOM_TEMPLATE. Roller needs to know the name of the stylesheet in order to grab the stylesheet from the WEBLOG_CUSTOM_TEMPLATE table (and from there, CUSTOM_TEMPLATE_RENDITION) table. The name of the stylesheet is matched against the "link" column in WCT to make that match. To get the name:

1.) For the shared theme with custom stylesheet, Roller takes the name of the stylesheet from the Shared Theme, information which comes from the theme.xml file. It doesn't read WEBLOG.custom_stylesheet. This generally works, but has a drawback that if we remove a shared theme Roller will not know how to get to the custom stylesheet, and if the user switches shared themes with a different name for its stylesheet, the user's custom stylesheet will be inaccessible.

2.) For the custom theme with custom stylesheet, there is no shared theme.xml file, so Roller needs to read WEBLOG.custom_stylesheet to get the name.

The architectural problem is that WEBLOG_CUSTOM_TEMPLATE's action column does not have a STYLESHEET value, requiring the above name search in order to locate it. As our template parser currently allows only one STYLESHEET (possibly with multiple renditions) per theme, if we had this value it would be very easy for Roller to find the stylesheet: SELECT <row> from WEBLOG_CUSTOM_TEMPLATE where weblogid = XXXX and action = STYLESHEET. If we have this, WEBLOG.custom_stylesheet would no longer be needed and the shared theme w/stylesheet will work even if the shared theme is deleted.

The WEBLOG_CUSTOM_TEMPLATE "action" column, within our code, should be switched from strings to enum's anyway -- as part of this process I can add the STYLESHEET value and retire WEBLOG.custom_stylesheet column. (In a perfect world we'd rename "action" to "component", but that's less important for now.) As part of the migration process, we'd have an update command (pseudocode) so current user's templates can be identified properly:

update weblog_custom_template wct set action = STYLESHEET where action = custom AND websiteid in (select id from weblog w where theme=custom and w.link = wct.link);

WDYT?  I can probably get this done in a day.

Regards,
Glen


On 07/23/2014 11:30 PM, Glen Mazza wrote:
Offhand, it looks like we can remove it, once I clean up the code a bit. This column isn't getting populated when I do a custom stylesheet alone; however, when I switch to a complete custom theme, it then copies the name of the stylesheet into weblog.customstylesheet. But it doesn't need to do that, that value is already in weblog_custom_template, and I don't think it does anything with that value anyway.

Anyway, all the other columns in the list were removed, if I can't get to this remaining column it can wait until 5.1 is out.

Glen


On 07/23/2014 10:08 PM, Glen Mazza wrote:
No, in *that* case, we just get a single row in the custom_template_rendition table for that CSS holding the stylesheet text (instead of several rows holding also the theme templates.) It's just that weblog's customstylesheet column is still being written to and read from for some reason (still necessary? I don't know...), which I'll investigate. Apparently it's being used as a path value from the user's resources folder (custom stylesheet path), but that shouldn't be necessary as the CSS text is in the CTR table. Stay tuned...

Glen

On 07/23/2014 09:57 PM, Dave wrote:
On Wed, Jul 23, 2014 at 9:38 PM, Glen Mazza <glen.ma...@gmail.com> wrote:

Hmm...Weblog's customstylesheet column is perhaps still in use, I'll look
more into it tomorrow.

As I remember, custom style sheet is a way to allow a blogger to add CSS for their blog while still using a shared theme, and not having to edit page templates. I think it is totally separate from the custom templates.

- Dave







Reply via email to