3 class A_NextGen_Basic_Singlepic_Controller extends Mixin
6 * Displays the 'singlepic' display type
8 * @param stdClass|C_Displayed_Gallery|C_DataMapper_Model $displayed_gallery
10 function index_action($displayed_gallery, $return = FALSE)
12 $storage = $this->object->get_registry()->get_utility('I_Gallery_Storage');
13 $dynthumbs = $this->object->get_registry()->get_utility('I_Dynamic_Thumbnails_Manager');
14 $display_settings = $displayed_gallery->display_settings;
16 // use this over get_included_entities() so we can display images marked 'excluded'
17 $image = array_shift($displayed_gallery->get_entities(1, FALSE, FALSE, 'both'));
20 return $this->object->render_partial("photocrati-nextgen_gallery_display#no_images_found", array(), $return);
22 switch ($display_settings['float']) {
24 $display_settings['float'] = 'ngg-left';
27 $display_settings['float'] = 'ngg-right';
30 $display_settings['float'] = 'ngg-center';
33 $display_settings['float'] = '';
39 if (!empty($display_settings['link']))
41 $target = $display_settings['link_target'];
45 $display_settings['link'] = $storage->get_image_url($image, 'full', TRUE);
47 $effect_code = $this->object->get_effect_code($displayed_gallery);
49 $params['target'] = $target;
51 // mode is a legacy parameter
52 if (!is_array($display_settings['mode']))
53 $display_settings['mode'] = explode(',', $display_settings['mode']);
54 if (in_array('web20', $display_settings['mode']))
55 $display_settings['display_reflection'] = TRUE;
56 if (in_array('watermark', $display_settings['mode']))
57 $display_settings['display_watermark'] = TRUE;
59 if (isset($display_settings['w']))
60 $display_settings['width'] = $display_settings['w'];
61 elseif (isset($display_settings['h']))
62 unset($display_settings['width']);
64 if (isset($display_settings['h']))
65 $display_settings['height'] = $display_settings['h'];
66 elseif (isset($display_settings['w']))
67 unset($display_settings['height']);
69 // legacy assumed no width/height meant full size unlike generate_thumbnail: force a full resolution
70 if (!isset($display_settings['width']) && !isset($display_settings['height']))
71 $display_settings['width'] = $image->meta_data['width'];
73 if (isset($display_settings['width']))
74 $params['width'] = $display_settings['width'];
76 if (isset($display_settings['height']))
77 $params['height'] = $display_settings['height'];
79 $params['quality'] = $display_settings['quality'];
80 $params['crop'] = $display_settings['crop'];
81 $params['watermark'] = $display_settings['display_watermark'];
82 $params['reflection'] = $display_settings['display_reflection'];
84 // Fall back to full in case dynamic images aren't available
87 if ($dynthumbs != null)
88 $size = $dynthumbs->get_size_name($params);
90 $thumbnail_url = $storage->get_image_url($image, $size);
92 if (!empty($display_settings['template']))
94 $this->object->add_mixin('A_NextGen_Basic_Template_Form');
95 $this->object->add_mixin('Mixin_NextGen_Basic_Templates');
96 $params = $this->object->prepare_legacy_parameters(array($image), $displayed_gallery, array('single_image' => TRUE));
98 // the wrapper is a lazy-loader that calculates variables when requested. We here override those to always
99 // return the same precalculated settings provided
100 $params['image']->container[0]->_cache_overrides['caption'] = $displayed_gallery->inner_content;
101 $params['image']->container[0]->_cache_overrides['classname'] = 'ngg-singlepic ' . $display_settings['float'];
102 $params['image']->container[0]->_cache_overrides['imageURL'] = $display_settings['link'];
103 $params['image']->container[0]->_cache_overrides['thumbnailURL'] = $thumbnail_url;
104 $params['target'] = $target;
106 // if a link is present we temporarily must filter out the effect code
107 if (empty($effect_code))
108 add_filter('ngg_get_thumbcode', array(&$this, 'strip_thumbcode'), 10);
110 $retval = $this->object->legacy_render($display_settings['template'], $params, $return, 'singlepic');
112 if (empty($effect_code))
113 remove_filter('ngg_get_thumbcode', array(&$this, 'strip_thumbcode'), 10);
118 $params = $display_settings;
119 $params['storage'] = &$storage;
120 $params['image'] = &$image;
121 $params['effect_code'] = $effect_code;
122 $params['inner_content'] = $displayed_gallery->inner_content;
123 $params['settings'] = $display_settings;
124 $params['thumbnail_url'] = $thumbnail_url;
125 $params['target'] = $target;
127 $params = $this->object->prepare_display_parameters($displayed_gallery, $params);
129 return $this->object->render_partial('photocrati-nextgen_basic_singlepic#nextgen_basic_singlepic', $params, $return);
134 * Intentionally disable the application of the effect code
136 function strip_thumbcode($thumbcode)
142 * Enqueues all static resources required by this display type
144 * @param C_Displayed_Gallery $displayed_gallery
146 function enqueue_frontend_resources($displayed_gallery)
148 $this->call_parent('enqueue_frontend_resources', $displayed_gallery);
150 wp_enqueue_style('nextgen_basic_singlepic_style', $this->get_static_url('photocrati-nextgen_basic_singlepic#nextgen_basic_singlepic.css'));
152 $this->enqueue_ngg_styles();