MODx is perfect for this.
The MaxiGallery snippet will do most of the work for you. It may take a little time to understand how to set things up but MaxiGallery will automatically let each artist manage his or her own "gallery" with uploading, titling, summarizing, re-ordering, and deleting photos.
It will also give you a sort of master gallery page with a link to each artists gallery.
One thing to watch out for, when you specify a maximum size for your photos in MaxiGallery, it will be semi-permanent. You can’t change it without re-uploading all the photos.
The Ditto snippet will take care of displaying your recent blog posts and the Newspublisher snippet should handle entering those posts.
I’m not sure about the slide show. I have a similar page but I display a random photo from all the photo galleries. If you click on the photo, you see a slide show of the pictures in that gallery that the user can click through.
On your last question, of course the set up is easier if you have just one admin who does everything. One of the joys of MODx, however, is that it makes it relatively easy to offload work to your users without compromising the integrity of the site.
I have a site that does much of what you want and I thought I’d throw in some pointers and code. It may look a little daunting but it’s much much simpler than it looks. Much of what you plan can be done with MODX in six to eight lines of code. I’m relatively new to MODx, so there may be better ways to do some of this than my examples but they definitely work.
Here is some stuff to get you started thinking about what you’d need to do -- you’ll have to look elsewhere for how to install MODx and set up the default (home) page of the site:
Once the site is working and has a home page, create a new document called something like "Galleries" make it a container document
Put the following as its content:
[b]Click on a photo to vist a photo gallery[/b]
[[MaxiGallery? &display=`childgalleries` &pics_per_row=`3`]]
Then, you need another document to add a new gallery. Call it "Add a Gallery." Publish it, but don’t make it public.
Put this as its content:
[!NewsPublisher? &clearcache=`1` &folder=`25` &template=PhotoGalleryTemplate &canpost=`wugPhotoAdmins` &showinmenu=1 &footertpl=`MyPhotoGalleryChunk`!]
The parameters require some explanation. &folder is the document number of the photo gallery page mentioned above (it won’t be 25). &template is the template that you’ve created for your photo galleries (this will make sense by the time you get to this point). As an alternative, you could use the default template for your site. &canpost specifies the group of people who can create a new gallery (maybe just you). Footertpl is just the name of the chunk you’ve created for your footer (again, this will make sense later).
You’ll have to struggle a little with user permissions, but once you get it right, users will see a "manage photos" button only on their own gallery page that will allow them to upload, re-arrange, delete, caption, etc.
***
For the blog, the steps are surprisingly similar.
You need to create a container page for the posts just like the photo gallery container page.
It doesn’t need any content but if you want it to display ALL blog posts, put this:
[!Ditto?startID=`8` & display=`all` &extenders=`summary` &dateFormat=`%d-%b-%y %I:%M %p` &tpl=`MyNewsItemChunk` &debug=`0`!]
(startID is the doc ID number of the blog post container document.)
This line in another document will let people enter blog posts:
[!NewsPublisher? &folder=`8` &clearcache=`1` &canpost=`wugNewsAdmins` &postid=`1` !]
&folder is, again, the Id of the container document for the blog posts. &postid is the doc ID of the doc the user is sent to after submitting the post.
This code will display the most recent 5 of them:
[!Ditto?startID=`8` &display=`5` &dateFormat=`%d-%b-%y %I:%M %p` &tpl=`MyNewsItemChunk` &extenders=`summary` &debug=`0`!]
MyNewsItemChunk is a chunk that determines how each blog post is rendered in HTML. Mine contains the following code (the CSS file sets how this is all displayed) :
<item>
<div class="ditto_summaryPost">
<h3>[+title+]</h3>
<div class="ditto_summary">[+summary+]</div>
<div class="seemore"> <a href="[+id+]" title="[+title+]">See more about this story . . .</a> </div>
<div class="postedby">» Posted by [+author+] on [+date+]</div>
</div>
<hr/>
</item>
I hope this all makes some sense to you.
Bob