diff -Naur shashin/Shashin.php shashin-2.2.1-brianhsu/Shashin.php --- shashin/Shashin.php 2008-08-24 00:22:08.000000000 -0700 +++ shashin-2.2.1-brianhsu/Shashin.php 2008-09-09 05:30:41.000000000 -0700 @@ -59,7 +59,13 @@ define('SHASHIN_DEFAULT_HIGHSLIDE_VIDEO_WIDTH', 640); define('SHASHIN_DEFAULT_HIGHSLIDE_VIDEO_HEIGHT', 480); define('SHASHIN_DEFAULT_HIGHSLIDE_AUTOPLAY', 'false'); +define('SHASHIN_DEFAULT_SIMAGE_CONTROLLER', 'false'); define('SHASHIN_DEFAULT_HIGHSLIDE_INTERVAL', 5000); +define('SHASHIN_DEFAULT_LINKBACK_TEXT', 'View at PicasaWeb'); +define('SHASHIN_DEFAULT_HIDE_CONTROLLER', 'false'); +define('SHASHIN_DEFAULT_REPEAT_SLIDESHOW', 'true'); +define('SHASHIN_DEFAULT_ORDERBY_KEY', 'false'); + define('SHASHIN_GOOGLE_PLAYER_URL', 'http://video.google.com/googleplayer.swf?videoUrl='); // workaround for constants not allowing arrays @@ -78,6 +84,7 @@ require_once(SHASHIN_DIR . '/ToppaWPFunctions.php'); require_once(SHASHIN_DIR . '/ToppaXMLParser.php'); + /** * The main class - handles all incoming requests for displaying photos, as well * as the admin and options menus. @@ -103,6 +110,7 @@ * @uses initAdminMenu * @uses parseContent * @uses getHeadTags + * @uses getFooterTags */ function bootstrap() { // Add the installation and uninstallation hooks @@ -114,6 +122,8 @@ add_action('admin_head', array(SHASHIN_PLUGIN_NAME, 'getAdminCSS')); add_action('plugins_loaded', array(SHASHIN_PLUGIN_NAME, 'initWidgets')); add_action('wp_head', array(SHASHIN_PLUGIN_NAME, 'getHeadTags')); + add_action('wp_footer', array(SHASHIN_PLUGIN_NAME, 'getFooterTags')); + // the 0 priority flag gets the div in before the autoformatter // can wrap it in a paragraph add_filter('the_content', array(SHASHIN_PLUGIN_NAME, 'parseContent'), 0); @@ -286,11 +296,37 @@ if (!strlen(get_option('shashin_highslide_autoplay'))) { update_option('shashin_highslide_autoplay', SHASHIN_DEFAULT_HIGHSLIDE_AUTOPLAY); } - + // set highslide interval for slideshow image display if (!strlen(get_option('shashin_highslide_interval'))) { update_option('shashin_highslide_interval', SHASHIN_DEFAULT_HIGHSLIDE_INTERVAL); } + + // set controller for simage + if (!strlen(get_option('shashin_simage_controller'))) { + update_option('shashin_simage_controller', SHASHIN_DEFAULT_SIMAGE_CONTROLLER); + } + + // set linkback text + if (!strlen(get_option('shashin_linkback_text'))) { + update_option('shashin_linkback_text', SHASHIN_DEFAULT_LINKBACK_TEXT); + } + + // set hide controller + if (!strlen(get_option('shashin_hide_controller'))) { + update_option('shashin_hide_controller', SHASHIN_DEFAULT_HIDE_CONTROLLER); + } + + // set hide controller + if (!strlen(get_option('shashin_repeat_slideshow'))) { + update_option('shashin_repeat_slideshow', SHASHIN_DEFAULT_REPEAT_SLIDESHOW); + } + + // set hide controller + if (!strlen(get_option('shashin_orderby_key'))) { + update_option('shashin_orderby_key', SHASHIN_DEFAULT_ORDERBY_KEY); + } + } /** @@ -353,12 +389,13 @@ // show selected album for editing if ($_REQUEST['shashinAction'] == 'editAlbumPhotos') { $album = new ShashinAlbum(); - + $photoOrderbyKey = get_option ('shashin_orderby_key'); + $photoOrderby = ($photoOrderbyKey == 'true') ? 'photo_key' : 'photo_id'; if ($album->getAlbum($_REQUEST['albumID']) === false) { $message = "Unable to retrieve album"; } - elseif ($album->getAlbumPhotos() === false) { + elseif ($album->getAlbumPhotos($photoOrderby) === false) { $message = "Unable to retrieve album photos"; } @@ -545,7 +582,10 @@ else { $users = ShashinAlbum::getUsers(); - $allAlbums = ShashinAlbum::getAlbums("ORDER BY TITLE"); + + $albumOrderbyKey = get_option ('shashin_orderby_key'); + $albumOrderby = ($albumOrderbyKey == 'true') ? 'album_key' : 'title'; + $allAlbums = ShashinAlbum::getAlbums("ORDER BY " . $albumOrderby); $album = new ShashinAlbum(); // needed in admin-main, for refData foreach ($users as $user) { @@ -616,6 +656,20 @@ echo $optionsMenuHTML; } + /** + * Append Highslide Javascript when user turned controller for simage + * on. + * + * @static + * @access public + */ + function getFooterTags () + { + $controller = get_option('shashin_simage_controller'); + if (get_option('shashin_simage_controller') == "true") { + echo "\n\n"; + } + } /** * Gets the Shashin CSS file, and the optional Highslide CSS and @@ -644,6 +698,12 @@ $highslideCSS = SHASHIN_DISPLAY_URL . 'highslide.css'; } + $hideController = get_option('shashin_hide_controller') == 'true' ? + 'true' : 'false'; + + $repeatSlideshow = get_option('shashin_repeat_slideshow') == 'true' ? + 'true' : 'false'; + echo ' @@ -654,6 +714,7 @@ hs.transitions = [\'expand\', \'crossfade\']; hs.outlineType = \'rounded-white\'; hs.fadeInOut = true; + //hs.dimmingOpacity = 0.75; // Add the controlbar for slideshows @@ -661,13 +722,13 @@ hs.addSlideshow({ slideshowGroup: groupID, interval: ' . get_option('shashin_highslide_interval') . ', - repeat: true, + repeat:' . $repeatSlideshow . ', useControls: true, fixedControls: true, overlayOptions: { opacity: .75, position: \'top center\', - hideOnMouseOut: false + hideOnMouseOut: ' . $hideController . ' } }); } @@ -698,11 +759,11 @@ * the requested images. * * Supported Shashin tags: - * - [simage=photo_key,max_size,caption_yn,float,clear] - * - [srandom=album_key,max_size,max_cols,how_many,caption_yn,float,clear] + * - [simage=photo_key,max_size,caption_yn,float,clear,linkbackZ_yn, linkbackT_yn] + * - [srandom=album_key,max_size,max_cols,how_many,caption_yn,float,clear,linkbackZ_yn, linbackT_yn] * - [salbum=album_key,location_yn,pubdate_yn,float,clear] - * - [sthumbs=photo_key1|photo_key2|etc,max_size,max_cols,caption_yn,float,clear] - * - [snewest=album_key,max_size,max_cols,how_many,caption_yn,float,clear] + * - [sthumbs=photo_key1|photo_key2|etc,max_size,max_cols,caption_yn,float,clear, linkbackZ_yn, linkbackT_yn] + * - [snewest=album_key,max_size,max_cols,how_many,caption_yn,float,clear,linkbackZ_yn, linkbackT_yn] * - [salbumthumbs=album_key1|album_key2|etc,max_cols,location_yn,pubdate_yn,float,clear] * - [salbumphotos=max_size,max_cols,caption_yn,description_yn,order_by,float,clear] * - [salbumlist=album_key1|album_key2|etc,info_yn] @@ -730,7 +791,7 @@ * @uses ShashinAlbum::getAlbumListMarkup() */ function parseContent($content) { - $onePhoto = "/\[simage=(\d+),(\d{2,4}),?(\w?),?(\w{0,5}),?(\w{0,5})\]/"; + $onePhoto = "/\[simage=(\d+),(\d{2,4}),?(\w?),?(\w{0,5}),?(\w{0,5}),?(\w?),?(\w?)\]/"; if (preg_match_all($onePhoto, $content, $matches, PREG_SET_ORDER) > 0) { foreach ($matches as $match) { @@ -740,7 +801,7 @@ } } - $randomPhoto = "/\[srandom=(\w+),(\d{2,4}),(\d+),(\d+),?(\w?),?(\w{0,5}),?(\w{0,5})\]/"; + $randomPhoto = "/\[srandom=(\w+),(\d{2,4}),(\d+),(\d+),?(\w?),?(\w{0,5}),?(\w{0,5}),?(\w?),?(\w?)\]/"; if (preg_match_all($randomPhoto, $content, $matches, PREG_SET_ORDER) > 0) { foreach ($matches as $match) { @@ -759,7 +820,7 @@ } } - $thumbPhotos = "/\[sthumbs=([\d\|]+),(\d{2,4}),(\d+),?(\w?),?(\w{0,5}),?(\w{0,5})\]/"; + $thumbPhotos = "/\[sthumbs=([\d\|]+),(\d{2,4}),(\d+),?(\w?),?(\w{0,5}),?(\w{0,5}),?(\w?),?(\w?)\]/"; if (preg_match_all($thumbPhotos, $content, $matches, PREG_SET_ORDER) > 0) { foreach ($matches as $match) { @@ -768,7 +829,7 @@ } } - $newestPhotos = "/\[snewest=(\w+),(\d{2,4}),(\d+),(\d+),?(\w?),?(\w{0,5}),?(\w{0,5})\]/"; + $newestPhotos = "/\[snewest=(\w+),(\d{2,4}),(\d+),(\d+),?(\w?),?(\w{0,5}),?(\w{0,5}),?(\w?),?(\w?)\]/"; if (preg_match_all($newestPhotos, $content, $matches, PREG_SET_ORDER) > 0) { foreach ($matches as $match) { @@ -817,13 +878,14 @@ * @param string $captionYN (optional): y or n to show the image description as a caption (defaults to n) * @param string $float (optional): a css float value (left, right, or none) (no default) * @param string $clear (optional): a css clear value (left, right, or both) (no default) + * @param string $linkbackYN (optional): y or n to show link to PicasaWeb at caption (defaults to n) * @uses ShashinPhoto::ShashinPhoto() * @uses ShashinPhoto::getPhotoMarkup() * @return string xhtml to display photo */ - function getSingle($photoKey, $maxSize, $captionYN = null, $float = null, $clear = null) { + function getSingle($photoKey, $maxSize, $captionYN = null, $float = null, $clear = null, $linkbackYN = null) { $photo = new ShashinPhoto(); - return $photo->getPhotoMarkup(array(null,$photoKey,$maxSize,$captionYN,$float,$clear)); + return $photo->getPhotoMarkup(array(null,$photoKey,$maxSize,$captionYN,$float,$clear,$linkbackYN)); } /** @@ -841,8 +903,8 @@ * @uses ShashinPhoto::getRandomMarkup() * @return string xhtml to display table of random photos */ - function getRandom($albumKey, $maxSize, $maxCols, $howMany, $captionYN = null, $float = null, $clear = null) { - return ShashinPhoto::getRandomMarkup(array(null,$albumKey,$maxSize,$maxCols,$howMany,$captionYN,$float,$clear)); + function getRandom($albumKey, $maxSize, $maxCols, $howMany, $captionYN = null, $float = null, $clear = null, $linkBack = null) { + return ShashinPhoto::getRandomMarkup(array(null,$albumKey,$maxSize,$maxCols,$howMany,$captionYN,$float,$clear,$linkBack)); } /** @@ -965,8 +1027,14 @@ $photoKey = empty($options['shashin_single_photo_key']) ? 1 : $options['shashin_single_photo_key']; $maxSize = empty($options['shashin_single_max_size']) ? 160 : $options['shashin_single_max_size']; $captionYN = empty($options['shashin_single_caption_yn']) ? 'n' : $options['shashin_single_caption_yn']; + $linkbackZYN = empty($options['shashin_single_linkbackZ_yn']) ? 'n' : $options['shashin_single_linkbackZ_yn']; + $linkbackTYN = empty($options['shashin_single_linkbackT_yn']) ? 'n' : $options['shashin_single_linkbackT_yn']; + $center = empty($options['shashin_single_center_yn']) ? 'n' : $options['shashin_single_center_yn']; + $photo = new ShashinPhoto; - $widget = $photo->getPhotoMarkup(array(null,$photoKey,$maxSize, $captionYN)); + $widget = $photo->getPhotoMarkup(array(null,$photoKey,$maxSize,$captionYN,null,null,$linkbackZYN,$linkbackTYN)); + $widget = ($center == 'y') ? '
| $markup | \n"; $cellCount++; @@ -651,9 +653,11 @@ . ($width+20) . ", minHeight: " . ($height+20) . ", objectWidth: $width, objectHeight: $height, allowSizeReduction: false, preserveContent: false"; - if ($group) { + if ($group > 0) { $markup .= ", autoplay: $autoplay, slideshowGroup: 'group" . $_SESSION['hs_group_counter'] . "'"; - } + } else if ($group == 0) { + $markup .= ", autoplay: $autoplay, slideshowGroup: 'groupNone'"; + } $markup .= ' } )" class="highslide">'; $_SESSION['hs_id_counter']++; @@ -666,9 +670,11 @@ . '" class="highslide" id="thumb' . $_SESSION['hs_id_counter'] . '" onclick="return hs.expand(this'; - if ($group) { + if ($group > 0) { $markup .= ", { autoplay: $autoplay, slideshowGroup: 'group" . $_SESSION['hs_group_counter'] . "' }"; - } + } else if ($group == 0) { + $markup .= ", { autoplay: $autoplay, slideshowGroup: 'groupNone' }"; + } $markup .= ')">'; $_SESSION['hs_id_counter']++; @@ -699,14 +705,25 @@ if ($display != 'none') { $markup .= ''; } - + + $linkBackC = (strtolower(trim($match[6])) == 'y' && $display == 'highslide') ? TRUE : FALSE; + $linkBackT = (strtolower(trim($match[7])) == 'y' && $display == 'highslide') ? TRUE : FALSE; + + $linkText = get_option('shashin_linkback_text'); + $linkText = (strlen($linkText) > 0) ? $linkText : + SHASHIN_DEFAULT_LINKBACK_TEXT; + $link = $this->data['link_url']; + $link = '(' . $linkText . ')'; + // whether to display the caption under the photo - if (strlen($optCaption)) { - $markup .= '' . $optCaption . ''; + if (strlen($optCaption) || $linkBackT) { + $captionText = ($linkBackT == TRUE) ? $optCaption . $link : $optCaption; + $markup .= '' . $captionText . ''; } - if (strlen($caption) && $display == 'highslide') { - $markup .= ''; + if ((strlen($caption) || $linkBackC) && $display == 'highslide') { + $captionText = ($linkBackC == TRUE) ? $caption . $link : $caption; + $markup .= ''; } $markup .= ""; diff -Naur shashin/display/admin-edit.php shashin-2.2.1-brianhsu/display/admin-edit.php --- shashin/display/admin-edit.php 2008-08-24 00:22:08.000000000 -0700 +++ shashin-2.2.1-brianhsu/display/admin-edit.php 2008-09-09 05:30:41.000000000 -0700 @@ -33,18 +33,21 @@Double the ".shashin_thumb img" padding value in shashin.css | + +|
| Text link back to PicasaWeb: | ++ | If you enable back link to PicasaWeb, what link text would you like? |
| Your page for album photos: | @@ -126,6 +131,54 @@ the height and width of the embedded video (unlike images, the dimensions cannot be calculated on the fly). A 4:3 (width:height) ratio is common for videos.||
| Highslide Controller Settings These settings apply only if you select "Use Highslide" above, for the full-size image display. |
+ ||
| Hide controller: | + />
+ Yes + /> + No |
+ Would you like hide controller when mouse is out if image? | +
| Repeat slideshow? | + />
+ Yes + /> + No |
+ Would you like repeat when slideshow finished? | +
| Controller for simage: | + />
+ Yes + /> + No |
+ Would you like show controller for simage?. | +
| Album and Photos oreder by KEY | + />
+ Yes + /> + No |
+ Would you like oreder Albums and Photos by there key when they showed at admin page? | +