I am attempting to return to Drupal after being disillusioned with Drupal 5 and migrating to another CMS. I am starting to feel that I just have terribly bad timing here, coming in so soon after Drupal 7 is released. I don't feel it's right to deploy a site right now on Drupal 6; 7 was released for a reason after all.
So I'm finding it extremely hard to deploy a simple image gallery on D7. I do not want to install someone else's product and hook it into Drupal (for my needs, that would remove the motivation to use Drupal). The Media module was suggested to me in #drupal, but it is broken and has warnings on its page that it contains bugs that can destroy your site database. I tried it in a sandbox just to make sure and it couldn't even show thumbnails of the images I uploaded. The audio and video portions are already classified non-working by the developer.
Instead I created my own "image" Content Type and created a gallery Taxonomy with one term for each gallery I wanted. Using Views, I am able to create a View page that shows the images in a gallery with thumbnails in a grid. Colorbox integrates and works as expected.
Now I need to have a front page for the gallery that, like any other gallery, shows a thumbnail from each Taxonomy Term and the name of the gallery. Views seems to be unable to do this, showing only a simple summary list of links to the Terms, which works as expected but it's not what I need.
Someone in #drupal suggested the Gallery View module, which is for D6 only. After some more conversation, this person pointed me to a patch for Drupal 7. But as I understand it, every time an update occurs on the module, I have to manually uninstall it, install the update, search out the patch again, and patch it again. I am also naturally suspicious of modules whose migration to D7 hasn't even begun. Relying on something that might be abandoned code doesn't make good business sense to me.
They then sent me to a great tutorial on Lullabot that shows how to create an image gallery with Drupal 6, using Views Attach - again, only available for D6.
I get to thinking at times like this that if I hand-coded my own gallery I'd be done by now, and that would be all well and good if I wasn't seeing people build out amazing sites on platforms like Drupal. Which begs my question: How come it's so hard in 2011 to put in a stupid image gallery? Maybe I've been spoiled by sites like Facebook, but the bigger issue is, my clients have been spoiled by sites like Facebook, and they don't understand why I can't just snap my fingers and make an image gallery. I get the desire for core to be lean, but these days, this seems as much of an oversight as if you had to install a module to post articles, and it wasn't ready until months after a core release.
I understand that some people will see this post as flamebait and take out their own issues on me, but it's not - I hope you can understand my frustration, and hopefully my words will be taken the way they're intended - as an outside voice providing some perspective on how we have the power to make these things easy without sacrificing flexibility, and we don't.
To some specific questions:
1. Should I be deploying on Drupal 6 right now?
2. What's going to be more difficult - rolling all my own solutions or upgrading to Drupal 7 when it's (really) ready? (I seem to recall I didn't upgrade to D6 back in the day because it was prohibitively complicated.)
3. My problem with Views may be because I'm trying to make one view that does everything. If I can do it with two views, how do I set them up so that mysite.com/gallery goes to the separate summary view and mysite.com/gallery/1 ... n go to the galleries?
Please excuse the frankness of my post and the frustration in it. "Pleasing, Non-Threatening Internet Forum" is not my first language :-).
Comments
1. Should I be deploying on
If you want to build something RIGHT NOW and don't want to wait for module availability, build on Drupal 6, not 7. Alternately, if the module selection isn't up to your standards, submit patches to help the module maintainers get their modules to 7 or write your own and contribute them.
Upgrading is never fun, but it is do-able. Again, if you have to launch something RIGHT NOW 6 is probably the better solution.
Unless you need functionality specific to Drupal 7, there is no reason why you shouldn't develop on 6.
Kirk from Fantombox
http://fantombox.com
Please don't take this as
Please don't take this as directed only toward you, but I absolutely HATE it when I go to a place offering software I need, for which millions of lines of code have been written, and I need the software because I can't do what you've done (otherwise y'all would be using *my* CMS) and I'm told to go in and fix the problems I'm experiencing. I know a little PHP, and I need to deploy a few sites this month and focus on their content development. I can't drop all my clients, my wife, and my other projects and learn how to program well enough to either contribute to a project as old as Drupal or create my own CMS, especially when thousands of people are already working on this one and I would be sole developer, maintainer, and beta tester.
I get it - people complain on the Internet. But yeah, if I were a programmer, I wouldn't be here complaining that the people who ARE programmers haven't finished what they're working on.
Like I said, not directed at you, this happens constantly in the open source community and it sends the wrong message - "we're going to get you 98% of the way there and then you have to learn everything we know to get yourself the other 2% of the way." And it also sends the message that the wheel must constantly be reinvented by people who just need a car.
All that being said, thank you for the confirmation that I should be developing on D6. Maybe I'll give it a spin. The worst that could happen is I get stuck the same way and sell my car for an Expression Engine license.
I can't drop all my clients,
Do you see what you're saying? You can't dedicate the time, but others should to make you happy?
It's not like module developers just build modules because they are bored and have nothing else to do. They do it because they are also site builders, designers and programmers who need specific functionality. So they take out extra time to write code and contribute it back to the community.
But now that the code isn't ready for the brand new release version of Drupal, they are somehow the bad guys. Not the guy complaining that they aren't donating enough of their time immediately.
This is how FOSS stuff works. Unless you are contributing back to the community, it is my opinion that you have no right to complain about how other volunteers spend their time.
Kirk from Fantombox
http://fantombox.com
I was afraid you'd take it
I was afraid you'd take it personally. No, they're offering this for free, they've worked it into their schedules, and they should expect, right or wrong, that people expect their stuff to work. Especially when it's marketed as the CMS of choice for the President of the United States, et al. For FOSS to work it needs to be usable by people who aren't hackers and don't have the ability to learn the first 98% to get the author the other 2% of the way.
Let me defuse this - it seems what you're saying is that the developers are doing what they can to get their modules ready to go with D7, and I respect that, and you've already answered the question, for immediate deployment needs, D6 is still the way to go.
I appreciate the info and I apologize for any bad feelings caused by my frustration.
I don't take it personally, I
I don't take it personally, I just think you made several selfish statements.
The fact is, FOSS software is just like all other software.
If you work in an IT department, you don't upgrade your computers to a new operating system the day it is released. You first have to do testing and you also probably have to wait or at least verify that the software your company uses is compatible with the new OS.
Drupal is essentially an OS. This is exactly why 2 versions of Drupal are 'supported' at any given time. The latest version has the newest feature set but might not be ready for wide-spread use. The previous version is well tested, solid and has the most 3rd party support.
Kirk from Fantombox
http://fantombox.com
_
I don't think kirk was taking it personally-- just explaining how foss works.
Then you're likely to be very frustrated by foss-- quite simply that's not the way it works and it's not likely to change. Paid and volunteer work involve very different paradigms (regardless of the industry) and your statements demonstrate a fundamental lack of understanding of that. FOSS is free in terms of money (usually)-- but that does not mean completely free. It often involves a cost in terms of effort.
If this is truly how you feel, then you should look at commercial alternatives where there are teams of people paid to cater to customer needs-- foss just simply isn't it.
_
Don't be a Help Vampire - read and abide the forum guidelines.
If you find my assistance useful, please pay it forward to your fellow drupalers.
Thanks guys, I will be
Thanks guys, I will be abandoning this particular subthread to work out the original problem. I tend to ruffle feathers, but I mean you no harm. And your OS analogy does hold water.
_
i can certainly appreciate your frustration. At least part of the reason 'galleries' are so complicated is that there's probably a dozen, or more, different ways to do it.
Personally, I use the lullabot method and simply embed the view (the part normally done with views_attach) into the appropriate gallery's node.tpl.php file (using views_embed_view) for the time being.
However, it sounds like you are already on a good track with the method you describe in the 3rd paragraph-- but I'm not understanding what type of view you're trying to create that's not working for you. Could you post (or link to) an export of your existing view and provide more specifics about what exactly you're trying to create?
_
Don't be a Help Vampire - read and abide the forum guidelines.
If you find my assistance useful, please pay it forward to your fellow drupalers.
Thanks. I don't think it'll
Thanks. I don't think it'll be helpful to post the view, because the view works, it's just that I'm also trying to do a "Summary" with it if an argument (Taxonomy Term ID) is not specified.
Here's what I have:
When you go to mysite.com/gallery/x, where x=the Tax Term ID of a term in the Gallery Taxonomy, it displays a grid of thumbnails. A visitor can click one and it comes up in Colorbox. All of this works out of the box with D7 and Views.
When you go to mysite.com/gallery, it shows an unordered list of Tax Term Names, and you can click on any of them and get the gallery described above.
I've done this by creating a View, creating a Page for that view, setting the path to "gallery," setting up Taxonomy Term ID as an argument, and setting it to create a "Summary, Sorted Ascending" if no argument is provided.
I should also mention that I installed the available dev version of Gallery Summary for D7 and even when I specify it in the Arguments, it does nothing.
Here's what I need:
When you go to mysite.com/gallery, it should display a grid similar to the galleries, but each item being a link to each gallery (each Tax Term ID) and show an image from each gallery.
I have not yet attempted to create a separate View that shows all the term names with images, primarily because I don't think it can be done - there doesn't seem to be a way to tell Views to pull a random or particular single node out of each Tax Term and display it along with the Tax Term name - but secondly, because they'd both have to be set to the same path, which can't be done, as far as I know. They'd need to be set to the same path in order to handle visits to mysite.com/gallery (showing one View) and mysite.com/gallery/1 or gallery/2 or gallery/3 (showing the View I've already created).
_
i'm 99% it can be done with views-- it likely involves using a term view (not a node view) with a relationship to the nodes that have that term (to pull in the image). The reason I asked for an export, is it would have save me time recreating what you already have so I could figure out what type of view you needed. I'm curious to do it this way myself, but I probably won't get to it until later today.
_
Don't be a Help Vampire - read and abide the forum guidelines.
If you find my assistance useful, please pay it forward to your fellow drupalers.
Okay, so here's the exported
Okay, so here's the exported view. It's been through all the hacking to make it work, so I imagine it shows signs of wear. I'll let you have a look at it before I make the final decision on whether it's just better to go back to D6 because this is a new site.
$view = new view;
$view->name = 'web_gallery_view';
$view->description = '';
$view->tag = '';
$view->base_table = 'node';
$view->human_name = 'Web Gallery View';
$view->core = 7;
$view->api_version = '3.0-alpha1';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: Defaults */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['style_plugin'] = 'grid';
$handler->display->display_options['style_options']['fill_single_line'] = 1;
$handler->display->display_options['row_plugin'] = 'fields';
/* Field: Node: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
/* Field: Fields: field_web_gallery_image */
$handler->display->display_options['fields']['entity_id']['id'] = 'entity_id';
$handler->display->display_options['fields']['entity_id']['table'] = 'field_data_field_web_gallery_image';
$handler->display->display_options['fields']['entity_id']['field'] = 'entity_id';
$handler->display->display_options['fields']['entity_id']['label'] = '';
$handler->display->display_options['fields']['entity_id']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['trim'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['entity_id']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['entity_id']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['html'] = 0;
$handler->display->display_options['fields']['entity_id']['element_label_colon'] = 1;
$handler->display->display_options['fields']['entity_id']['element_default_classes'] = 1;
$handler->display->display_options['fields']['entity_id']['hide_empty'] = 0;
$handler->display->display_options['fields']['entity_id']['empty_zero'] = 0;
$handler->display->display_options['fields']['entity_id']['click_sort_column'] = 'fid';
$handler->display->display_options['fields']['entity_id']['type'] = 'colorbox';
$handler->display->display_options['fields']['entity_id']['settings'] = array(
'colorbox_node_style' => 'thumbnail',
'colorbox_image_style' => '',
);
/* Argument: Taxonomy: Term ID */
$handler->display->display_options['arguments']['tid']['id'] = 'tid';
$handler->display->display_options['arguments']['tid']['table'] = 'taxonomy_index';
$handler->display->display_options['arguments']['tid']['field'] = 'tid';
$handler->display->display_options['arguments']['tid']['default_action'] = 'summary asc';
$handler->display->display_options['arguments']['tid']['style_plugin'] = 'unformatted_summary';
$handler->display->display_options['arguments']['tid']['style_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['tid']['style_options']['inline'] = 0;
$handler->display->display_options['arguments']['tid']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['tid']['validate_type'] = 'taxonomy_term';
$handler->display->display_options['arguments']['tid']['validate_options']['vocabularies'] = array(
'web_gallery' => 'web_gallery',
);
$handler->display->display_options['arguments']['tid']['validate_options']['transform'] = 0;
$handler->display->display_options['arguments']['tid']['break_phrase'] = 0;
$handler->display->display_options['arguments']['tid']['add_table'] = 0;
$handler->display->display_options['arguments']['tid']['require_value'] = 0;
$handler->display->display_options['arguments']['tid']['reduce_duplicates'] = 1;
$handler->display->display_options['arguments']['tid']['set_breadcrumb'] = 0;
/* Display: Page */
$handler = $view->new_display('page', 'Page', 'web_gallery_page');
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'grid';
$handler->display->display_options['style_options']['fill_single_line'] = 1;
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Field: Node: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['exclude'] = TRUE;
$handler->display->display_options['fields']['nid']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['nid']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['nid']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['nid']['alter']['trim'] = 0;
$handler->display->display_options['fields']['nid']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['nid']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['nid']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['nid']['alter']['html'] = 0;
$handler->display->display_options['fields']['nid']['element_label_colon'] = 1;
$handler->display->display_options['fields']['nid']['element_default_classes'] = 1;
$handler->display->display_options['fields']['nid']['hide_empty'] = 0;
$handler->display->display_options['fields']['nid']['empty_zero'] = 0;
$handler->display->display_options['fields']['nid']['link_to_node'] = 1;
/* Field: Fields: field_web_gallery_image */
$handler->display->display_options['fields']['entity_id']['id'] = 'entity_id';
$handler->display->display_options['fields']['entity_id']['table'] = 'field_data_field_web_gallery_image';
$handler->display->display_options['fields']['entity_id']['field'] = 'entity_id';
$handler->display->display_options['fields']['entity_id']['label'] = '';
$handler->display->display_options['fields']['entity_id']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['trim'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['entity_id']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['entity_id']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['entity_id']['alter']['html'] = 0;
$handler->display->display_options['fields']['entity_id']['element_label_colon'] = 1;
$handler->display->display_options['fields']['entity_id']['element_default_classes'] = 1;
$handler->display->display_options['fields']['entity_id']['hide_empty'] = 0;
$handler->display->display_options['fields']['entity_id']['empty_zero'] = 0;
$handler->display->display_options['fields']['entity_id']['click_sort_column'] = 'fid';
$handler->display->display_options['fields']['entity_id']['type'] = 'colorbox';
$handler->display->display_options['fields']['entity_id']['settings'] = array(
'colorbox_node_style' => 'thumbnail',
'colorbox_image_style' => '',
);
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Argument: Taxonomy: Term ID */
$handler->display->display_options['arguments']['tid']['id'] = 'tid';
$handler->display->display_options['arguments']['tid']['table'] = 'taxonomy_index';
$handler->display->display_options['arguments']['tid']['field'] = 'tid';
$handler->display->display_options['arguments']['tid']['default_action'] = 'summary asc';
$handler->display->display_options['arguments']['tid']['style_plugin'] = 'gallery_summary';
$handler->display->display_options['arguments']['tid']['style_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['tid']['style_options']['gallery_display'] = 'web_gallery_page';
$handler->display->display_options['arguments']['tid']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['tid']['validate_type'] = 'taxonomy_term';
$handler->display->display_options['arguments']['tid']['validate_options']['vocabularies'] = array(
'web_gallery' => 'web_gallery',
);
$handler->display->display_options['arguments']['tid']['validate_options']['transform'] = 0;
$handler->display->display_options['arguments']['tid']['break_phrase'] = 0;
$handler->display->display_options['arguments']['tid']['add_table'] = 0;
$handler->display->display_options['arguments']['tid']['require_value'] = 0;
$handler->display->display_options['arguments']['tid']['reduce_duplicates'] = 1;
$handler->display->display_options['arguments']['tid']['set_breadcrumb'] = 0;
$handler->display->display_options['path'] = 'web';
$translatables['web_gallery_view'] = array(
t('Defaults'),
t('more'),
t('Apply'),
t('Reset'),
t('Sort By'),
t('Asc'),
t('Desc'),
t('Items per page'),
t('- All -'),
t('Offset'),
t('Nid'),
t('All'),
t('Page'),
);
You could try the Media Gallery
It is currently in Beta but looks promising. http://drupal.org/project/media_gallery
Personally I can think of a number of different ways a Gallery could be implemented in Drupal but they are all different and completed depend upon the particular requirements for your project...
Views can ...
Views has access to all the attributes of a taxonomy term.
Since fields are in core as of Drupal 7, and fields apply to all the entities, you can make images a property of taxonomy terms. This means every taxonomy term may have a unique image associated directly with the term -- and if it's missing, you can choose to default to a generic image (picture of a camera, for example).
This isn't exactly how a conventional "gallery" tool might work; in the more usual case you'd see the system grabbing the most recent image that's in a gallery, unless instructed to do otherwise.
We had methods of embedding views in nodes in D6; perhaps we'll be able to embed them in taxonomy terms in D7. That would allow a term to find an image from a flagged node, or fall back to grabbing one from the first or last matching node.
I don't see a direct way of doing that as of today with Views 3, but then I haven't tried all the D7 modules. http://drupal.org/project/viewreference for D7 might be an avenue to explore.
_
ah-- this seems an even better method. I'm still working on retooling my thinking for d7. excellent suggestion.
_
Don't be a Help Vampire - read and abide the forum guidelines.
If you find my assistance useful, please pay it forward to your fellow drupalers.
After not hearing back from
After not hearing back from anyone on this all night I went ahead and installed Drupal 6. I installed the "feature" package of the Lullbot solution, and after creating a few galleries, I went to add images and it says there are no galleries.
I started looking again and found the Gallery Assist module. Set it up, everything worked like a charm until I installed Gallery Assist Lightboxes, and none of the lightboxes work.
I don't know how much more of this I can take.
prototype on drupalgardens D7
This is a wildcard idea ..
create a free account at www.drupalgardens.com
experiment with media gallery creation in D7 ..
see tutorial here http://www.drupalgardens.com/videos/217681
export the working drupalgardens prototype gallery to your main D7 site.
_
I did spend some time trying to get this to work properly but had to get to back to real life before finding an acceptable view. I did however find the http://drupal.org/project/gallery_summary module which looks to do exactly what's necessary to get a properly formatted summary view.
However, since you've gone back to d6, i find the http://www.lullabot.com/articles/photo-galleries-views-attach (captured by the views_gallery module) method to be the 'best' most flexible gallery solution.
_
Don't be a Help Vampire - read and abide the forum guidelines.
If you find my assistance useful, please pay it forward to your fellow drupalers.
Empty views-gallery-views.txt file
The Lullabot solution's views-gallery-views.txt file in the attached zip file (views-gallery-exports.zip - 4.79 KB) is empty.
Here it is, exported from the feature version:
$content['type'] = array ('name' => 'Gallery',
'type' => 'gallery',
'description' => 'A collection of photographs maintained by a user.',
'title_label' => 'Title',
'body_label' => 'Description',
'min_word_count' => '0',
'help' => '',
'node_options' =>
array (
'status' => true,
'promote' => true,
'sticky' => false,
'revision' => false,
),
'show_preview_changes' => true,
'show_diff_inline' => false,
'enable_revisions_page' => true,
'old_type' => 'gallery',
'orig_type' => 'gallery',
'module' => 'node',
'custom' => '0',
'modified' => '1',
'locked' => '1',
'reset' => 'Reset to defaults',
'comment' => 2,
'comment_default_mode' => 4,
'comment_default_order' => 1,
'comment_default_per_page' => 50,
'comment_controls' => 3,
'comment_anonymous' => 0,
'comment_subject_field' => 1,
'comment_preview' => 1,
'comment_form_location' => 0,
'page_title' =>
array (
'show_field' =>
array (
'show_field' => false,
),
'pattern' => '',
),
);
For the 'Lullabot' solution,
For the 'Lullabot' solution, galleries are a separate content type from images. So before you can add images to a gallery, you have to create the gallery.
I use their method frequently and have never had an issue with it.
Kirk from Fantombox
http://fantombox.com