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_EmbeddedRenderer_GalleryLink
  4:  *
  5:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
  6:  *
  7:  * See the enclosed file COPYING for license information (GPL). If you
  8:  * did not receive this file, see http://www.horde.org/licenses/gpl.
  9:  *
 10:  * Example usage:
 11:  * <pre>
 12:  *   <script type="text/javascript" src="http://example.com/horde/services/
 13:  *   imple.php?imple=Embed/impleApp=ansel/gallery_view=GalleryLink/
 14:  *   gallery_slug=slug1:slug2:slug3/container=divId/
 15:  *   thumbsize=prettythumb/style=ansel_polaroid"></script>
 16:  *   <div id="divId"></div>
 17:  *   <style type="text/css">#divId .anselGalleryWidget img {border:none;}</style>
 18:  *</pre>
 19:  *
 20:  * @author  Michael J. Rubinsky <mrubinsk@horde.org>
 21:  * @package Ansel
 22:  */
 23: class Ansel_View_EmbeddedRenderer_GalleryLink extends Ansel_View_Base
 24: {
 25:     /**
 26:      * Build the javascript that will render the view.
 27:      *
 28:      * @return string  A string containing valid javascript.
 29:      */
 30:     public function html()
 31:     {
 32:         // Required
 33:         $node = $this->_params['container'];
 34:         if (empty($node)) {
 35:             return '';
 36:         }
 37: 
 38:         // Need at least one of these
 39:         $galleries = !empty($this->_params['gallery_slug']) ? explode(':', $this->_params['gallery_slug']) : '';
 40:         $haveSlugs = true;
 41:         if (empty($galleries)) {
 42:             $galleries = !empty($this->_params['gallery_id']) ? explode(':', $this->_params['gallery_id']) : null;
 43:             $haveSlugs = false;
 44:         }
 45: 
 46:         // Determine the style/thumnailsize etc...
 47:         $thumbsize = empty($this->_params['thumbsize']) ? 'thumb' : $this->_params['thumbsize'];
 48:         $images = array();
 49:         foreach ($galleries as $id) {
 50:             try {
 51:                 if ($haveSlugs) {
 52:                     $gallery = $this->_getGallery(null, $id);
 53:                 } else {
 54:                     $gallery = $this->_getGallery($id);
 55:                 }
 56:             } catch (Horde_Exception $e) {
 57:                 Horde::logMessage($e, 'ERR');
 58:                 exit;
 59:             }
 60:             if (!$gallery->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::READ)) {
 61:                 return '';
 62:             }
 63: 
 64:             // Since we are possibly displaying multiple galleries, standardize
 65:             // on a single gallery style. If none is requested, default to
 66:             // ansel_default.
 67:             $gallery_style = empty($this->_params['style']) ? 'ansel_default' : $this->_params['style'];
 68:             $images[] = $gallery->getKeyImage(Ansel::getStyleDefinition($gallery_style));
 69: 
 70:         }
 71:         $json = $GLOBALS['injector']->getInstance('Ansel_Storage')->getImageJson($images, null, true, $thumbsize, true);
 72: 
 73:         $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('jsembed.css');
 74:         Horde::startBuffer();
 75:         Horde::includeStylesheetFiles(array(
 76:             'nobase' => true,
 77:             'nohorde' => true), true);
 78:         $css = Horde::endBuffer();
 79: 
 80:         // Some paths
 81:         $js_path = $GLOBALS['registry']->get('jsuri', 'horde');
 82:         $pturl = Horde::url($js_path . '/prototype.js', true);
 83:         $ansel_js_path = $GLOBALS['registry']->get('jsuri', 'ansel');
 84:         $jsurl = Horde::url($ansel_js_path . '/embed.js', true);
 85: 
 86:         // Start building the javascript - we use the same parameters as with
 87:         //the mini gallery view so we can use the same javascript to display it
 88:         $html = <<<EOT
 89:             //<![CDATA[
 90:             // Old fashioned way to play nice with Safari 2 (Adding script inline with the
 91:             // DOM won't work).  Need two seperate files output here since the incldued
 92:             // files don't seem to be parsed until after the entire page is loaded, so we
 93:             // can't include prototype on the same page it's needed.
 94: 
 95:             if (typeof anseljson == 'undefined') {
 96:                 if (typeof Prototype == 'undefined') {
 97:                     document.write('<script type="text/javascript" src="$pturl"></script>');
 98:                 }
 99:                 anselnodes = new Array();
100:                 anseljson = new Object();
101:                 document.write('$css');
102:                 document.write('<script type="text/javascript" src="$jsurl"></script>');
103:             }
104:             anselnodes[anselnodes.length] = '$node';
105:             anseljson['$node'] = new Object();
106:             anseljson['$node']['data'] = $json;
107:             anseljson['$node']['perpage'] = 0;
108:             anseljson['$node']['page'] = 0;
109:             anseljson['$node']['hideLinks'] = false;
110:             anseljson['$node']['linkToGallery'] = true;
111:             //]]>
112: EOT;
113: 
114:         return $html;
115:     }
116: 
117: }
118: 
API documentation generated by ApiGen