[Radiant] Alias Page Extension
I've updated my alias behavior to an page type extension and added tests. http://silverinsanity.com/~benji/radiant/alias_page-0.1.tar.gz Questions, comments, and bug reports welcome. ~~ Brian ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
Hi Brian, What does the extension do exactly? Is there a bit of documentation? Regards, Erik. Brian Gernhardt schreef: > I've updated my alias behavior to an page type extension and added > tests. > > http://silverinsanity.com/~benji/radiant/alias_page-0.1.tar.gz > > Questions, comments, and bug reports welcome. > > ~~ Brian > ___ > Radiant mailing list > Post: Radiant@lists.radiantcms.org > Search: http://radiantcms.org/mailing-list/search/ > Site: http://lists.radiantcms.org/mailman/listinfo/radiant > -- Erik van Oosten http://day-to-day-stuff.blogspot.com/ ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
On Mar 11, 2007, at 3:41 PM, Erik van Oosten wrote: > What does the extension do exactly? > Is there a bit of documentation? Sorry about the terseness. Mark a page as an Alias Page, and add a source part. The source part is a path (not a URL) to another page in the system. Whenever the system asks for that page, it will return the source page. It will, however, search for it's own children before the source's. I plan to use this in conjunction with the virtual domain extension to have the same page under multiple domains. There is something resembling documentation in the code. ~~ Brian ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
Thanks Brian, That is unfortunate for me, I was looking for the reverse :( I hoped to find an extension that would re-direct to another page so I can maintain some URLs when I migrate to Radiant. Regards, Erik. > > On Mar 11, 2007, at 3:41 PM, Erik van Oosten wrote: > >> What does the extension do exactly? >> Is there a bit of documentation? > > Sorry about the terseness. > > Mark a page as an Alias Page, and add a source part. The source part > is a path (not a URL) to another page in the system. Whenever the > system asks for that page, it will return the source page. It will, > however, search for it's > own children before the source's. > > I plan to use this in conjunction with the virtual domain extension > to have the same page under multiple domains. > > There is something resembling documentation in the code. > > ~~ Brian > ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
> Thanks Brian, > > That is unfortunate for me, I was looking for the reverse :( > > I hoped to find an extension that would re-direct to another > page so I can > maintain some URLs when I migrate to Radiant. > > Regards, > Erik. I've taken the approach of having a separate table mapping urls to page numbers and a file not found behaviour that performs redirects for old mappings (I also trawl through my server logs for 404s and correct any repeated spelling mistakes / truncations) - I've left it as a separate table that I maintain by hand so as not to confuse the page tree. http://soxbox.no-ip.org/radiant/svn/extensions/x_groggy/app/models/groggy_file_not_found_page.rb (Note that I also had to have a custom index page so that it could look at my custom file not found type). Dan. ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
Thanks Daniel, that's brilliant! Erik. Daniel Sheppard schreef: > I've taken the approach of having a separate table mapping urls to page > numbers and a file not found behaviour that performs > redirects for old mappings (I also trawl through my server logs for 404s and > correct any repeated spelling mistakes / truncations) - > I've left it as a separate table that I maintain by hand so as not to confuse > the page tree. > > http://soxbox.no-ip.org/radiant/svn/extensions/x_groggy/app/models/groggy_file_not_found_page.rb > > (Note that I also had to have a custom index page so that it could look at my > custom file not found type). > > Dan. > -- Erik van Oosten http://www.day-to-day-stuff.blogspot.com/ ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
On Mar 12, 2007, at 7:26 PM, Daniel Sheppard wrote: > I've taken the approach of having a separate table mapping urls to > page numbers and a file not found behaviour that performs > redirects for old mappings (I also trawl through my server logs for > 404s and correct any repeated spelling mistakes / truncations) - > I've left it as a separate table that I maintain by hand so as not > to confuse the page tree. > > http://soxbox.no-ip.org/radiant/svn/extensions/x_groggy/app/models/ > groggy_file_not_found_page.rb That rocks. It would be great if you could make that a separate extension with an interface to manage the redirect table. (Hint, hint. ~_^) > (Note that I also had to have a custom index page so that it could > look at my custom file not found type). Wouldn't something like this in core be better? (COMPLETELY UNTESTED) - 8< - Index: page.rb === --- page.rb (revision 352) +++ page.rb (working copy) @@ -135,7 +135,8 @@ return found if found end end - children.find(:first, :conditions => "class_name = 'FileNotFoundPage'") + not_found = Object.subclasses_of( FileNotFoundPage ) + ['FileNotFoundPage'] + children.find(:first, :conditions => ["class_name IN (?)", not_found]) end end @@ -251,4 +252,4 @@ end - 8< - ~~ Brian ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
> > (Note that I also had to have a custom index page so that it could > > look at my custom file not found type). > > Wouldn't something like this in core be better? (COMPLETELY UNTESTED) > > - 8< - > Index: page.rb > === > --- page.rb (revision 352) > +++ page.rb (working copy) Yeah, I was thinking of putting pretty much that into the core, but was going to mull over it for a week to see if I could think of something better. Something about using IN bothers me a little, but I don't think that feeling is justified (just a voice in the back of my mind saying "OMG!! what if you have like a bajillion different not found page types? That would suck" - I try not to listen to that voice though, he's a bit of a doofus). Dan. ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
> > I've taken the approach of having a separate table mapping urls to > > page numbers and a file not found behaviour that performs > > redirects for old mappings (I also trawl through my server > logs for > > 404s and correct any repeated spelling mistakes / truncations) - > > I've left it as a separate table that I maintain by hand so as not > > to confuse the page tree. > > > > http://soxbox.no-ip.org/radiant/svn/extensions/x_groggy/app/models/ > > groggy_file_not_found_page.rb > > That rocks. It would be great if you could make that a separate > extension with an interface to manage the redirect table. (Hint, > hint. ~_^) Well, you're free to take my code and clean it up (Hint, hint). The extension works great for regular pages but not so well for pages that can be referenced by multiple urls - ie, my gigs page is a single page that filters gigs based on the last part of the url - since my mapping is from url to page id and not url to url, that means I can't redirect to those individual state filters. My comics page (AlphabetPage) is a similar beast. The reasoning behind this is that these old urls are likely to be referenced well into the future and I wanted it to be robust in the face of reparenting. I had a brief discussion a week or two ago about having a page url table that would map urls to pages for fast lookup and would also remain persistant so that if a page moves, there would still be a reference in the lookup table for that page so that it's old url would also work. There's a few problems with that approach, but it's something that I'd like to try fleshing out to see if those problems are surmountable - I think that might be the way to go for providing page aliases. Dan. ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
On Mar 13, 2007, at 6:50 PM, Daniel Sheppard wrote: > "OMG!! what if you have like a bajillion different not found page > types? That would suck" True, and subclasses_of is a bit of a slow operation (iterates over every class in ObjectSpace). Might be better to have a registration method instead. class MyNotFoundPage < Page not_found_class end That way the class array is assembled once, and the IN itself should be relatively quick (It's a common DB operation). ~~ Brian ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
> True, and subclasses_of is a bit of a slow operation (iterates over > every class in ObjectSpace). Might be better to have a registration > method instead. > > class MyNotFoundPage < Page > not_found_class > end Are you sure that's what subclasses_of does? I know that there's definitely a method on ActiveRecord::Base that keeps track of subclasses as their created - maybe it's called something else - descendants maybe? - I can't remember, but I'm pretty sure it exists. Dan. ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
> Are you sure that's what subclasses_of does? I know that > there's definitely a method on ActiveRecord::Base that keeps track of > subclasses as their created - maybe it's called something > else - descendants maybe? - I can't remember, but I'm pretty sure it > exists. lounge groggy # ruby script/console Loading development environment. >> Page.descendants => [AtomPage, AlphabetIndexPage, AlphabetPage, GroggyFileNotFoundPage, GroggyRootPage, GroggyFestivalPage, GroggyArticlePage, GigParentPage, ArchivePage, EnvDumpPage, ArchiveDayIndexPage, ArchiveMonthIndexPage, FileNotFoundPage, ArchiveYearIndexPage, VenuePage] >> FileNotFoundPage.descendants => [GroggyFileNotFoundPage] ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant
Re: [Radiant] Alias Page Extension
> > Are you sure that's what subclasses_of does? I know that > > there's definitely a method on ActiveRecord::Base that > keeps track of > > subclasses as their created - maybe it's called something > > else - descendants maybe? - I can't remember, but I'm pretty sure it > > exists. > > lounge groggy # ruby script/console > Loading development environment. > >> Page.descendants Well, that's just an alias for subclasses_of. I found the code that I remembered seeing - it was for tracking of subclasses by observers - where for some reason the list of subclasses is stored by each observer rather than by the observee. Dan. ___ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant