Hi Drupal Cats.

Threw out another Drupal site the other day (just did a soft launch, we don't officially launch for a bit still). As such, we would LOVE to get some feedback from everyone in the Drupal trenches. Remember, the site is new: So there isn't a whole lot of content yet. Patience. Patience. Stumble they who run fast.

Background:

ProjectOpus.com has two music related goals: 1) For bands and artists: To get heard, get connected and get paid. 2) For fans: To find relevant new music.

The site is built on Drupal 4.6.3 /w the backported freetagging patch. Has some other nice features again:

- A homegrown reviews module
- Rankings of all songs on site with Podcast support.
- Podcast all an artists music
- Ability for any user on the site to create playlists of any songs on the site (as nodes)
- A little flashplayer with built in reviews mechanism (which is still buggy when listening to albums and playlists)
- Regions module -- allows users to tack on regional information from a hierarchical gardened regional folksonomy.
- Geocoding for events (I am going to release this puppy soon, plugs right into the events module) and generates google maps (You only need to give it a google key and supply it with an address field and it does the rest).
- User profile's in sidebar (freeform lists only make links when there is two users with a common term, profiles are also cached for performance)
- An events browser for our regions module, which allows exploration of Events in a way that makes sense. (We think anyway. UPDATE: Thanks Ted for letting us know RSS is broken for Genres). RSS and iCal subsciptions can be made for any combination of genre/region/time range.
- Some pretty neat theming
- No Pathauto support anymore -- doesn't scale well. Anyone have any suggestions?
- Tonnes more.

Lots of bugs being sorted out, and any reports would be GREATLY appreciated! Any criticisms, suggestions, flames, calling us 'stinky nuts', and observations are welcomed with open arms!

By the way, we are currently looking for a F/T developer for this project as well (Super secret semantic web stuff). If you are interested, write me an email at

URL: http://www.projectopus.com

Cheers!

Jordan Willms.
ProjectOpus.com

Comments

Colin Brumelle’s picture

Nice work Jordan!
Looking forward to seeing some of the code hit CVS. I really like your googlemaps integration. Pretty slick stuff!

ericatkins’s picture

Your site shows just how versatile Drupal can be.

Is your theme 100% custom or did you modify an existing Drupal theme?

Brothers in Arms - Gearboxed
cooked Gamers
Hushed Casket

jpwillms’s picture

Hi Rapture.

The theme is 100% custom using phpTemplate (the best template engine IMO).

We ditched primary navigation and made our own little primary nav engine with mouseovers as well.

Also, other things worth noting:

1) We nuked the navigation in the block - it actually only appears for administrators or mods.

2) We totally nuked the user_view page. Instead we chose to assemble a user portal of sorts and then feed the blog into the user's page.

..jordan willms

nsyll’s picture

can expale how nuked the navigation in the block - it actually only appears for administrators or mods

i try to, to login in for the header and dont apear in the sidebar_left 0r right

jpwillms’s picture

I'm not sure I understand the question. Are you asking how we did it, or why we did it?

If why -- because we don't actually like that default drupal navigation.

If how, we do it at the code level.

Cheers

jordan willms

Uwe Hermann’s picture

Congratulations, the site looks nice and quite promising. I actually stumbled upon projectopus.com a few days ago when I was looking for Creative Commons music for my podcast. I couldn't find free music, do you have any plans on including (at least some) freely licensed songs?

The site seems to work fine, except for the flash player (didn't work for me using Galeon). Oh, and I noticed a "cache miss" message on some pages, I guess that's some debugging output?

Uwe.
--
hermann-uwe.de | crazy-hacks.org | unmaintained-free-software.org

jpwillms’s picture

Hi Uwe,

Ya, the cache miss was some debugging stuff -- I've removed it all now.

Yes, there will be free music, however -- it is up to the artists themselves what they want to designate as free. If they want, they can post any songs as free.

But, not that you mention it -- It would likely be beneficial as part of the songs browse to be able to filter by paid or free songs.... Do you think others would appretiate this feature as well?

Also, have you tried the flash player lately? Is it still not working for you?

Cheers and much thanks for the feedback!
..jordan willms

Uwe Hermann’s picture

Hi,

yes, please provide an easy way to find, list and browse the free songs. I stumbled across lots of sites where you have to manually look around for free songs, which sucks. Possibly the simplest solution is a "creative commons" tag or category...

Also, I'd give the artists a bunch of CC licenses to choose from for each song, and then (this is the important part) make it very clear and obvious which license applies to which songs (use the CC logo and link to the extact license). Do _not_ list _any_ songs without a license, each song _must_ have one. If it's not a CC license, give the artists some "non-free", "commercial", "other" license options or something. But there's nothing more confusing and frustrating than no license statement at all...

The flash player doesn't work for me (using Galeon). It shows up, it downloads something, but pressing play doesn't do anything, the song progress bar doesn't move, and I hear nothing. Could be a problem on my side, though...

HTH, and good luck with the site.

Uwe.
--
hermann-uwe.de | crazy-hacks.org | unmaintained-free-software.org

ddonat’s picture

Hi Uwe, I think you are right...

We had not given enough thought to providing a mechanism for free music. Offering music for free is an option when you upload a song, but there are no licensing options, which is not good.

I think we can do this fairly easy, the mechanisms are already there. The UI will need some thought for fans to easily see and understand the differences in licenses.

The Flash player is buggy and not near complete, Lorraine our Flash programmer took ill, last week, and hasn't been able to get back to it.

ddonat’s picture

Lucas Gonze is on our advisory board. So you can be certain that there will be Free Music. As Jordan points out bands, can provide songs for free if they like, but in phase 2 we are looking to incorporate WebJay into the service as well as tie into the CC.

David Gratton

ps Any suggestions you have are MORE than welcome in this regard.

patrickharris’s picture

Hey, congratulations - it's a great site. My main criticism is that the main menu doesn't stay "active" when you are within a category. A lot of sites are guilty of this, and I think it is a bit of a design flaw.
The extra navigation in the "music - songs & albums playlists" section is also a bit confusing, as it seems to half duplicate the top navigation. It's a shame that pathauto doesn't scale well for large sites.
I'm very impressed ... the site looks fantastic. Did you create the flash player? It works fine for me - the only problem is that when it finishes playing a tune, it goes back to the begining, and starts re-downloading it (a hassle if you are on dialup). I'd love to use the flash player - is it/will it be available?

ddonat’s picture

It's actually not done yet: we have a full review function, a not in the mood for this song, never play this song again, and buy this song functions still to be added. Plus that little bug you pointed out (thanks).

I guess we will need to sit down with our team and decide what when and how we will release some of these mods and widgets. For the most part anything that isn't mission critical can and will be released to anyone who wants it.

David

PS , and nice feedback on the nav thanks...

zirafa’s picture

Very slick site. I'm impressed. Looking forward to seeing all the good stuff contributed back (We hope!)

I'm curious, what were the biggest obstacles in building the site?

ddonat’s picture

The biggest obstacal, buliding the site was time. Seed funding came out of revenues of our business, so we had to devote time to both OPUS and our business, Donat Group. Often we REALY wanted to devote 100% of our time to OPUS, but we had to do work for paying clients instead.

Other than that, I would say - though I would wait for Jordan to confirm it - the regions module was one serious pain in the arse.

jpwillms’s picture

One of the ideas we were experimenting with on opus is the concept of a gardened hierarchical folksonomy for regions.

In a nutshell, the regions hierarchy is community maintained, but is only 'gardened' by administrators (through a combination of automated and manual processes). This is also just a regular drupal vocabulary -- something that once it grows -- we hope to provide as a free download to anyone who needs a hierarchical vocabulary of regions.

Also -- our stakeholders had major feature creep -- nudge nudge David.

Other challenges:

- Drupal is almost too 'community centric'. (In other words, it provides blocks that are 'windows' into what is going on ALL over the site). We needed to make loads of addition blocks that provided windows into what a user was doing.

- Themeing something as complex as this was just something we hadn't done before

- Scalability (Still a concern), but we designed what we internally call a 'block caching' framework -- which allows us to cache certain expensive regions of the page for an extended period of time (The side profile bars for example, are cached until an edit [or 12 hours to prevent database bloating])

- Developing with HEAD, and then learning really late that it is not a smart idea to develop with HEAD and presume it is, or eventually will become stable. About 2 months ago we rolled back ALL of our code (Took about 2 weeks to roll everything back). However -- now on 4.6.3 -- we are breathing a little better since things actually work all the time!!!

- There are lots more, I'll post them when I can think of them.

maui1’s picture

Totally agree with this statement:

- Drupal is almost too 'community centric'. (In other words, it provides blocks that are 'windows' into what is going on ALL over the site). We needed to make loads of addition blocks that provided windows into what a user was doing.

Would love to hear how you are doing this. I would like to create a user centered page for each user, kind of like their own site within the larger drupal site.

Finding it real easy to aggregate nodes by taxonomy but not by user. Any hints or pointers.

Donovan’s picture

Very nice! A compelling demonstration of the drupal cool factor -- definite evidence that beneath the excellent plumbing Drupal does indeed possess a soul. I registered just to check out some of the site's the features and was so impressed by the functionality and the feel that I was instantly converted to a member -- I am jamming to Goodbye Charlie as I type. ProjectOPUS seems to be a cool, fresh and original community! Good luck!

Who is the Donat Group? Do you provide site development services?

Donovan.

"It always seems impossible, until it is done."
- Nelson Mandela

ddonat’s picture

Yep we are a Vancouver based Web development house who has gotten pretty keen on Drupal. In the last 5 months we have released 6 Drupal sites:
donatgroup.com
projectopus.com
rentalmoster.ca
fogarassy.ca
intentional-living.ca
randallanthony.com

The top three are the most interesting.
Project OPUS is something we have wanted to do for a long long time. We were originally developing it in Pure JAVA and a friend of mine, Bryan Reiger, took a look at the specs and said, "What are you doing this from scratch for? This is a Drupal site!".

The rest is history. We are hooked.

jpwillms’s picture

And what is more. I used to be a veteran Java programmer, but I am now completely PHP/Drupal based.

However, I view Drupal more as an application framework + CMS rather than just a CMS. I personally think drupal needs a lot assistance to make it 'glow' -- much like other frameworks. That being said -- it absolutely rocks.

Much thanks to Bryan Reiger, and Boris from Bryght for helping us figure the thing out.

Jordan Willms.

eaton’s picture

This is one of the things I've been saying for a while... Drupal is passable CMS, but an excellent CMS/App Framework. Its architectural strengths don't do much for someone who wants a turnkey app, but make a world of difference when building a custom system.

--
Jeff Eaton | Click Here To Find Out Why Drupal "Sucks"

--
Eaton — Partner at Autogram

moshe weitzman’s picture

lovely site. building a large site like yours in drupal is not easy. well, the first 70% is easy but the details are very very hard toi get right. you guys are well along that path.

nice use of organic groups!

ddonat’s picture

Are you involved with The Slip? I got their link from your profile. I'm on the site now great songs!

Dublin Drupaller’s picture

Great site, Jordan. That's a superb bit of work.

In the sign up form...are you using ajax to do the location thing? the way it automatically refreshes without loading the whole page?

Dub

Currently in Switzerland working as an Application Developer with UBS Investment Bank...using Drupal 7 and lots of swiss chocolate

jpwillms’s picture

Hey bud!

Ya, it is a little piece of headache AJAX that we wrote ourselves. One issue with it though, is the query it executes is moderately expensive so sometimes it has usability issues. The solution will be to cache the results temporarly on the server side and deliver them with a single query (And the cache will get nuked everytime a taxonomy update occurs).

If you love AJAX stuff, make an account, login and make a playlist with some of the demo songs that are up there. Then go and view it and reorder it -- If you like AJAX, you will LOOOOOVE that piece of functionality (Done by our other devs Derek Kingston and Loren Davidson)

Cheers!

Jordan Willms.

jpwillms’s picture

Hey there.

To anyone who cares. We released our simple little GoogleMaps per node module that we developed for ProjectOpus.com.

It can be seen here:

http://drupal.org/node/32058

Cheers

..jordan

menazine’s picture

Hi jordan, love the implemtation of the loaction section on the sign up for, did you hack the location module too do this or litrally write it yourself, and are you going to release it or is it already released... would love to implement somthing like that on my site..
cheers cheers

restyler’s picture

Really good sites - professional design & programming. You guys doing a good job.

BTW, typo in your post - http://www.rentalmonster.ca/

RussianWebStudio: improving the web

jpwillms’s picture

Aha! Yes, blatent promo:

http://www.rentalmonster.ca is the correct spelling. Another decent drupal implementation to check out if you have a moment.

Jordan Willms.
http://www.jordanwillms.com

Dublin Drupaller’s picture

Hi Jordan,

Can I ask if you're using the music.module for your site (songs/playlists etc.)? if not..which module did you use and will it be available for download?

I've been playing with Joshks music.module on drupal 4.6 and was wondering if that's what you used.

cheers
Dub

Currently in Switzerland working as an Application Developer with UBS Investment Bank...using Drupal 7 and lots of swiss chocolate

teshager’s picture

Kudos on your new site... really nice and very intuitive!

I was curious if you had hacked the event module to render the events page on your site or wrote your own routine. Its very nice and wanted to find out how you did it.

Cheers
/Alex

jpwillms’s picture

Yes.

Events module has been extended to provide a nicer browse feature for regions (which is also a module) and we have released our little google maps per node module (see my sandbox or my recent posts).

The front events page is also custom developed -- we did, however, try to keep the events.module as untouched as possible so as to ensure a clean upgrade path for the future.

..jordan

kbahey’s picture

Hey Jordan

Great job ....

Stunning look, and LOTS of innovative modules ...

Here are a few comments/questions:

- For the events section. Is that a directory module variant?

- What about the other event thingie in the artist profile? (seems like the normal "events" module)

- Songs browser: Is that directory module again, or similar?

Again, great job and great site ...

--
Drupal development and customization: 2bits.com
Personal: Baheyeldin.com

--
Drupal performance tuning and optimization, hosting, development, and consulting: 2bits.com, Inc. and Twitter at: @2bits
Personal blog: Ba

kbahey’s picture

Actually, looking at the source, it seems that the event section is based on flexinode. So it is not a real calendar.

Songs also seem like flexinode?

--
Drupal development and customization: 2bits.com
Personal: Baheyeldin.com

--
Drupal performance tuning and optimization, hosting, development, and consulting: 2bits.com, Inc. and Twitter at: @2bits
Personal blog: Ba

jpwillms’s picture

Hey khaley:

Yes. We use the events.module and flexninode.module for our events section. Why reinvent the wheel?

Songs are not flexinode and are a custom nodetype. Remember when you have a large number of fields -- the advantages of using flexinode degrade -- as you need to do a join for every field.

..jordan

venkat-rk’s picture

When I click on Checking 1, 2, 3 (http://www.projectopus.com/node/8), I can see '48' at the left bottom corner. Looks like something that escaped your attention.

ddonat’s picture

Hey Ramdak,

Yeah that number represents the number of Querries. It should be shut off shortly. The dev team were using to help optimize our caching.

jpwillms’s picture

We actually left it on intentially. However, we haven't got around to centering it. That little number makes me feel all warm and fuzzy inside.

..jay

kbahey’s picture

You could enclose it in an HTML comment...

So you can look at the source if you need, while Joe Average sees nothing ...

--
Drupal development and customization: 2bits.com
Personal: Baheyeldin.com

--
Drupal performance tuning and optimization, hosting, development, and consulting: 2bits.com, Inc. and Twitter at: @2bits
Personal blog: Ba

jpwillms’s picture

Ain't no harm in letting people see the number of queries.

Infact, anyone who now knows what those little numbers will no be able to say: "Hey guys -- page X has an insane number of queries, you may want to do some performance analysis on it". All that good stuff helps. When we officially move to Beta, we are planning to remove it.

An even better way would be to make a new permission called 'see query count' that only administrators can see!

Word.

Jordan Willms

mat_taylor’s picture

Geat site - one of the most professional implmentatations of Drupal I have seen.

What are you using to manage your "Opus bucks" stored value system, is that a custom module you have developed or something built ontop the ecommerce module?

m@

insomoz’s picture

amazing use of drupal, I like how it expands from 800* 600 like its much cleaner than a normal expand, also colours are blended in beatifully, navigation looks great, very professional site.

ddonat’s picture

What would you change about it? What do you think needs improvement?

jpwillms’s picture

Hey.

Opus Bucks was built by one of our developers Derek Kingston. It was not based on the ecommerce module for one reason or another. Hopefully I can get him to jump online and talk through his decision not to go with ecommerce module.

jordan willms.

laura s’s picture

At a glance, I'd not have thought it was Drupal-powered at first. Maybe the articles on the FP would have tipped me off.

In your text areas, you might want to do some css-ing for scroll bars, esp. the opus top 5 block, which is locked in height with your 123 graphic. If someone has their fonts set a bit large, it pushes info down out of sight.

I also hate flashy ads, they make sites too obnoxious to stay very long ... but that's just a personal comment.

I like! :D

Laura
===
pingVisionscattered sunshine

_____ ____ ___ __ _ _
Laura Scott :: design » blog » tweet

jpwillms’s picture

Thanks Laura.

I absolutely hate flashy ads as well - that add up there is actually just a test to see visually how the most horrible ad we could find would look. Pretty awful eh? But imagine that with some nice Google Adwords. It'll look much more click.

Dave - when are we getting rid of that nasty ad?

..jordan

anders’s picture

Very cool site! Both the design and the content and philosophy rocks :) I bookmarked and I'm listening.

If i have to say one thing, it would be 'consider pathauto' - readable/understandable URLS is really what drupal, and most other CMS systems lack the most.

The google maps vanish here, using konqueror of KDE 3.4, a javascript reference error. Maybe it will work with kde 3.5, /me hopes

James Andres’s picture

Hi everyone,

I'll take a look into it, I personally use Linux myself (for desktop and dev use). Konqueror is the backend (roughly) for the Safari browser in OSX which many of the dev's here are using.

FF should work for you though ;-)

Developer on Project Opus
w: www.projectopus.com

jpwillms’s picture

Hi Anders.

The problem is that pathauto does not scale well. We are currently trying to figure out a way to make pathauto scale properly. Boris -- who is in the know regarding this again -- it more or less got lost on the backburner.

..jordan

Geary’s picture

It's not really that pathauto doesn't scale well--it has nothing to do with pathauto. The problem is that URL aliases themselves will get very slow when you have a large number of them, because the entire URL alias table is loaded into memory.

I looked at the 4.7 code and this problem appears to be fixed in 4.7.

ddonat’s picture

We have been getting a number of requests for the Flash Player on Project Opus. It is not complete, but I'm gathering that doesn't matter based on the requests.

So, what is the proper procedure for releasing the Opus Player to the community?

boris mann’s picture

Request a CVS account, then check in the code.

If it is mainly Flash/not really integrated with Drupal, you could just make it available for download on your own site.

--
Please turn on the "story" type, so we can use it to have an archive of best practices, how tos, and configuration recipes.

dman’s picture

Wow!
I'd just been getting a bit jaded at looking around the web this week.
Now I know what to look for, it seems that every second site I stumbled across was Drupal-powered. That got old real quick when I realised I could tell just by looking at them. And I started to wonder if the legendary 'flexibility' wasn't all it was cracked up to be...

So this morning I see rentalmonster (mentioned in some other post). I peer at it and think "Nah, that's not Drupal, must just be a real estate site linked to for inspiration". I peer at the code, and still think "nope".

And then you confirm it here. Gosh.

And of course the site in quiestion. Unbelievably tight.
100% sweet all the way
...until
I think "Great, these guys will have done a decent skin on the ugly event calendar, Gimme some ideas on formatting the calendar!

:-( Nope.

... that's where high expectations will get ya!

Maybe I'll take a lesson and just go with the "block" look you use on the main events page. That works great.

But overall, great job on, well everything. I love the text layout especially, and the graphic elements are not as overpowering as some 'music' sites tend to be.

.dan.

ddonat’s picture

We universally hate the calendar in our office. It is REALY hard to style - at least for us it is. In the next version of Opus we basically dump it.

The registration page is also a pain to style. Grrrrrrr.....

and don't get me started on the profiles!!! (not so much a style issue but rather a critical architectural issue)

and what's with search?!?!?!

We don't want to complain. We want to get more involved with the Drupal community to share some of the things we are doing and also help out with improving some irritating aspects of Drupal, but we are so lean on resources that we need to rethink our workflow in order to do that. I will be asking Boris for some guidance this week, but any other help on how our small team can actively participate with the community while still getting product out on time would be helpful.

boris mann’s picture

We're looking forward to your involvement, David. Main point: open source is more about fixing and less about bitching.

Well, it's about bitching, too, but if you don't actually work with the community to suggest/work on fixes, it can become very hard to continue to maintain custom code.

We're also not fans of the default event looks. It outputs way too much CSS cruft, and should stick to being more of an event API and storing data, and provide a cleaner, more flexible format for theming.

Use trip_search.module in the 4.6 series (which may or may not cause issues at high volume...needs testing). In 4.7, core search has been drastically overhauled and improved...not sure if it will be able to be backported to 4.6 or not.

User profiles can use some loving. Profile.module is in core, but it's also a module so it should be fairly simple to start out with a suggested replacement (user profiles as nodes? profiles/profile fields per role?). I know there are other people that want this, and if you wrote down the requirements, I bet there would be other people that would either help code and/or contribute money to get it built.

BobW-1’s picture

Hi, nice theming. I like the shading that separates posts, and the concise search results output.

But when I clicked on Advanced Search, I got this:

"warning: Invalid argument supplied for foreach() in /var/www/html/includes/tablesort.inc on line 160.
warning: Invalid argument supplied for foreach() in /var/www/html/includes/tablesort.inc on line 198.
warning: Invalid argument supplied for foreach() in /var/www/html/includes/theme.inc on line 639.
"

Don't know if it's just me or something that needs attention.

BobW

maui1’s picture

How did you get the very cool layout for your groups section. I am trying to do something similar as a teaser for stories. Picture with short excerpt.

Do you have a phptemplate snippet I might look at?

ddonat’s picture

Sorry missed this post.

Contact James at:
james.andres@donatgroup.com and he should be able to help you or give you a look at what you may need.

3dsoft’s picture

What module did you use for browsing the songs (http://www.projectopus.com/songs/browse) or did you code it?

thanks
3dsoft

ddonat’s picture

The browse function is so unique to the type and con the context of content within the site, it would be very difficult to abstract this into a useful module.

There are a number of usablity issues with it. Like how do you know if the song is offered for free or not (they do exist on the site)? If it is free what is the license? And users don't seem to notice the filters on the sidebars until we point them out.

We will have a vastly improved browse function in the new year.

James Andres’s picture

Hi Everyone,

We have finally released the code for our flash player. Although this is pretty much a non-drupal thing, we would love to hear any feedback from the drupal community.

Get a copy here!

James Andres

Lead Developer - Project Opus
w: www.projectopus.com

venkat-rk’s picture

Thanks for this!

I have another question. You seem to have implemented a module that provides the ability for different signup pages for different roles. Is this correct? And is there any chance it will be released to the community? There have been a few requests for it lately (including my own;)).

http://drupal.org/node/44119
http://drupal.org/node/42663

James Andres’s picture

Hi ramdak5000,

Good question! The method we used is rather un-drupal (a bit of core modification). However, I'm pretty sure this could be put into a module with some clever use of nodeapi...

edit
As moshe weitzman noted in the second thread you mentioned (http://drupal.org/node/42663) you would also need to do some stuff with hook_user (when the $op is 'register').
/edit

I need to talk with David about the best way to release these types of changes. I'll post back here soon with an update :-)

PS: Thanks everyone for your posts! The intrest Project Opus is keeps us excited to make it better :-D

James

Lead Developer on Project Opus
www.projectopus.com

James Andres’s picture

Hi,

NOTE For anyone reading this: Check out www.drupaldocs.org and http://drupal.org/node/508 for more details on how Drupal modules work.

NOTE 2: If you think this would make a good moule please feel free to use the ideas in this code. Let us know if you do something cool with it :-)

Here's the gist of what we did to allow users to signup "automagically" into seperate roles. Due to time constraints, lack of drupal knowledge, etc. this was originally done as a hack in the user.module.

We had two issues with how the stock drupal is set up: 1) Users normally all go to the same place to register (user/register). This is an issue because is doesn't lend itself to friends passing URLs (ie: where to I go to signup as a fan?). 2) We needed a way to automatically put users into roles depending on where they register.

How we solved the first problem was to add two new menu items (one for fans one for bands). This is all done in the user_menu function.

    // begin; jordan willms addition (may 24th, 2005)
    $items[] = array('path' => 'user/bandregister', 'title' => t('band signup'),
      'callback' => 'user_page', 'access' => $user->uid == 0 && variable_get('user_register', 1), 'type' => MENU_LOCAL_TASK);

    $items[] = array('path' => 'user/fanregister', 'title' => t('fan signup'),
      'callback' => 'user_page', 'access' => $user->uid == 0 && variable_get('user_register', 1), 'type' => MENU_LOCAL_TASK);
    // end; jordan willms addition (may 24th, 2005)

Now, since we opened that can of worms, we had to modify all the bits along the way that define the registration process. This task, roughly put, was comprised of the following steps: 1) trace the path of registration in the standard drupal installation, 2) add code, in each module involved, to check whether this is a fan or band registration, 3) modify logic accordingly (ie: if it's a fan do steps A, B, C, D but if it's a band do steps A, B, C, E).

Places we changed code were as follows:

hook_user: Added code to check which role is registering

        if (arg(1)=='bandregister')
        {
            drupal_set_title(t('Artist Registration'));
            //drupal_set_message('user_user - a band is registering');
            db_query("INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)",  $user->uid, variable_get('bandroleid', 5) );

        }
        else if (arg(1)=='fanregister')
        {
            drupal_set_title(t('Fan/User Registration'));
            //drupal_set_message('user_user - a fan is registering');
            db_query("INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)",  $user->uid, variable_get('fanroleid', 3) );
        }

  }

hook_block: Added code to split the normal "register" link into two links (fan register, band register).

            $items[] = l(t('Create new fan account'), 'user/fanregister', array('title' => t('Create a new fan
            account.')));
            $items[] = l(t('Create new band account'), 'user/bandregister', array('title' => t('Create a new band
            account.')));

user_page: Added / modified code to enable the different themeing of band / fan pages.

  switch ($op) {
      case t('Create new account'):

      case 'fanregister':
        //echo "<br/>fanregister";
        print theme('page', user_register($edit));
      break;

      case 'bandregister':
         //echo "<br/>band register";
         print theme('page', user_register($edit));
      break;

That is pretty much it!

James

Lead Developer on Project Opus
w: www.projectopus.com

James Andres’s picture

If anyone wants more information let me know. I can send the exact details on what we changed (diffs, patches, and whatnot).

Cheers!

James

Lead Developer on Project Opus
w: www.projectopus.com

sangamreddi’s picture

Thank you very much for releasing the code. It would be better if U send a patch my e-mail: sandeep at gleez dot com

I am more intrested in knowing how u did the Country and city option in the registration process. i hope this is with ajax and taxonomy terms or a custom module.

Anyway thanks

Sunny
www.gleez.com

James Andres’s picture

Hi sangamreddi,

Yep, the country picker is ajax and taxonomy terms. Basically there is a callback that takes 3 vars (country=MyCountry&province=MyProvince&City=MyCity). Based on input it generates html for the form.

edit
Of course, there are some "onChange" javascript hooks on each of the 3 form fields that call some javascript that does the ajax to rewrite the form.
end edit

James

Lead Developer on Project Opus
www.projectopus.com

sangamreddi’s picture

Once again thank you for sharing it.

Sunny
www.gleez.com

venkat-rk’s picture

This is incredibly helpful. It is almost halfway towards a module.

Thank you very much for sharing this. I have approached someone to write a custom module, so this code would be most useful. I will look at making this as generic as possible so that it can be useful to the rest of the community.

----
Acknowledging a reply to your question motivates the replier to answer more.

James Andres’s picture

Great to hear :-)

We're all hacking drupal code here like mad, but have little experience in interfacing with the community. We are glad to recieve any help in this area!

We are very busy working towards our next release, but I'll try to keep posting around here with any tips I can.

Cheers,

James

Lead Developer on Project Opus
www.projectopus.com

Rubalvi’s picture

Dear James,

First of all let me congratulate you on your excellent work you are doing with projectopus.
The site is smashing.

I would be very interested in having the exact details how you implemented the code in the user.module.
I' ve tried it unfortunately without luck.

Would it be possible to send it to my email rubalvi [at]gmail[dot]com

You would make my day!

Cheers Ruben

babycorn’s picture

hello,
first, thanks for sharing the code here. i was very pleased to find your posting & would like to implement the same function in my future drupal site. i was just wondering if you could send me a full user.module that you use for your website. i modified mine based on your information though for, some reason, the module is not working. i believe i probably erased necessary lines or left lines that needed to be erased... if i could follow line by line based on your user.module file, i might be able to find where i screwed up...
thanks,
babycorn

Dublin Drupaller’s picture

thanks for sharing that James. There are a lot of applications for this..

Dub

Currently in Switzerland working as an Application Developer with UBS Investment Bank...using Drupal 7 and lots of swiss chocolate

eighttwonine’s picture

Your site is quite impressive and the role that it can play in music culture is important. I love it. The concept, the layout, the navigation, everything - great!

And a comment from the peanut gallery...
It would be sweet if the site could stream a radio shuffle of the songs listed on the site with a visual listing of what is currently playing and, say, the previous 5 tracks. I would think that more people would likely be exposed to new things if they could listen to streaming radio and then buy songs they like...just my 2 cents...

jasonbrummels
www.brummelsmotorsport.com

James Andres’s picture

Hey brummels,

Thanks for the suggestion! We appreciate all of them.

However, your not the first to mention a streaming radio type idea ;-).

We're working hard on our next major release (which will have many new features).

Stay tuned...... :-)

James

Lead Developer on Project Opus
www.projectopus.com

divrom’s picture

When you said you wanted feedback, you knew what it would be! :-) That site rocks!

Really impressed. You should be chuffed.

rgbman’s picture

I like how you setup the /user page. If I read correctly did you build your own and then feed the blog into this?
How easy is this?
I am looking for something like this with a more user centric page.

sjwxl’s picture

thank you very much!

-------
虚拟主机
域名注册

ac23’s picture

I really like the changes/additions you guys did to the events module. Added some much needed pizzaz + organization to the default design.

I'm currently working on a project and would love to have a peak into your code so I can help my struggling calendar.

ddonat’s picture

We dumped the caledar look all togehter.
We found:
1. Really hard to style
2. Calendar UI is not ideal for this audience.(We got rid of all resemblance of the calendar in the new site.)
Loren designed how this would work, and Jordan/James programmed it. I'll let them pass on the details of how it was done.

James Andres’s picture

Hey Guys,

Check out the post here (http://drupal.org/node/53118) for a pre-release of the new site. It's a bit buggy right now but we are smoothing those out fast.

Thanks for all the support!

James

Lead Developer on Project Opus
www.projectopus.com

OFR-1’s picture

your site is incredible. i'm interested in starting something similar, though in a different field (don't worry, i won't poach on your territory). i have been flirting w/ joomla but it seems drupal might be better (your site helped convince me of that).

if you started over with the current arsenal of tools available, would you use the civicspace distribution or drupalart distribution (http://drupalart.org/configuration-walkthrough), or just start from the basic drupal distribution?

forgive me if i'm saying something stupid here i'm a drupal newbie but am inspired by your site.

James Andres’s picture

Hi OFR,

Thanks for the kind words!

Project Opus is based on a standard installation of drupal 4.6.0 which has been slowly upgraded to the latest 4.6.x versions as they came out.

If I were to start over again it would be drupal 4.7.x all the way!

Best tips I've got:

  • rely heavily on the modules on drupal.org (pre-polished code is your friend)
  • when the choice comes to do something quick or do it right DO IT RIGHT you will save yourself hours and hours of pain and frustration here
  • Lastly, don't be afraid to buck the horse. If a module you need isn't complete yet or doesn't exist just make it yourself. Some things in the OSS world move about as fast as a glacier, the best changes happen when a programmer goes a bit mad and writes a few thousand lines of code to fix his/her own problem. Just don't forget to spread your changes :-).
  • James

    Lead Developer on Project Opus
    www.projectopus.com

kozuch82’s picture

Woow,

the site rocks dude! Havent seen such a graphics, good desing and supporting good thing at all on Drupal yet!!!

Let's make Drupal topsites page!

----
Support Drupal! - Drupal at Free Scripts Forum
The Linux Boy - Free Scripts and Linux Guides

James Andres’s picture

Thanks kozuch82 !!

Working hard to keep it rocking :-). I think we are listed on a few Drupal devel sites, and I believe also on the Wikipedia entry for Drupal. Haven't checked in a while though....

James

Lead Developer on Project Opus
www.projectopus.com

johnchalekson’s picture

Im trying to do two things:
1. create different registration types upon sign up,
2. create different profile fields for roles upon sign up.

Can anyone point me in the right direction here?
Must I get started on building a module? or, has anyone else been working on building a module for this?

Thanks,

Projects involved with:
American Local News - http://www.americanlocalnews.com
Hedgedfund.com - http://www.hedgedfund.com

James Andres’s picture

Hi johnchalekson,

AFAIK nobody has made a specific module to do this, but we get requests for the code we used all the time. I unfortuantely don't have the time to start up a project on this. But I know there are many people interested in the idea... (just check in this thread).

You can find the docs on how we tackled our problem at docs.projectopus.com/releases .

Hint: I'm pretty sure this problem can be tackled in it's own module (not a user.module hack like we did) with some cleaver use of the hook_user (see drupaldocs.org).

James

Lead Developer on Project Opus
www.projectopus.com

marcoBauli’s picture

Howdy,

does anyone knows if there was any sort of progress in creating a multiple (different) registration processes module?

i'm actually digging this topic and subscribing here.

thx

TheFazz’s picture

excellent work Jordan. gonna take me some time to browse through the site. i can only say i am flabbergasted by such a thorough implementation.

http://www.thefazz.com/

ddonat’s picture

Jordan sold his soul to THE MAN last year!

Actually he is still with us on a part time basis and has midnight explosions of creativity where he codes like a mad man, and we discover a whole set of new features the next morning.

However, it is James Andres, who is the guy who has lead the development of Project Opus, and doing a kick ass job.
If you dig the look and feel then hats off to Loren Davidson, and Stephen Abbott.
The drastic downtick in bugs last month is thanks to Kay Thody. Bug finder extraordinaire!

mwu’s picture

perhaps you can link this to the 2006 relaunch thread.

trueMarketing’s picture

Hi Jordan,
I worked for several Indy music labels in North Carolina and San Francisco and found myself nodding my head saying "Heal Yeah" while looking through Project Opus.

Are you using Drupal forums "out of the box"? I've been torn on whether to use that for several sites of my own or integrate the vBulletin module instead.

Also, how many stylesheets does the site use? I know using multiple modules like tagadelic, tinyMCE, etc. pulls in their own, but I would imagine that yours would use many, unless you've consolidated them somehow.

Overall exceptional site, idea, and use of such a great CMS.

SEOPosition.com
SEO Company
Offering Pure CSS Design, Web Optimization & SEO Consulting

simoslav’s picture

hi all
can someone tell me if its possible to do this , i want 4 types of users, with their own registration types and profiles (each one deferent of the second), i have installed drupal + user autorole and og mandatory groups but i cant understand how to make the types and how to set the profiles to be assigned for every user type, please help

simoslav’s picture

anyone please ?

ddonat’s picture

You have seen James' comment above:
http://drupal.org/node/31656#comment-84038

It's not exactly what you are looking for, but I do not see why it would not be possible.

Project Opus
Donat Group

amatlis’s picture

Amazing site! I'm still on the fence between Joomla and Drupal, so this is a perfect test case. How hard/easy would it have been to do this site in Joomla?

ddonat’s picture

We had done a lot of work with Mambo/Joomla in the past, but when we started Project Opus it ws not considered. Originally we started as a Java application using Spring. When we discovered Drupal we were skeptical. But we decided to do some parallel development because it did have all these community mods that we wanted.

After less than 3 weeks of drupal dev, we decided to dump all our Java code (3 months worth). More than a little painful. We completed 75% of our requirements with Drupal in a matter of weeks. We are still engaged in the remaining 25%.

We do not look at Drupal as a CMS like Joomla we look at it as more of a development framework. I don't see it as an either or scenario.

Project Opus
Donat Group

amatlis’s picture

Thanks for the reply. I think I understand what you're saying, but I'm still a newbie so excuse this question: Are you saying you did not choose Joomla because it is too much of a finished package and thus not easily customized whereas Drupal is more of a framework so it's easier to get into the code and make it do what you want? I have just started investing time learning Joomla, and after seeing your site (which is awesome) I wonder if I should redirect and learn Drupal instead in order to have the best hope of being able to create a customized social networking site such as yours. I'm doing this part time, so I don't think I can learn both.

James Andres’s picture

Hi amatlis,

I think that's sort of what David means.

From my perspective I view, and use, Drupal like I would Ruby on Rails. It's a tool to make developing, and themeing web pages easier. It has a modular programming layout to I can seperate my code. (notice that we don't care too much that it's a CMS, or it's has an easy to use GUI, or that it's usually a blogging platform, although that helps too).

Joomla, for us, was less extendable and had a less "polished" (not quite the right word actually..) backend. It would have been more restictive for what we wanted to do.

In the end though, it's all about choice.

James Andres

Lead Developer on Project Opus
www.projectopus.com

gurukripa’s picture

i keep getting Gateway timeout errors..
i dunno if u r aware..guess ur host is giving u a hard time..
after reading so much about ur site..was hoping to see it..
pls help me c it :)

rmorrill’s picture

Like it a lot, thanks! r/d