I want to develop a module where a registered user can design their own theme (using a color.module theme) and upload their logo. Then, this theme and logo will be saved to the filesystem and will show on any of that user's full node page views (my usernode, my blogs, etc. all have my custom theme/logo). It's like MySpace except you have a controlled set of colors/logo, instead of slopping CSS into some About Me section.
Is the dojo interested in helping with such a thing?
Support this development
- I have created a ChipIn for this to raise money for development help. Since I will be working on this under contract for ChipIn.com's new Drupal 5 site, I won't be taking any of this money myself (even though I am collecting the funds in my PayPal account). I will distribute these funds as I wish to any developers who may help out with this and/or donate any of the remaining funds to the Drupal Association.
- Once we get a demo site in place, you can help support this by testing and providing any feedback here.
Tasks to complete this
- A nice UI (based off color.module) to allow users to change theme's colors and save CSS tied to their UID
- Extend that UI, to allow user's to upload a logo/bg image, again tied to their UID
- Write code to persist a user's subtheme on all of their full node view pages (also allow other modules to hook in or some way to add/remove additional pages on which a user's theme should be displayed)
- Don't step on OG's theme's unless admin wants that
Related modules
- I see theme_editor.module, but I don't think I want to actually clone an entire theme directory for all 100,000 users. So I see this as more of an extension of color.module allowing for per-user aggregated CSS and logo. Subthemes from Zengine?
- node_style module looks interesting.
- Also, from like http://civicspacelabs.org/group/styling-and-themes it looks like CivicSpace has a themestyler module for PHPTemplate. Not sure if that is going to be released to the community or not, but sounds like it has a lot of the functionality we want.
- MySite module seems to have a bit of similarity/shared value to this proposal. Take a look at the features in the new beta release.
Comments
Organic Groups
How would you see this working with nodes in Organic Groups?
Would the group-specified theme take precedence over the user-specified theme? Would this behavior be an admin toggle?
Also, unless I've missed something, at the last pass the color module didn't work with private downloads -- this comment seems to address the issue -- http://drupal.org/node/103528#comment-180585 -- but would it be possible/advisable to set another way of specifying/storing user-generated css?
FunnyMonkey
Precedence
Good thinking, we could probably provide an admin setting to weight these and then (not) set $custom_theme accordingly depending on if the admin wants to always show the OG theme or allow a user theme.
We should be able to hardcode this to use public file downloads regardless and store them in an alternate dir or subdir with different .htaccess like ChrisKennedy says.
Then again, this is all pretty speculative and needs a first stab. I want to get this flushed out as we might be moving forward on this over the next week or two.
Have you seen Zengine?
Because of the way that Zengine breaks up (granularizes) style, this is one of the things that may be possible to do from the theme-engine side of things. It was definitely talked about in the Skypcast. A link to that plus IRC logs are here: http://groups.drupal.org/node/3954.
Zengine project is here: http://drupal.org/project/zengine.
learn one, teach one, do one
Nice pic
subjecct says it all :P
One of the things we talked
One of the things we talked about in the irc channel was combining it with a system like Dvessel's rapid layout changer (click the little grey boxes at top right) - I can see lots of uses for that kind of fast dynamic design shift.
Imagine a non-techie trying to set up his band website - click though four color pickers for element styles, updated instantly through ajax, and then he clicks a layout and BAM - band site!
This is a potential module that could really 'kick it up a notch' on a number of community sites. :D
Drupal Dojo - Thelifeofme.com
Quick custom layouts and colorschemes and.....
Indeed, the work that dvessel is doing (and folks on a similar path) will have a wide range value. Also, we should probably shine light on the MySite module. Seems like it could be complimentary to what's being talked about here.
The missing part of this discussion (as far as I can tell) is the idea of creating specific profiles/setups that would cater to a specific user type and/or purpose. For instance, there could be a custom set of default user profiles and content creation/recommendation tools for a band, event producer, editor/tastemaker, tv/radio station, etc. Somewhat similar to creating an install profile, but in a modular-profile-centric fashion (now there's some good terminology!). If user profiles were broken down this way, it should make it easier to create custom themes and layouts for each specific purpose.
Anyhow, this may warrant a thread of its own, but I think it has some relevance to this discussion.
Gus Austin
Director of Chaos and Confusion
PepperAlley Productions
What am I trying to do with Drupal?
Gus Austin
Multiple usernode types
Sounds like a good idea, but probably a separate discussion related to extending profile.module or usernode.module. Could you provide a couple use-cases for something like this? One cool use-case (a la MySpace personal, MySpace for musicians, etc.) I see is when a user signs up and says they are a band, gets assigned a usernode_band node with CCK fields related to musicians. When a event producer signs up, he gets usernode_producer with CCK fields related to that, etc. What else? Maybe we should continue this in Social Networking Sites as another issue.
I pulled some insperation
I pulled some insperation from YUI grids. The idea is to generalize and predefine all the css rulesets to give you a layout. A simple class being set in your template gives you the output.
From there we can add classes programatically to the templates to hook the styles and it allows a simple jQuery expression to preview changes.
Here's a preview page for building layouts for YUI. All thanks to a single modular stylesheet and some js.
http://developer.yahoo.com/yui/grids/builder/
Too bad we can't user YUI do to licensing differences, it would greatly speedup the process.
We can use YUI
We just can't distribute YUI libraries from from drupal.org --
There are a few modules hosted on drupal.org that depend on a variety of external libraries/code released under a broad range of open source/proprietary licenses --
Admittedly, though, a jQuery-based alternative would simplify things --
Cheers,
Bill
FunnyMonkey
Could be part of a user profile ?
The subject says it all : it could be made with the profile module? Each user could have custom field in it's profile page, including background color, logo, etc...
Then, custom theme functions would retrieve those settings depending on the owner of the current node ?
www.123piano.com
Would not be good
As people are generally not using profile anyways.... better to write it as independent module
This is the first stage of
This is the first stage of something I was talking about here http://groups.drupal.org/node/3130#comment-8994 but would be beneficial to so called "cookie cutter design" parts of any multi-user, multi-group, multi-site system.
In that things like Profiles would be pretty much stock standard design with the only real difference the ability for each user to personalise at the basic level of colour, backgrounds (for specific blocks only), and/or font (typeface) differences.
Another benefit would be the abilty like on a site that I am currently designing (its actually already doing this on old and insecure cgi/perl scripting) is that every member is actually given a forum too (it will be a very hacked version of phorum and mylittleforum put together) and that they can then at will change the specific colour themes of the forum without making the whole thing look like a huge mess (thinks of most myspace pages ~g~). This could then work with user owned blogs, articles, stories, gallery stuff (even within G2). User designed blogs are then available too if wanted.
Th ability of each user to personalise a site is the key to giving those users ownership of their part of and in the community.. Their "own space" reflects there involvement and makes them feel part of the community in a way that currently is unavailable in drupal and most cms's which is why crappy "one page I love me WALL" sites like myspace are all the rave. Remember Geocities? that did 10 times more things for the user and had a better community feel than myspace ever will and it was all based on percieved ownership and the ability of the user to control the look and feel of there pages (yes plural) and content.
I actually like the way this profilepitstop editor/layout generator for myspace works (nice Human User Interface design).
And I agree that the pasting of CSS should not be available.. let the generator (user interface) do it when submit clicked.. otherwise you have major security problems not to mention users hate copy/pasting code that makes no sense to them. Though using a field to enable the css is better than writing/cloning actual files.. Though if each user does have there own unique filespace its pretty easy to write a file for each specific page/area into that area hidden from user and then used if there (otherwise default css used)
Nice...
That's pretty cool. I've been toying with the idea of adding different layout selections to my user profiles but didn't want it to get out of hand like myspace. Something simple with a few options you can change would be really nice. My problem is that I have enough trouble making one layout in CSS let alone making flexible/changable ones. LOL
Michelle
It depends on what you want to change
It would be easier to allow for a template that allowed users to change the bg color, the font color, the link color/behavior, or even the logo (although the image size would need to be specified) than it would be to allow for larger layout changes --
For wholesale theme changes, it would probably be easier to go the way of Organic Groups, and have different themes enabled that users cold choose between --
Which actually gets me to thinking:
How about this approach:
This way, the base themes would allow for large-scale changes in look and feel that would be satisfying to the end user while not breaking the site's appearance. Then, the color changes would allow for a degree of customization within the base themes.
I suspect that some of the code from OG for allowing group creators to specify their own theme could be adapted for this. Then, there would need to be the interface that allowed users to select different colors (from the color module); this could then generate the css file that would override the defaults.
Then, there would need to be an admin feature that specified precedence on sites that allowed customized user themes and OG-specific themes (ie, does the user theme or the group theme take precedence for nodes by a user in a group).
I think this would do it.
Cheers,
Bill
FunnyMonkey
That sounds good
I don't really want them doing massive layout changes. The only layout changes I'd consider is moving the blocks up or down or left and right. I'm thinking more along the lines of just color / font changes and maybe allowing a background image. Trying to walk the line between letting users personalize their profiles and not recreating the myspace mess. LOL
Michelle
Me too
I'm mostly interested in #2, echoing what Michelle said, and I think that is where the most difficulty lies. I think #1 would happen pretty easily after the fact. I just want to flush out the best way to handle this architecturally as we can always change the UI down the road if we want to copy/emulate the MySpace profile editors.
I'm gonna update the wiki a bit.
I'm also cloning many
I'm also cloning many social-networking page features with drupal modules and customized code, improving things I did not like on the original. MySpace is old and has many features that could be better. But it's actually full of people using it.
I'm very interested in having themable pages that are customized by the user. Important for me would be that it runs with phpTemplates. Unfortunately this has a low priority on my feature request list... ;-) I need to track this and come back later.
schnizZzla
BerlinerStrassen.com
- Support Your Local Heroes!
theme_editor_module
robroy I think you have a great idea here and I hope it comes to pass. Actually I was kinda thinking the same thing, but don't get me wrong, I am not trying to steal your thunder. I put up a new website a few weeks ago called http://www.Our-Life.us/drupal-5.1 its a website that I built for my family and a place to house my projects. It was just going to be a place where family members were to put up recent pictures and keep up blogs to keep the family posted on whats going on in the family.
However the fact that my wife is so addicted to myspace gave me the idea. I wanted to develop a theme editor module to give family members the ability to manage there own profile, all the way down to what there profile theme was. and Just like you I thought of the idea of not only giving the ability to select different themes, but to also create there own theme and over ride the sites default theme. I wanted to do this because of #1 my wifes addiction to myspace, but #2 I new I could never please the entire family with a stock theme for everyone.
I am very glad you are thinking this out, I would be happy to donate a website with all the bells and whistles to help beta test this module. I really think it would not only benefit community members like myself, but it would also help many others with various ideas to use for there websites.
Please let me know if I can be of any help. I do know Drupal pretty well now, and I have an intermediate understanding of most web development languages, php, mysql, jquery, CSS, javascript etc...
Thanks again for bringing this to light. I love this idea, and I would like to be apart of it.
Corwin
Corwin
Internet Services available here - Digi Powerhost
Want a web site with "cPanel" and more control over your backend settings? Low Cost!
Reverse bounty
@kermitus: Yes, this functionality will be a user-friendly MySpace. You can customize your pages through a nice GUI like a MySpace profile generator (we'll be reusing color.module as much as we can). I'll post here once development on this has started in the next week or two. I'll be creating a demo site, but would love your feedback and any other help. Thanks!
Also, I created a reverse bounty ChipIn for this development work. I will be collecting money and distributing 100% to people who help with development and the rest to the Drupal Association (as I will be working on this under contract for ChipIn).
color.module
Thanks for the reply robroy. I will be here to provide any input you need. I will try to get some research done on my end and just forward it to you. Anything you already know or have found, I am sure you can just edit it out. I am very excited to help in anyway that I can.. maybe even contribute a little code, if needed.
I am not clear on the reverse bounty chipin, however I do have some money to donate to the project. I suppose I will send you a PM to find out where and whom I send it to.. Its not going to be one lump sum, however if you will permit, I can give you some now and every 2 weeks that I get paid. When its all said and done It will add up, I am sure of it. :)
Corwin
Corwin
Internet Services available here - Digi Powerhost
Want a web site with "cPanel" and more control over your backend settings? Low Cost!
Sounds good
Sounds good. If anyone wants to donate, just click on the ChipIn image above and send funds through PayPal.
A group to help your project's visibility
Feel free to post a description about your project at Projects Needing Financing.
Good luck with this very interesting project.
Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing
Walt Esquivel, MBA; MA; President, Wellness Corps; Captain, USMC (Veteran)
$50 Hosting Discount Helps Projects Needing Financing
Jquery and CSS NO "Mess"
Well I certainly don't want the myspace mess either. The copy paste method is not bad (considering users that don't have any knowledge of code, CSS or otherwise) however its a mess and could really turn out to be just another myspace clone, and I am sure thats not the goal here.
What I am worried about is not allowing for a full range of customization. I am sure you could do a watered down version, like a "Lite" version and just plug in a few variables to allow for bg, logo, font and block colors. However, why not just go for it and allow more of a full customization without the mess.. And when I say full I don't just mean a box in the users profile area where they could just dump in a can of code either.. I am thinking more of a module based layout of course.. where the user has check boxes for colors, a upload box for the logo, and basically make it a form of features. What about the ability to add a few extended customizations? a box with limited variables to allow the user some customization outside the standard features form.. I really think Jquery would be a great idea to embed some of the more feature specific things, like placement and layout.. then allowing for CSS tags in a form like element that I was talking about earlier.
I know exactly what I am thinking, however I am not sure I am getting it out correctly. I do believe in simplicity, however if you don't give users the feeling of full customization they may just say its lame and move on. I know people like myself love to customize and play around with things, granted I don't have a myspace page, (well I take that back, I do. But its more of a family page that my wife mess's with) however if I am told that I can make my page how I want it, then I would take that seriously.
Where do we draw the line from Simplicity and too much.. I think myspace is a great example for the extreme, what is simplicity?
Corwin
Sorry for this mess in thought, this is just a quick note on what I was thinking at the moment, I will take some time to gather my thoughts and compose an organized response later. Sorry its getting late, :)
Corwin
Internet Services available here - Digi Powerhost
Want a web site with "cPanel" and more control over your backend settings? Low Cost!
Project Meeting
So at what point in time could we meet together and go over things... I know the email is a great tool to keep each other updated. However is there going to be a need to go over some things in real time?
I would like to get into the niddy griddy on this one. I am intently going over color.module today. I also decided to convert a few themes today. So maybe that will help me with my cvs application.
Off-topic a little:
Oh has anyone seen a "Lord of The Rings Online" Theme for Drupal yet?(I haven't yet) I know that getting into the cvs is not too hard from what I hear, however they don't like duplicate projects. I hope I could be the first person to contribute a "LOTR" theme. Actually 2 of them. And they are for the online game, not the movie.
I was kinda hoping by me doing a few themes I could use them as a warm up to getting into the custom theme idea.
Corwin
Internet services available here - www.digipowerhost.net
I use Firefox
Check out my Dojo
Corwin
Internet Services available here - Digi Powerhost
Want a web site with "cPanel" and more control over your backend settings? Low Cost!
LOTR
I haven't seen one. The only thing I would be careful with there is not using images that could cause trouble from whomever owns the rights to LOTR. Also, if you're converting themes originally by someone else, make sure you are able to release them under GPL. Some of the free themes have incompatible licenses.
Back on topic, it's great to see work being done on this. I was just going to have a simple drop down where the user could pick a different color scheme but this is so much better. I'll be interested in seeing what comes of it.
Michelle
RE: LOTR
Hey Michelle,
I just wanted to say thanks for the info on the themes stuff. I will
be uploading my 2 themes that I did very soon. And I made sure to
"CMA" (cover my arse, as far as copyright and GPL is concerned) :)
I hope everyone likes my themes. I did one World of Warcraft theme, and
one Lord of the Rings Online theme, and I have several more lined up,
none of which are gaming themes. I do enjoy theming.
Oh and yes, I too am excited about the color.module project. I hope to
contribute my share. I am sure it will be a great module.
Take care,
Corwin
Internet services available here - www.digipowerhost.net
I use Firefox
Check out my Dojo
Corwin
Internet Services available here - Digi Powerhost
Want a web site with "cPanel" and more control over your backend settings? Low Cost!
Oooh, WOW
I might be doing a site for a gaming group and I think they play WOW, so that would be handy.
Did you ever get a CVS account? I don't remember seeing a reply come through...
Heh... Really going off topic, sorry... I'll shut up now. :)
Michelle
The best (IMO) conceptual theme switcher is over at virb
I am not talking about what buttons show up in what place. I am talking about teh broader concept: the technology that (appears to be) (is) behind it and how that communicates to the user.
They developed or chose a templating language: obiously you done want your users to insert PHP. Important thing is that everything lives in one file.
That way, more savvy designers or webdevelopers can customize their layout entirely.
On top of that, they built an interface which allows less savvy people to create exactly such a layout: only far less advaced.
Once you are happy with the HTML and CSS, you can save it: it goes into the database. The CSS is inserted in the HEAD of the page. The HTML is inserted in the proper place in the page.
Above where the CSS is placed, a general CSS sheet is inserted. This one can obviously be overridden by all your custom CSS, but it gives sensible defaults.
Below where the custom CSS is placed, a thrid file, http://www.virb.com/_css/deny.css is placed. This reverts any custom changes you made into the style that Virb *really* needs: that way you cannot remove footers etc from your pages.
Very important, obviously, is that your classes and IDs make a lot of sense: they must be just as well-chosen, or even better, then e.g. CSS zen gardens. This implies that you not only create a module, but also a theme which overrides all core (and many contrib) HTML and turns it into a very consistent, clean source. I am doing this last part in sympal theme, so you might want to re-use that, or else
http://www.webschuur.com | http://bler.webschuur.com
"module".info & "module".module
I am going to work on a user form to be displayed in the user profile, and an administration form to be displayed in the admin settings area, I will make another category called "Custom Themes". I will just use temporary names for now, of course until we decide on the actual module name. Also none of the settings will be working until we add the database and the code behind it of course. Basically I am just making the story board.. or shell for the GUI, at least it will give us something to talk about and some actual work done on the module itself.
Corwin
Internet Services available here - Digi Powerhost
Want a web site with "cPanel" and more control over your backend settings? Low Cost!
I use Firefox
PLEASE Contact your State Legislative Representative -Say NO! if the new "Immigration Bill" makes it to the voting stage. We don't want "Terrorist Suicide Bomber's" in the United States. They will let immigrants that are here illegally, to stay here if they don't have a criminal record. Remember? Several terrorist's that destroyed the Trade Buildings did NOT have a criminal record.
Corwin
Internet Services available here - Digi Powerhost
Want a web site with "cPanel" and more control over your backend settings? Low Cost!
Per node
For our purposes here at ChipIn, we need this on a per-node level probably with some CCK core and custom fields. Here is how it might work, although I'd love some critiques.
If you are considering using
If you are considering using node_style for this purpose, off the top of my head, perhaps the following structure might help:
a) Create a themer module which would essentially be a wrapper for the colour module. Changes are saved as a CSS file.
b) Create a signals module which will essentially be a pattern matcher against the path, uid, nid, date and so on and so forth.
c) Extend the node_style module to incorporate both of the above (associate theme + insert CSS file; match against paths specified / inserted into the signals database) and allow styling of nodes and system pages.
hth,
-K
any news?
robroy do you have any updates about your module's status?
I found theme_editor to be a reasonable alternative until your module comes to life but it is 4.7 at the moment :(
Christopher
Christopher Skauss:my personal blog and The Thelo:my band
Open Music: the universal music revolution
A healthy disregard for the impossible.
Update
Sorry, been a while. We got sidetracked for the relaunch of ChipIn.com with our new ChipIn Facebook App (built on Drupal 5). But starting Thursday we have a solid crew of badass Drupal Devs shifting to finishing up the relaunch. This means we'll be focusing on the user-customizable theme module for the next few weeks. We'll be making this process as transparent as we have time for, but will be definitely sharing the results once it's done. Thanks to those who donated, I will be donating that money (and any more you donate until we finish this) directly to the Drupal association once we contribute this back since we are funding this ourselves, but thanks for supporting Drupal!
If anyone has any recommendations, ideas, possible roadblocks, make sure to update the wiki post so we can crank this sucker out.
Aloha,
-Rob
Another update?
It's been 1.5 years... Got pointed back here by another thread as I'd forgotten all about this. Did anything ever happen?
Michelle
See my Drupal articles and tutorials or come check out the Coulee Region
allow users to customize own profile page.
Can drupal do this?
http://www.joomduck.com/tutorials/11-example-of-creating-a-profile-page....
What modules are require?
cheers
I am using Subsites to
I am using Subsites to achieve something along the lines of the above. There are a few ways to configure it but I set up a subsite "/admin/build/subsites" for each theme I wanted to offer users and then associated the relevant theme with it under the "Look and feel" tab. You can then either "add a node" under the "content" tab and the theme associated with that subsite will be linked to that node or you / the user can choose which subsite (theme) they wish to use under edit/create content. The other module that may help to achieve this is Sections, however, I'm not sure if you have as much, if any, control over menus. Hope this helps.