Overview

Packages

  • Ansel
  • None

Classes

  • Ansel
  • Ansel_Ajax_Application
  • Ansel_Ajax_Imple_EditCaption
  • Ansel_Ajax_Imple_EditFaces
  • Ansel_Ajax_Imple_EditGalleryFaces
  • Ansel_Ajax_Imple_Embed
  • Ansel_Ajax_Imple_GallerySlugCheck
  • Ansel_Ajax_Imple_ImageSaveGeotag
  • Ansel_Ajax_Imple_LocationAutoCompleter
  • Ansel_Ajax_Imple_MapLayerSelect
  • Ansel_Ajax_Imple_TagActions
  • Ansel_Ajax_Imple_ToggleGalleryActions
  • Ansel_Ajax_Imple_ToggleOtherGalleries
  • Ansel_Ajax_Imple_UploadNotification
  • Ansel_Api
  • Ansel_Exception
  • Ansel_Faces
  • Ansel_Faces_Base
  • Ansel_Faces_Facedetect
  • Ansel_Faces_User
  • Ansel_Factory_Faces
  • Ansel_Factory_Storage
  • Ansel_Factory_Styles
  • Ansel_Form_Ecard
  • Ansel_Form_Image
  • Ansel_Form_ImageDate
  • Ansel_Form_Upload
  • Ansel_Gallery
  • Ansel_Gallery_Decorator_Date
  • Ansel_GalleryMode_Base
  • Ansel_GalleryMode_Date
  • Ansel_GalleryMode_Normal
  • Ansel_Image
  • Ansel_ImageGenerator
  • Ansel_ImageGenerator_Mini
  • Ansel_ImageGenerator_PolaroidThumb
  • Ansel_ImageGenerator_PolaroidThumbStack
  • Ansel_ImageGenerator_RoundedThumb
  • Ansel_ImageGenerator_RoundedThumbStack
  • Ansel_ImageGenerator_Screen
  • Ansel_ImageGenerator_ShadowThumb
  • Ansel_ImageGenerator_ShadowThumbStack
  • Ansel_ImageGenerator_SquareThumb
  • Ansel_ImageGenerator_Thumb
  • Ansel_LoginTasks_SystemTask_Upgrade
  • Ansel_Report
  • Ansel_Report_letter
  • Ansel_Report_mail
  • Ansel_Report_tickets
  • Ansel_Search
  • Ansel_Search_exif
  • Ansel_Search_Tag
  • Ansel_Storage
  • Ansel_Style
  • Ansel_Tagger
  • Ansel_Test
  • Ansel_Tile_DateGallery
  • Ansel_Tile_Gallery
  • Ansel_Tile_Image
  • Ansel_View_Ansel
  • Ansel_View_Base
  • Ansel_View_EmbeddedRenderer_GalleryLink
  • Ansel_View_EmbeddedRenderer_Mini
  • Ansel_View_EmbeddedRenderer_Slideshow
  • Ansel_View_Gallery
  • Ansel_View_GalleryProperties
  • Ansel_View_GalleryRenderer_Base
  • Ansel_View_GalleryRenderer_Gallery
  • Ansel_View_GalleryRenderer_GalleryLightbox
  • Ansel_View_Image
  • Ansel_View_List
  • Ansel_View_Results
  • Ansel_View_Slideshow
  • Ansel_View_Upload
  • Ansel_Widget
  • Ansel_Widget_Actions
  • Ansel_Widget_Base
  • Ansel_Widget_GalleryFaces
  • Ansel_Widget_Geotag
  • Ansel_Widget_ImageFaces
  • Ansel_Widget_Links
  • Ansel_Widget_OtherGalleries
  • Ansel_Widget_OwnerFaces
  • Ansel_Widget_SimilarPhotos
  • Ansel_Widget_Tags
  • Ansel_XPPublisher
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Ansel_View_GalleryRenderer_GalleryLightbox:: Class wraps display of the lightbox
  4:  * style gallery views.
  5:  *
  6:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
  7:  *
  8:  * See the enclosed file COPYING for license information (GPL). If you
  9:  * did not receive this file, see http://www.horde.org/licenses/gpl.
 10:  *
 11:  * @author  Michael J. Rubinsky <mrubinsk@horde.org>
 12:  * @package Ansel
 13:  */
 14: class Ansel_View_GalleryRenderer_GalleryLightbox extends Ansel_View_GalleryRenderer_Base
 15: {
 16:     public function __construct($view)
 17:     {
 18:         parent::__construct($view);
 19:         $this->title = _("Lightbox Gallery");
 20:     }
 21: 
 22:     /**
 23:      * Perform any tasks that should be performed before the view is rendered.
 24:      *
 25:      * @TODO: move to const'r
 26:      */
 27:     protected function _init()
 28:     {
 29:         if (empty($this->view->image_onclick)) {
 30:             $this->view->image_onclick = 'return lb.start(%i);';
 31:         }
 32: 
 33:         // Attach the script and CSS files here if we aren't being called via the api
 34:         if (empty($this->view->api)) {
 35:             $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('lightbox.css');
 36:             Horde::addScriptFile('effects.js', 'horde');
 37:             Horde::addScriptFile('lightbox.js', 'ansel');
 38:             Horde::addScriptFile('popup.js', 'horde');
 39:         }
 40:     }
 41: 
 42:     /**
 43:      * Get the HTML representing this view.
 44:      *
 45:      * @return string The HTML
 46:      */
 47:     public function html()
 48:     {
 49:         global $conf, $prefs, $registry;
 50: 
 51:         $galleryOwner = $this->view->gallery->get('owner');
 52:         $id = $this->view->gallery->getIdentity();
 53:         $owner = $id->getValue('fullname');
 54:         if (!$owner) {
 55:             $owner = $galleryOwner;
 56:         }
 57: 
 58:         /* Get JSON data for view */
 59:         // 0 == normal, 1 == by date
 60:         if ($this->mode == 0) {
 61:             $json = Ansel_View_Base::json(
 62:                 $this->view->gallery,
 63:                 array(
 64:                     'full' => !empty($this->view->api),
 65:                     'perpage' => $this->perpage
 66:                 )
 67:             );
 68:         } else {
 69:             if (!empty($this->date['day']) && $this->numTiles) {
 70:                 $json = Ansel_View_Base::json(
 71:                     $this->view->gallery,
 72:                     array(
 73:                         'full' => !empty($this->view->api),
 74:                         'perpage' => $this->perpage
 75:                     )
 76:                 );
 77:             } else {
 78:                 $json = '[]';
 79:             }
 80:         }
 81: 
 82:         // Don't bother if we are being called from the api
 83:         if (!$this->view->api) {
 84:             $option_edit = $this->view->gallery->hasPermission(
 85:                 $GLOBALS['registry']->getAuth(), Horde_Perms::EDIT);
 86: 
 87:             $option_select = $option_delete = $this->view->gallery->hasPermission(
 88:                 $GLOBALS['registry']->getAuth(), Horde_Perms::DELETE);
 89: 
 90:             $option_move = ($option_delete && $GLOBALS['injector']
 91:                 ->getInstance('Ansel_Storage')
 92:                 ->countGalleries($GLOBALS['registry']->getAuth(), array('perm' => Horde_Perms::EDIT)));
 93: 
 94:             $option_copy = ($option_edit && $GLOBALS['injector']
 95:                 ->getInstance('Ansel_Storage')
 96:                 ->countGalleries($GLOBALS['registry']->getAuth(), array('perm' => Horde_Perms::EDIT)));
 97:             /* See if we requested a show_actions change (fallback for non-js) */
 98:             if (Horde_Util::getFormData('actionID', '') == 'show_actions') {
 99:                 $prefs->setValue('show_actions', (int)!$prefs->getValue('show_actions'));
100:             }
101:         }
102: 
103:         // Set up the pager
104:         $date_params = Ansel::getDateParameter(array(
105:             'year' => !empty($this->view->year) ? $this->view->year : 0,
106:             'month' => !empty($this->view->month) ? $this->view->month : 0,
107:             'day' => !empty($this->view->day) ? $this->view->day : 0));
108: 
109:         $vars = Horde_Variables::getDefaultVariables();
110:         if (!empty($this->view->page)) {
111:             $vars->add('page', $this->view->page);
112:             $page = $this->view->page;
113:         } else {
114:             $page = 0;
115:         }
116:         if (!empty($this->view->gallery_view_url)) {
117:             $pagerurl = new Horde_Url(str_replace(array('%g', '%s'), array($this->galleryId, $this->gallerySlug), urldecode($this->view->gallery_view_url)));
118:             $pagerurl->add($date_params)->setRaw(true);
119:         } else {
120:             // Build the pager url. Add the needed variables directly to the
121:             // url instead of passing it as a preserved variable to the pager
122:             // since the logic to build the URL is already in getUrlFor()
123:             $pager_params =  array_merge(
124:                 array('gallery' => $this->galleryId,
125:                       'view' => 'Gallery',
126:                       'slug' => $this->view->gallery->get('slug')),
127:                 $date_params);
128:             $pagerurl = Ansel::getUrlfor('view', $pager_params, true);
129:         }
130: 
131:         if (!empty($this->view->urlCallback)) {
132:             $callback = $this->view->urlCallback;
133:         } else {
134:             $callback = null;
135:         }
136:         $params = array('num' => $this->numTiles,
137:                         'url' => $pagerurl,
138:                         'perpage' => $this->perpage,
139:                         'url_callback' => $callback);
140:         $pager = new Horde_Core_Ui_Pager('page', $vars, $params);
141: 
142:         Horde::startBuffer();
143: 
144:         // Lightbox js variables
145:         $jsvars = array('graphics_dir' => Horde::url(Horde_Themes::img(), true, -1),
146:                         'image_text' => _("Photo"),
147:                         'of_text' => _("of"),
148:                         'start_page' => $page);
149:         $flipped = array_flip($date_params);
150:         if (count($flipped) == 1 && !empty($flipped[0])) {
151:             $jsvars['gallery_url'] = $pagerurl . '?';
152:         } else {
153:             $jsvars['gallery_url'] = $pagerurl . '&';
154:         }
155:         
156:         // Output js/css here if we are calling via the api
157:         if ($this->view->api) {
158:             $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('lightbox.css');
159:             Horde::includeStylesheetFiles(array('nobase' => true), true);
160:             $includes = $GLOBALS['injector']->createInstance('Horde_Script_Files');
161:             $includes->add('accesskeys.js', 'horde', true);
162:             $includes->add('effects.js', 'horde', true);
163:             $includes->add('lightbox.js', 'ansel', true);
164:             $includes->includeFiles();
165:         }
166: 
167:         // Needed in the template files
168:         // @TODO: Horde_View
169:         $tilesperrow = $this->view->tilesperrow ? $this->view->tilesperrow : $prefs->getValue('tilesperrow');
170:         $cellwidth = round(100 / $tilesperrow);
171:         $count = 0;
172: 
173:         include ANSEL_TEMPLATES . '/view/gallerylightbox.inc';
174: 
175:         return Horde::endBuffer();
176:     }
177: }
178: 
API documentation generated by ApiGen