End-user editable? Or hard-coded?

Permalink
Since I'm new to C5, I'm a bit curious what the overall thinking is when it comes to allowing users to control certain sections of a site. There seem to be so many different ways to "skin this cat" that I think I'm getting confused.

Most, if not all, of the sites I have designed for customers have been pretty static. And, since they don't make many changes throughout the year, I just handle them all for them. Part of the "Value Added Services" that makes working with me such a joy. ;) So moving into a world where I can now allow THEM to edit their sites is a bit foreign... and I'm trying to adapt.

So... take the main site navigation bar as an example. Why would I WANT to allow an end user to control that as a block on a page? I know I can create different templates to allow them to style it however they want... or create a custom block that is added there as a page default, etc... but then they have the "power" to delete it (whether intentionally or not), and it just seems to me that it's a mistake to allow that. Why would they want to create a page that DIDN'T have the navigation?

So... where does the design become sacred enough that you don't allow end-users to edit things? Where do YOU draw the line between being the designer (who "knows what's right", even when the customer doesn't) and allowing end-users "carte blanche" to edit the site to their little heart's content?

I appreciate your input!

- John

arrestingdevelopment
 
PineCreativeLabs replied on at Permalink Reply
PineCreativeLabs
I have been using Concrete as my CMS solution to allow my clients update their sites on their own since early 2009. I have always just assigned them to the "administrators" group, which has default settings. The administrators group allows them access to the dashboard by default.

In the dashboard, you can create user groups. Groups can then have their own permission settings. Users, of course, can be assigned to group(s). Groups can set to be allowed to edit the site.

If I have a client who I ONLY want to be able to edit the front-end, I do the following:

1. Create a group: Under "Users & Groups", go to Groups. Add a group here.

2. Allow a group to be able to edit: Under "Sitewide Settings", go to "Access". Under "Edit Access", check (or uncheck) which groups you want to allow access.

3. "Other Permissions" allows you to turn on or off various other permissions for groups.

I hope this helps.
arrestingdevelopment replied on at Permalink Reply
arrestingdevelopment
Thanks. In my first site I just put together for a friend, I ended up using Advanced Permissions... which was probably overkill, but I didn't know any better at the time.

Aside from permissions, though, I'm curious about the design/coding decisions people make about what they do/don't allow end-users to edit... and some of their thoughts on the whys.

So... you come down on the "relaxed" side of things, allowing your users more control of things than others might. Have you had any problems as a result? Are your customers tech-savvy?

Thanks!
jordanlev replied on at Permalink Reply
jordanlev
This is a great question, and I think the answers differ from client to client and from job to job. It's really something you have to learn from experience, so just use your best judgement and don't worry about it too much and move on. If it turns out you made a mistake, well now you know for future reference :)

As for my thought process about this...
I always ask myself "what is the same from page to page versus what is different from page to page?". If something is the same on every page, I make it part of the template. If it's different from page to page, I make that an editable area. Sometimes things are the same on every page but should be editable by the user (for example, footer content usually falls into this, and sometimes sidebars depending on the design of the site) -- for these, I use "global blocks" (by putting <?php Block::getByName('My Block Name')->display(); ?> in my template, then adding a block to the global scrapbook and setting its name to 'My Block Name' or whatever).

Of course some times there are grey areas as well, like something is almost always the same but differs slightly -- usually I will just put some custom code in the template to handle this. Or if it's something the user should be able to change themselves, I will create a custom attribute for it.

I almost always hardcode navigation menus into my templates -- there is absolutely no reason a navigation menu should ever be removed from a page, so I don't give my clients an opportunity to do so.

I also think that an important distinction needs to be made between creating a theme for the marketplace versus creating a theme for a custom design for one client. If it's a marketplace theme where many people will be using it and you don't know what for, you should probably err on the side of flexibility. Whereas building a custom design for one client, you should err on the side of giving as few options as possible. Some say that the definition of design is making choices, and in this case your client is paying you to make appropriate choices for them about how the site should look -- so if you just dump everything back on them by giving them unlimited choices about what content to put where, you are not doing your job. Instead, they are looking to you to set up proper boundaries that make their life easier (less choices to make on a daily basis) and ensure the site looks as good as possible (keeping their content within the overall layout).

This is a great discussion topic, I hope other people find it and chime in as well!

-Jordan
arrestingdevelopment replied on at Permalink Reply
arrestingdevelopment
"It's really something you have to learn from experience, so just use your best judgement and don't worry about it too much and move on. If it turns out you made a mistake, well now you know for future reference :)"

Now that's something I can live with! LOL! Seriously, that's comforting advice. I guess I've been spending too much time THINKING about what I'm going to do... and not enough time actually DOING it. The hazard of being new to any technology, I suppose.

And I think you've hit the nail on the head when you talk about the distinction between coding a custom theme for a single client -vs- coding a theme for sale in the marketplace. Most of the tutorials and articles I've been reading all emphasize the idea of keeping things editable... which is great if you plan on selling the theme. But a nightmare if you plan on being the one to support a single client who just deleted all the navigation from their home page. LOL! (admittedly, it's über-easy to re-create the nav, but that's not the point).

I'm a big fan of keeping things simple for my customers. If I'm going to provide them with access to edit/maintain their own site, I want to be sure that I help protect them from themselves.

But I admit that I may end up being TOO protective... and might tend to turn off some features/functionality that could end up being useful to them in the future.

Thanks for the sounding board. I hope others chime in with their take on things, too, as I think it will help to ease my fears. ;D