Hype:
Have you ever visited a content-managed site, and found the visual aspects unappealing? Have you wished you could change that appearance graphically on one site, then apply it to all the sites you frequent? Do you use a lot of different computers and can't apply global styles through every browser? After all, don't most CMS -based web sites have a lot in common? If you are one of these people, I have a new proposal for you!
Description:
I propose a Theme Builder that can be used by a Drupal theme for users to design their own themes. This Theme Builder is similar to the idea proposed by ipwa. The basic idea I have is a more "generic" theme [framework] with generic ideas that can be extended to other CMSs easily. This theme will include full style editing support for all of the different pieces of Drupal. Fonts, backgrounds, colors, etc. will be fully configurable.
The module will integrate the Color module, for editing the colors, and Style module for creating the files. the Style module will also allow for creating multiple themes per site.
It will include two parts:
-
The Theme Builder theme, similar to the jQueryUI ThemeRoller, for creating the styles, which will edit styles interactively. This will include editing fonts, backgrounds, etc, and possibly slight image editing support. This would be powered by jQuery, and will sport a point and click interface. Clicking on a section on the page will allow you to edit the styles, instead of having one area that displays the styles. For instance, if you want to change the header, simply click on a 'Select...' button, and click on the header, then any styles you apply will be visible on that page, so you can see what the site will really look like.
-
The Theme Builder module, including several methods for storing and retrieving theme data. This would also include a method for import/export by the theme engine for easy migration to and from other installations. This will be a module which other themes can use.
All of this would be accomplished without the user seeing or knowing any code, and I will not be implementing any 'code editors' for this project.
I have a demo of the settings interface here. I also have another project I have been working on which uses a toolbar similar to what Theme Builder will have here.
Schedule of Deliverables
The path to achieving the following milestones will be fully documented, using a blog and/or my Drupal test site as I go along.
- Weeks 1 & 2: Design the Theme Builder theme templates. Deliverable: The Theme Builder theme scaffold.
- Weeks 3 & 4: Design the Theme Builder theme configuration options. Deliverable: The Theme Builder theme configuration pane.
- Weeks 5 & 6: Design the Theme Builder module skeleton. Deliverable: The theme builder module skeleton code.
- Weeks 7 & 8: Flesh out the Theme Builder module. Deliverable: the theme builder module
- Weeks 9 & 10:Integrate the Theme Builder module into the Theme Builder theme. Deliverable: working theme and module.
- Week 11: Write Documentation Deliverable: Documentation
- Weeks 12: Scrub for Bugs! Deliverable: Mostly bug-free working theme and module.
- Continuation: Create ThemeBuilder theme/plugin for other open source software
My Drupal Information:
I have submitted a patch, which changes the code-update.sh script to remove CVS folders.
My current Drupal installation is at http://drupal.rbe.homeip.net.
Open Source Development Experience
I have created a few open source projects so far. Most of my open source experience comes from working with developers over IRC. The most active project is probably wxCPAN. All of the software I write is free to use and redistribute. See my home page for more projects.
Work/Internship Experience
I am currently a student worker, in the capacity of web master, for the largest school (27 departments!) at my university. You can see my page at the university here. Last summer, I participated in the Summer of Code, where I created a GUI for CPANPLUS, a Perl module manager.
Academic Experience
I have been teaching myself various programming languages sine 1995, and have been creating web sites since 1996. I am currently an undergraduate at the University of North Carolina at Greensboro, working on a computer science degree. I have taken classes there that have helped me learn about databases, many diverse and archaic programming languages, computer organization, networking, and many other theories in a field that continues to amaze me.
Difficulty: medium

Comments
like WordPress's editor?
The first part of your proposal sounds like WordPress's file editor? Where you edit system files through a Web browser? I don't understand the second part though. Can you explain this in more detail?
Thanks!
editing files in place
If you want to edit files in place you need to use a backend like http://drupal.org/project/plugin_manager that will do a local loopback via ssh/ftp and require the password be re-entered on every edit/save cycle. Otherwise it's a security weakness :(
There's the question "why not just do it like WordPress" - well, the fact that they choose an insecure method doesn't mean we should too.
This would apply to part 2.c.ii as well I guess.
I'm not sure about how 2.a would work technically. The cookie is only available to the site that set it, right? So, there would have to be one centralized site that sets the cookies and that gives access to the cookies across all the other sites. It seems like a big logistical burden. If the idea is that it works only within one company or one groups set of sites then that could be fine though it will take some configuration instructions.
--
Growing Venture Solutions | Drupal Dashboard | Learn more about Drupal - buy a Drupal Book
knaddison blog | Morris Animal Foundation