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