diff --git a/media_gallery.css b/media_gallery.css index cad3938..da16862 100644 --- a/media_gallery.css +++ b/media_gallery.css @@ -368,7 +368,8 @@ } -.mg-col { +.mg-col, +.view-media-galleries td { display: inline-block; margin: 0 -0.5em 3em; width: 100%; @@ -393,52 +394,62 @@ a.media-gallery-thumb img, */ .mg-col-1 > .field-items > .field-item, .mg-col-1 .node, +.view-media-galleries .cols-1 td .media-gallery-detail .field-items > .field-item { width: 100% !important; } .mg-col-2 > .field-items > .field-item, -.mg-col-2 .node { +.mg-col-2 .node, +.view-media-galleries .cols-2 td { width: 50% !important; } .mg-col-3 > .field-items > .field-item, -.mg-col-3 .node { +.mg-col-3 .node, +.view-media-galleries .cols-3 td { width: 33.3% !important; } .mg-col-4 > .field-items > .field-item, -.mg-col-4 .node { +.mg-col-4 .node, +.view-media-galleries .cols-4 td { width: 24.96% !important; } .mg-col-5 > .field-items > .field-item, -.mg-col-5 .node { +.mg-col-5 .node, +.view-media-galleries .cols-5 td { width: 20% !important; } .mg-col-6 > .field-items > .field-item, -.mg-col-6 .node { +.mg-col-6 .node, +.view-media-galleries .cols-6 td { width: 16.6666666665% !important; } .mg-col-7 > .field-items > .field-item, -.mg-col-7 .node { +.mg-col-7 .node, +.view-media-galleries .cols-7 td { width: 14.2857142857% !important; } .mg-col-8 > .field-items > .field-item, -.mg-col-8 .node { +.mg-col-8 .node, +.view-media-galleries .cols-8 td { width: 12.5% !important; } .mg-col-9 > .field-items > .field-item, -.mg-col-9 .node { +.mg-col-9 .node, +.view-media-galleries .cols-9 td { width: 11.1111111111% !important; } .mg-col-10 > .field-items > .field-item, -.mg-col-10 .node { +.mg-col-10 .node, +.view-media-galleries .cols-10 td { width: 10% !important; } diff --git a/media_gallery.install b/media_gallery.install index dce80b4..0889aee 100644 --- a/media_gallery.install +++ b/media_gallery.install @@ -903,31 +903,11 @@ function media_gallery_create_taxonomy_term($vocabulary) { // When we allow people to create new gallery collections we'll have to // (carefully) modify the form for adding new ones also. $term->format = filter_fallback_format(); - $term->path = array('alias' => 'galleries'); // Save the term, preventing Pathauto from aliasing it incorrectly. _media_gallery_prevent_unwanted_pathauto_aliases(); taxonomy_term_save($term); _media_gallery_allow_all_pathauto_aliases(); - // Create a menu link for this taxonomy term. We set the link title to - // 'Taxonomy term' in order to match the title of the corresponding router - // item, since this is what triggers the menu system to display a dynamic - // title for the link. - $menu_item = array( - 'menu_name' => 'main-menu', - 'weight' => 10, - 'link_title' => 'Taxonomy term', - 'link_path' => 'taxonomy/term/' . $term->tid, - ); - // If the router item doesn't exist yet (for example, if we are installing - // either the Taxonomy module or Drupal itself at the same time as Media - // Gallery), rebuild the menu before saving, to avoid errors. - $router_item_exists = (bool) db_query_range('SELECT 1 FROM {menu_router} WHERE path = :path', 0, 1, array(':path' => 'taxonomy/term/%'))->fetchField(); - if (!$router_item_exists) { - menu_rebuild(); - } - menu_link_save($menu_item); - // Save the term ID for future use. variable_set('media_gallery_default_collection_tid', $term->tid); } diff --git a/media_gallery.module b/media_gallery.module index 70f3932..218cdd4 100644 --- a/media_gallery.module +++ b/media_gallery.module @@ -137,15 +137,16 @@ function media_gallery_menu() { } /** + * Implements hook_views_api(). + */ +function media_gallery_views_api() { + return array("version" => "3.0"); +} + +/** * Implements hook_menu_alter(). */ function media_gallery_menu_alter(&$items) { - // Take over taxonomy term list pages by substituting our own callback. - // TODO: Use hook_entity_info_alter() to change the entity uri callback for - // gallery collections only. - $items['taxonomy/term/%taxonomy_term']['page callback'] = 'media_gallery_list_galleries'; - $items['taxonomy/term/%taxonomy_term']['file'] = 'media_gallery.pages.inc'; - $items['taxonomy/term/%taxonomy_term']['module'] = 'media_gallery'; // If you're viewing a media item in context somewhere (which we do inside // media gallery nodes), that means it's being used on your site, which means diff --git a/media_gallery.pages.inc b/media_gallery.pages.inc index 2d84ab7..8e5cf0d 100644 --- a/media_gallery.pages.inc +++ b/media_gallery.pages.inc @@ -1,76 +1,6 @@ vid !== $collections_vid) { - module_load_include('inc', 'taxonomy', 'taxonomy.pages'); - return taxonomy_term_page($term); - } - - // Add front-end resources for drag-and-drop sorting. - if (user_access('administer media galleries')) { - drupal_add_library('system', 'ui.sortable'); - drupal_add_js(drupal_get_path('module', 'media_gallery') . '/media_gallery.dragdrop.js'); - drupal_add_css(drupal_get_path('module', 'media_gallery') . '/media_gallery.dragdrop.css'); - $sort_collection_url = url('media-gallery/sort/collection/' . $term->tid . '/' . drupal_get_token('media_gallery')); - drupal_add_js(array('mediaGallerySortCollectionUrl' => $sort_collection_url), array('type' => 'setting')); - } - // Build breadcrumb based on the hierarchy of the term. - $current = (object) array( - 'tid' => $term->tid, - ); - $breadcrumb = array(); - while ($parents = taxonomy_get_parents($current->tid)) { - $current = array_shift($parents); - $breadcrumb[] = l($current->name, 'taxonomy/term/' . $current->tid); - } - $breadcrumb[] = l(t('Home'), NULL); - $breadcrumb = array_reverse($breadcrumb); - drupal_set_breadcrumb($breadcrumb); - drupal_add_feed('taxonomy/term/' . $term->tid . '/feed', 'RSS - ' . $term->name); - - $build['term_heading'] = array( - '#prefix' => '
', - '#suffix' => '
', - 'term' => taxonomy_term_view($term, 'full'), - ); - - // There is a small bug here with the "entity" - $term_entity = new FieldsRSIPreventor($term); - $limit = $term_entity->getValue('media_gallery_columns') * $term_entity->getValue('media_gallery_rows'); - if (!$limit) { - $limit = 10; - } - - $nids = media_gallery_select_galleries($term->tid, TRUE, $limit); - - if (!empty($nids)) { - $nodes = node_load_multiple($nids); - // Add the nodes to the build array, with a weight of 5. - $build += node_view_multiple($nodes, 'teaser', 5); - $build['pager'] = array( - '#theme' => 'pager', - '#weight' => 10, - ); - $build['#term'] = $term; - $build['#theme'] = 'media_gallery_collection'; - } - else { - $build['no_content'] = array( - '#prefix' => '

', - '#markup' => t('No galleries have been set up yet. Add a gallery.', array('@link' => url('node/add/media-gallery'))), - '#suffix' => '

', - ); - } - return $build; -} - -/** * Menu callback; view a single gallery media entity as its own page. */ function media_gallery_detail_page($gallery_node, $file) { diff --git a/media_gallery.views_default.inc b/media_gallery.views_default.inc new file mode 100644 index 0000000..20451b7 --- /dev/null +++ b/media_gallery.views_default.inc @@ -0,0 +1,82 @@ +name = 'media_galleries'; + $view->description = ''; + $view->tag = 'default'; + $view->base_table = 'node'; + $view->human_name = 'Media Galleries '; + $view->core = 7; + $view->api_version = '3.0'; + $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ + + /* Display: Master */ + $handler = $view->new_display('default', 'Master', 'default'); + $handler->display->display_options['title'] = 'Media Galleries '; + $handler->display->display_options['use_ajax'] = TRUE; + $handler->display->display_options['access']['type'] = 'perm'; + $handler->display->display_options['cache']['type'] = 'none'; + $handler->display->display_options['query']['type'] = 'views_query'; + $handler->display->display_options['query']['options']['query_comment'] = FALSE; + $handler->display->display_options['exposed_form']['type'] = 'basic'; + $handler->display->display_options['pager']['type'] = 'full'; + $handler->display->display_options['pager']['options']['items_per_page'] = '10'; + $handler->display->display_options['style_plugin'] = 'grid'; + $handler->display->display_options['style_options']['fill_single_line'] = 1; + $handler->display->display_options['row_plugin'] = 'node'; + $handler->display->display_options['row_options']['links'] = 0; + $handler->display->display_options['row_options']['comments'] = 0; + /* Field: Content: Title */ + $handler->display->display_options['fields']['title']['id'] = 'title'; + $handler->display->display_options['fields']['title']['table'] = 'node'; + $handler->display->display_options['fields']['title']['field'] = 'title'; + $handler->display->display_options['fields']['title']['label'] = ''; + $handler->display->display_options['fields']['title']['alter']['alter_text'] = 0; + $handler->display->display_options['fields']['title']['alter']['make_link'] = 0; + $handler->display->display_options['fields']['title']['alter']['absolute'] = 0; + $handler->display->display_options['fields']['title']['alter']['word_boundary'] = 0; + $handler->display->display_options['fields']['title']['alter']['ellipsis'] = 0; + $handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0; + $handler->display->display_options['fields']['title']['alter']['trim'] = 0; + $handler->display->display_options['fields']['title']['alter']['html'] = 0; + $handler->display->display_options['fields']['title']['hide_empty'] = 0; + $handler->display->display_options['fields']['title']['empty_zero'] = 0; + $handler->display->display_options['fields']['title']['link_to_node'] = 1; + /* Sort criterion: Content: Post date */ + $handler->display->display_options['sorts']['created']['id'] = 'created'; + $handler->display->display_options['sorts']['created']['table'] = 'node'; + $handler->display->display_options['sorts']['created']['field'] = 'created'; + $handler->display->display_options['sorts']['created']['order'] = 'DESC'; + /* Filter criterion: Content: Published */ + $handler->display->display_options['filters']['status']['id'] = 'status'; + $handler->display->display_options['filters']['status']['table'] = 'node'; + $handler->display->display_options['filters']['status']['field'] = 'status'; + $handler->display->display_options['filters']['status']['value'] = 1; + $handler->display->display_options['filters']['status']['group'] = 1; + $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; + /* Filter criterion: Content: Type */ + $handler->display->display_options['filters']['type']['id'] = 'type'; + $handler->display->display_options['filters']['type']['table'] = 'node'; + $handler->display->display_options['filters']['type']['field'] = 'type'; + $handler->display->display_options['filters']['type']['value'] = array( + 'media_gallery' => 'media_gallery', + ); + + /* Display: Page */ + $handler = $view->new_display('page', 'Page', 'page'); + $handler->display->display_options['path'] = 'galleries'; + + $export['media_galleries'] = $view; + + return $export; +}