summaryrefslogtreecommitdiffstats
path: root/abs/core-testing
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2008-10-24 04:36:12 (GMT)
committerJames Meyer <james.meyer@operamail.com>2008-10-24 04:36:12 (GMT)
commit0cf41888ae911af8f323240637bae6306ac021b5 (patch)
tree0d9866a1dcdd908bac356b0284a984ddd4e0617d /abs/core-testing
parentef6e804905b24dcd322c1a4dc698b51fa5ac87e1 (diff)
downloadlinhes_pkgbuild-0cf41888ae911af8f323240637bae6306ac021b5.zip
linhes_pkgbuild-0cf41888ae911af8f323240637bae6306ac021b5.tar.gz
linhes_pkgbuild-0cf41888ae911af8f323240637bae6306ac021b5.tar.bz2
install mythweb to the correct location.
Also apply gallery patches from #2923. These don't apply cleanly, but the rejects from patch 1 seem to be covered by patch 2
Diffstat (limited to 'abs/core-testing')
-rw-r--r--abs/core-testing/mythtv/stable/mythweb/PKGBUILD31
-rw-r--r--abs/core-testing/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff102
-rw-r--r--abs/core-testing/mythtv/stable/mythweb/patch/icons.tar.gzbin0 -> 14759 bytes
-rw-r--r--abs/core-testing/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff1657
4 files changed, 1778 insertions, 12 deletions
diff --git a/abs/core-testing/mythtv/stable/mythweb/PKGBUILD b/abs/core-testing/mythtv/stable/mythweb/PKGBUILD
index e01323c..c4397c1 100644
--- a/abs/core-testing/mythtv/stable/mythweb/PKGBUILD
+++ b/abs/core-testing/mythtv/stable/mythweb/PKGBUILD
@@ -1,27 +1,34 @@
-# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
-# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
-# Contributor: Philipp Giebel <arch@ambience-design.net>
-
pkgname=mythweb
pkgver=0.21
-pkgrel=1
+pkgrel=6
pkgdesc="Web interface for MythTV's backend"
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
-depends=("mythtv>=${pkgver}" 'apache' 'php')
+depends=("mythtv>=${pkgver}" 'lighttpd' 'php')
install=mythweb.install
source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2")
md5sums=('af20a78ac66719feddf9a39f1a799ded')
groups=('mythtv-extras')
+DOCROOT=srv/http/mythweb
build() {
- mkdir -p $startdir/pkg/srv/www/mythweb/{image_cache,php_sessions}
- cp -r $startdir/src/mythplugins-$pkgver/$pkgname/* $startdir/pkg/srv/www/mythweb
- cp $startdir/src/mythplugins-$pkgver/$pkgname/data/.htaccess $startdir/pkg/srv/www/mythweb
- rm $startdir/pkg/srv/www/mythweb/README
- chown -R nobody:nobody $startdir/pkg/srv/www/mythweb
- chmod g+rw $startdir/pkg/srv/www/mythweb/{image_cache,php_sessions,data}
+ mkdir -p $startdir/pkg/$DOCROOT/{image_cache,php_sessions}
+#apply gallery patches here
+ cd $startdir/src/mythplugins-$pkgver/$pkgname/
+ patch -p0 < $startdir/patch/mythweb_gallery_updated1.diff
+ patch -p2 < $startdir/patch/2923-mythweb-gallery-English_GB_lang.diff
+ tar -zxvf $startdir/patch/icons.tar.gz
+###
+
+ cp -r $startdir/src/mythplugins-$pkgver/$pkgname/* $startdir/pkg/$DOCROOT
+# cp $startdir/src/mythplugins-$pkgver/$pkgname/data/.htaccess $startdir/pkg/$DOCROOT
+ rm $startdir/pkg/srv/$DOCROOT/README
+ chown -R http:users $startdir/pkg/$DOCROOT
+ chmod g+rw $startdir/pkg/$DOCROOT/{image_cache,php_sessions,data}
+
+
+
}
diff --git a/abs/core-testing/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff b/abs/core-testing/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff
new file mode 100644
index 0000000..103fb2f
--- /dev/null
+++ b/abs/core-testing/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff
@@ -0,0 +1,102 @@
+Index: mythplugins/mythweb/modules/_shared/lang/English_GB.lang
+===================================================================
+--- mythplugins/mythweb/modules/_shared/lang/English_GB.lang (revision 16505)
++++ mythplugins/mythweb/modules/_shared/lang/English_GB.lang (working copy)
+@@ -154,6 +154,7 @@
+ "Current Conditions"
+ "Current Recording"
+ "Current recordings"
++"Current path"
+ "Currently Browsing: $1"
+ "Currently Recording: Edit"
+ "Custom"
+@@ -169,6 +170,7 @@
+ Deaf Signed
+ "Default"
+ "Default MythVideo View"
++"Default view size"
+ "Delete"
+ "delete"
+ "Delete $1"
+@@ -247,6 +249,8 @@
+ "freqid"
+ "Friday"
+ "Frontends"
++"Gallery"
++"Gallery image path"
+ "generic_date"
+ %a %b %e, %Y
+ "generic_time"
+@@ -270,12 +274,14 @@
+ "Hide"
+ "High"
+ "Home"
++"Horizontal screen resolution"
+ "Host"
+ "Hosted by"
+ "Hour"
+ "Hour Format"
+ "hue"
+ "Humidity"
++"Images per page"
+ "IMDB"
+ "IMDBTYPE"
+ "Inactive"
+@@ -334,6 +340,8 @@
+ "length"
+ "Length"
+ "Length (min)"
++"List of allowed image formats"
++"List of available view sizes"
+ "Listing &quot;Jump to&quot;"
+ "Listing Time Key"
+ "Listings"
+@@ -383,6 +391,7 @@
+ "mythvideo.sort_ignores_case"
+ "MythWeb"
+ "MythWeb Defaults"
++"MythWeb Gallery"
+ "MythWeb Global Defaults"
+ "MythWeb Session"
+ "MythWeb Skin"
+@@ -413,6 +422,7 @@
+ "Number of shows"
+ "Number of Songs"
+ "Number of timeslots"
++"of"
+ "Only display favourite channels"
+ "Only match commercial-free channels"
+ "Only match HD programs"
+@@ -429,6 +439,7 @@
+ "Past Month"
+ "Past Week"
+ "Past Year"
++"Path where the thumbnails are"
+ "Paused"
+ "Pending"
+ "People"
+@@ -688,6 +699,7 @@
+ "Subtitles Available"
+ "Sunday"
+ "Surround Sound"
++"Switch view mode"
+ "Tab"
+ "The requested recording schedule has been deleted."
+ "There are no items in this Playlist!"
+@@ -705,6 +717,7 @@
+ "Title Match"
+ "Title search"
+ "Title Search"
++"to"
+ "Today"
+ "Tomorrow"
+ "Too Many"
+@@ -791,6 +804,8 @@
+ "Wednesday"
+ "welcome: backend_log"
+ Show the server logs.
++"welcome: gallery"
++ Browse your picture collection.
+ "welcome: music"
+ Browse your music collection.
+ "welcome: remote"
diff --git a/abs/core-testing/mythtv/stable/mythweb/patch/icons.tar.gz b/abs/core-testing/mythtv/stable/mythweb/patch/icons.tar.gz
new file mode 100644
index 0000000..691d28e
--- /dev/null
+++ b/abs/core-testing/mythtv/stable/mythweb/patch/icons.tar.gz
Binary files differ
diff --git a/abs/core-testing/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff b/abs/core-testing/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff
new file mode 100644
index 0000000..f683b17
--- /dev/null
+++ b/abs/core-testing/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff
@@ -0,0 +1,1657 @@
+diff -Naur ../mythweb-orig/modules/gallery/handler.php ./modules/gallery/handler.php
+--- ../mythweb-orig/modules/gallery/handler.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/handler.php 2007-08-20 22:33:02.000000000 -0400
+@@ -0,0 +1,35 @@
++<?php
++/**
++ * Handler for the Gallery module.
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/handler.php $
++ * @date $Date: 2006-12-19 09:17:33 +0100 (Di, 19 Dez 2006) $
++ * @version $Revision: 12295 $
++ * @author $Author: rsiebert $
++ * @license GPL
++ *
++ * @package MythWeb
++ * @subpackage MythGallery
++ *
++/**/
++
++// Load settings functions
++require_once 'includes/objects/Settings.php';
++
++// Load Gallery class
++require_once 'includes/objects/Gallery.php';
++
++// Load configuration
++loadGalleryConfig();
++
++// Create the gallery
++global $gallery;
++
++$gallery = new Gallery();
++
++// Print the gallery page template
++require_once tmpl_dir.'gallery.php';
++
++// Exit
++exit;
++
+diff -Naur ../mythweb-orig/modules/gallery/includes/objects/Gallery.php ./modules/gallery/includes/objects/Gallery.php
+--- ../mythweb-orig/modules/gallery/includes/objects/Gallery.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/includes/objects/Gallery.php 2007-08-20 22:27:02.000000000 -0400
+@@ -0,0 +1,608 @@
++<?php
++/**
++ * Gallery Functions for the Gallery module
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/tmpl/default/gallery.php $
++ * @date $Date: 2006-12-19 09:17:33 +0100 (Di, 19 Dez 2006) $
++ * @version $Revision: 12295 $
++ * @author $Author: xris $
++ * @license GPL
++ *
++ * @package MythWeb
++ *
++/**/
++
++class Gallery {
++
++ var $config;
++
++ function Gallery() {
++ // load default configuration
++ $this->config['image_path'] = $_SESSION['gallery']['image_path'];
++ $this->config['cache_path'] = $_SESSION['gallery']['cache_path'];
++ $this->config['default_viewsize'] = $_SESSION['gallery']['default_viewsize'];
++ $this->config['screen_width'] = $_SESSION['gallery']['screen_width'];
++ $this->config['viewsizes'] = $_SESSION['gallery']['viewsizes'];
++ $this->config['valid_image_files'] = $_SESSION['gallery']['valid_image_files'];
++
++ }
++
++ // =======================================================
++ function start() {
++
++ // the current selected directory where the cached images are stored
++ $current_path = $this->getCurrentImagePath();
++ // the path to the real images
++ $image_path = $this->config['image_path'];
++ // the filename of a selected image
++ $image_name = $this->getImageName();
++ // the current viewsize mode
++ $image_viewsize = $this->getImageViewSize();
++ // get the image index for the viewsize medium
++ $image_index = $this->getImageIndex();
++ // get the contents of the folders
++ $folderList = $this->getFolderList( $current_path );
++ // check what kind of images should be displayed
++ if ($image_viewsize == 'fullsize') {
++ // create the images if there are not yet in the directory
++ $this->makeImages( $current_path, $folderList, $image_viewsize, $image_index );
++ // display the big image
++ $this->showFullsizeImage( $current_path, $folderList, $image_index );
++ // there is nothing else to do
++ exit;
++ }
++ // show the horizontal navigation bar
++ $this->showGalleryHeader( $current_path, $image_viewsize, $image_index );
++ // check if the thumbnail directory is there, if not create it
++ $this->makeDirectory( $current_path );
++ // create the images if there are not yet in the directory
++ $this->makeImages( $current_path, $folderList, $image_viewsize, $image_index );
++ echo '<table width="100%" cellspacing="0" cellpadding="0">'."\n".
++ '<tr>'."\n".
++ '<td class="folder_navigation">'."\n";
++ $this->showFolderTree( $current_path, $folderList );
++ echo '</td>'."\n".
++ '<td class="image_listing">'."\n";
++ if ($this->onlyDirectoriesAvailable( $current_path, $folderList, $image_viewsize, $image_index ) == false ) {
++ echo '<table class="imagelist_and_navigation" cellspacing="0" cellpadding="0">'."\n".
++ '<tr>'."\n".
++ '<td>'."\n";
++ $this->showNavigation( $current_path, $folderList, $image_viewsize, $image_index );
++ echo '</td>'."\n".
++ '</tr>'."\n".
++ '<tr>'."\n".
++ '<td>'."\n";
++ $this->showImages( $current_path, $folderList, $image_viewsize, $image_index );
++ echo '</td>'."\n".
++ '</tr>'."\n".
++ '</tr>'."\n".
++ '</table>'."\n";
++ } else {
++ echo '&nbsp;';
++ }
++ echo '</td>'."\n".
++ '</tr>'."\n".
++ '</table>'."\n";
++ }
++
++ // =======================================================
++ function getViewSizesList() {
++ $viewsizesList = explode(';',preg_replace('/ /','',$this->config['viewsizes']));
++ return $viewsizesList;
++ }
++
++
++ // =======================================================
++ function getCurrentImagePath() {
++ switch ($_SERVER['REQUEST_METHOD']) {
++ case 'GET':
++ $current_path = stripslashes($_GET['path']);
++ break;
++ case 'POST':
++ $current_path = stripslashes($_POST['path']);
++ break;
++ }
++ if (!is_dir($current_path) ) {
++ $current_path = $this->config['image_path'];
++ }
++ return $current_path;
++ }
++
++ // =======================================================
++ function getImageViewSize() {
++ switch ($_SERVER['REQUEST_METHOD']) {
++ case 'GET':
++ $viewsize = stripslashes($_GET[viewsize]);
++ break;
++ case 'POST':
++ $viewsize = stripslashes($_POST[viewsize]);
++ break;
++ }
++ // check if the given viewsize is one of the viewsizes
++ // specified in the config. fullsize is also needed
++ if (isset($viewsize) &&
++ (($viewsize == 'fullsize') ||
++ in_array($viewsize, $this->getViewSizesList()))) {
++ return $viewsize;
++ } else {
++ return $this->config['default_viewsize'];
++ }
++ }
++
++ // =======================================================
++ function getImageName() {
++ switch ($_SERVER['REQUEST_METHOD']) {
++ case 'GET':
++ $image_name = $_GET['file'];
++ break;
++ case 'POST':
++ $image_name = $_POST['file'];
++ break;
++ }
++ return $image_name;
++ }
++
++ // =======================================================
++ function getImageIndex() {
++ if (isset($_GET['index']))
++ return $_GET['index'];
++ return 1;
++ }
++
++
++ // =======================================================
++ // displays the path of the choosen directories horizontally
++ // so one can navigate back
++ function showGalleryHeader( $current_path, $image_viewsize, $image_index ) {
++ echo '<table class="current_path_and_viewsize" cellspacing="0" cellpadding="0">'."\n".
++ '<tr>'."\n".
++ '<td class="current_path">'.
++ t('Current path').': ';
++ $folders = explode('/', $current_path);
++ for ($i=1; $i < count($folders); $i++) {
++ echo '<a class="header" href="'.root.'gallery/gallery.php?'.path.'=';
++ // show thefolders in the navigation bar
++ for ($j=1; $j <= $i; $j++) {
++ echo '/'.$folders[$j];
++ }
++ echo '&'.viewsize.'='.$this->getImageViewSize().'">'.
++ $folders[$i].'</a>'."\n";
++ // don't show the separators when there are no more subfolders
++ if ($i < (count($folders)-1)) {
++ echo ' / ';
++ }
++ }
++ // display the menu where one can shoose between small and medium images
++ echo '</td>'."\n".
++ '<td class="change_viewsize_text">'.
++ t('Switch view mode').':&nbsp;&nbsp;'.
++ '</td>'."\n".
++ '<form name="change_viewsize" method="post">'."\n".
++ '<td class="change_viewsize_selection">'."\n".
++ '<select class="change_viewsize" name="'.
++ viewsize.'" onChange="submit()" size="1">'."\n";
++ $viewsizesList = $this->getViewSizesList();
++ for ($i=0; $i < count($viewsizesList); $i++) {
++ echo '<option value="'.$viewsizesList[$i].'" ';
++ if ($this->getImageViewSize() == $viewsizesList[$i]) {
++ echo 'selected';
++ }
++ $str = strtr($viewsizesList[$i], ',','x');
++ echo '>'.$str.' '.t('Images per page').'</option>'."\n";
++ }
++ echo '</select>'."\n".
++ '<input type="hidden" name="'.index.'" value="'.$image_index.'">'.
++ '<input type="hidden" name="'.path.'" value="'.$current_path.'">';
++ echo '</td></form>'."\n".
++ '</tr>'."\n".
++ '</table>'."\n";
++ }
++
++ // =======================================================
++ function showFolderTree( $current_path, $folderList ) {
++
++ // dont go into the directory if there are not subdirs
++ if ($this->getFolderCount( $current_path, $folderList[$i]) == 0) {
++ $current_path = substr($current_path, 0, strrpos($current_path, '/'));
++ $folderList = $this->getFolderList( $current_path );
++ }
++ // displays the directory tree and the pictures
++ echo '<table class="folder_navigation" width="100%" cellspacing="0" cellpadding="0">'."\n".
++ '<tr>'."\n".
++ '<td>'."\n";
++ // display the directories
++ for ($i = 0; $i < count( $folderList ); $i++) {
++ // only display folders that are not hidden or special
++ if ((is_dir( $current_path.'/'.$folderList[$i] )) &&
++ ($folderList[$i] != '..')){
++ echo '<div class="folder_navigation" '.
++ 'onmouseover="this.className=\'folder_navigation_active\'" '.
++ 'onmouseout="this.className=\'folder_navigation\'">';
++ $link = $this->getFolderLink( $current_path, $folderList[$i] );
++ $folderCount = $this->getFolderCount( $current_path, $folderList[$i] );
++ // display the folder as a link and the number of subfolder next to it
++ $this->displayFolderLink( $link, $folderList[$i], $folderCount );
++ echo '</div>';
++ }
++ }
++ echo '</td>'."\n".
++ '</tr>'."\n".
++ '</table>'."\n";
++ }
++
++ // =======================================================
++ function getFolderList( $current_path ) {
++ if ($current_path != $this->config['cache_path'] ) {
++ $folderList[] = '..';
++ }
++ // get the image extensions
++ $extenstionList = explode(',',$this->config['valid_image_files']);
++ // get the directories and files
++ if ($dh = opendir($current_path)) {
++ while (($file = readdir($dh)) !== false) {
++ // only add the file/dir if its a directory or a file
++ // with the specified extension
++
++ if ((substr($file,0,1) != '.') &&
++ (is_dir($current_path.'/'.$file)) ||
++ (in_array(strtolower(substr($file,-3)), $extenstionList)))
++ {
++ $folderList[] = $file;
++ }
++ }
++ }
++ // delete the first entry when we are at the image_path
++ // to prevent from going a directory up
++ if ($current_path == $this->config['image_path'])
++ array_shift($folderList);
++ // sort the array alphabetically
++ sort($folderList);
++ return $folderList;
++ }
++
++ // =======================================================
++ function getFolderLink( $current_path, $folder ) {
++ $link = '<a class="folderlist" href="'.root.'gallery/gallery.php?'.path.'=';
++ // display the .. directory only if there is another
++ // directory above this one.
++ if (($folder == '..') && ($current_path != $this->config['cache_path'])) {
++ $folderList = explode( '/', $current_path.'/');
++ for( $i=1; $i < count($folderList)-2; $i++ ) {
++ $link .= '/'.$folderList[$i];
++ }
++ } else {
++ $link .= $current_path.'/'.$folder;
++ }
++ $link .= '&'.viewsize.'='.$this->getImageViewSize().'">';
++ return $link;
++ }
++
++ // =======================================================
++ function displayFolderLink( $link, $folder, $folderCount ) {
++ echo '<table class="folderlink_inactive" cellspacing="0" cellpadding="0">'.
++ '<tr>'.
++ '<td align="left" width="30px">'.
++ '<img class="navigation" src="'.root.skin_dir.'/img/gallery/dir.png">'.
++ '</td>'.
++ '<td align="left" width="auto">'.
++ $link.$folder.'</a>';
++ $this->displayFolderCount( $folderCount );
++ echo '</td>'.
++ '</tr>'.
++ '</table>'."\n";
++ }
++
++ // =======================================================
++ function getFolderCount($current_path, $folder) {
++ // dont get the folder count if its the .. directory
++ if ($folder != '..') {
++ return count(glob($current_path.'/'.$folder.'/*',GLOB_ONLYDIR));
++ }
++ }
++
++ // =======================================================
++ // shows how many sub directories the specified folder has
++ function displayFolderCount( $folderCount ) {
++ if ($folderCount == 1) {
++ echo ' ('.$folderCount.')';// '.t('subfolder');
++ }
++ if ($folderCount > 1) {
++ echo ' ('.$folderCount.')';// '.t('subfolders');
++ }
++ }
++
++
++ // =======================================================
++ // creates the directory for the thumbnails. the directory
++ // structure is identical to the one of original pictures
++ function makeDirectory( $current_path ) {
++ if (!file_exists( $this->config['cache_path'].$current_path )) {
++ // add the document root to the thumbnail directory
++ // because mkdir works with absolute paths
++ $cache_path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'];
++ // split the directory string into separate directories
++ $folderList = explode( '/', $current_path );
++ // go through all folder and create each one
++ for($i=1; $i < count($folderList); $i++) {
++ $cache_path .= '/'.$folderList[$i];
++ // check if the directory is already there
++ if (!file_exists($cache_path)) {
++ mkdir ($cache_path);
++ }
++ }
++ }
++ }
++
++ // =======================================================
++ // check if the images are there, if not create them
++ function makeImages( $current_path, $folderList, $image_viewsize, $image_index ) {
++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path;
++ // use the image_viewsize numbers as a prefix if fullsize is not requested
++ if ( $image_viewsize != fullsize ) {
++ // only so many images will be created that will be displayed on the screen
++ $max_cols = substr($image_viewsize, 0, 1);
++ $max_rows = substr($image_viewsize, 2, 1);
++ $max_number = ($max_cols * $max_rows);
++ // the prefix that will be added to a file so that
++ // different sizes have different names
++ $file_prefix = strtr($image_viewsize, ',','_').'_';
++ } else {
++ $max_number = 1;
++ // the prefix that will be added to a file so that
++ // different sizes have different names
++ $file_prefix = $image_viewsize.'_';
++ }
++ // get the amount of subfolders. increase the count in the loop by these
++ // subfolders
++ $folder_count = count(glob($current_path.'/'.$folder.'/*',GLOB_ONLYDIR));
++ for ($i = $image_index; $i < ($max_number + $image_index + $folder_count); $i++) {
++ // show the picture only if its not hidden and not a directory
++ if (!is_dir( $current_path.'/'.$folderList[$i] )) {
++ // check if there is already a thumbnail available, if not create it
++ if (!file_exists( $path.'/'.$file_prefix.$folderList[$i] )) {
++ // get the extension of the file
++ $fileParts = explode('.', $folderList[$i]);
++ $file_extension = strtolower($fileParts[count($fileParts)-1]);
++ // get image pointer
++ $image_p = null;
++ if ($file_extension == 'jpg')
++ $image_p = @imagecreatefromjpeg( $current_path.'/'.$folderList[$i] );
++ if ($file_extension == 'png')
++ $image_p = @imagecreatefrompng( $current_path.'/'.$folderList[$i] );
++ if ($file_extension == 'gif')
++ $image_p = @imagecreatefromgif( $current_path.'/'.$folderList[$i] );
++ // proceed if we have an image pointer
++ if ($image_p) {
++ // get the image size for the cached images
++ $size = getimagesize( $current_path.'/'.$folderList[$i]);
++ $width = $size[0];
++ $height = $size[1];
++ // get the width for the choosen viewsize
++ // calculate it from the columns and rows if fullsize is not
++ // requested, otherwise use the original image size
++ if ( $image_viewsize != fullsize ) {
++ $new_width = (( $this->config['screen_width'] / $max_cols ) - 50 );
++ // calculate new image dimensions
++ $new_height = ($height/$width) * $new_width;
++ if ( $height > $width ) {
++ $new_width = ($width/$height) * $new_height;
++ }
++ } else {
++ $new_width = $width;
++ $new_height = $height;
++ }
++ // get a new image pointer
++ $new_image_p = imagecreatetruecolor($new_width, $new_height);
++ // resample the old image to the new one
++ imagecopyresampled($new_image_p, $image_p, 0, 0, 0, 0,
++ $new_width, $new_height, $width, $height );
++ // save the image
++ if ($file_extension == 'jpg')
++ imagejpeg($new_image_p, $path.'/'.$file_prefix.$folderList[$i] );
++ if ($file_extension == 'png')
++ imagepng($new_image_p, $path.'/'.$file_prefix.$folderList[$i] );
++ if ($file_extension == 'gif')
++ imagegif($new_image_p, $path.'/'.$file_prefix.$folderList[$i] );
++ // destroy the old pointers
++ imagedestroy( $image_p );
++ imagedestroy( $new_image_p );
++ }
++ }
++ }
++ }
++ }
++
++ // =======================================================
++ function showImages( $current_path, $folderList, $image_viewsize, $image_index ) {
++
++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path;
++ // get the column and row values, display that many images in a row
++ $max_cols = substr($image_viewsize, 0, 1);
++ $max_rows = substr($image_viewsize, 2, 1);
++ // counter for the current column and row
++ $current_col = 0;
++ // the prefix that will be added to a file so that different sizes have different names
++ $file_prefix = strtr($image_viewsize, ',','_').'_';
++
++ // get the amount of subfolders
++ $folder_count = count(glob($current_path.'/'.$folder.'/*',GLOB_ONLYDIR));
++ // increase the index by the folder count
++ for ($i = 1; $i <= $folder_count; $i++) {
++ $image_index += 1;
++ }
++ echo '<table width="100%" cellspacing="0" cellpadding="0">'."\n".
++ '<tr>'.
++ '<td colspan="'.$max_cols.'">'.
++ '&nbsp;'.
++ '</td>'.
++ '</tr>';
++ // go through all entries in the folderList
++ for ($i = $image_index; $i < (($max_cols * $max_rows)+$image_index); $i++) {
++ if (( file_exists( $path.'/'.$file_prefix.$folderList[$i] )) &&
++ ( isset($folderList[$i]) )) {
++ // if the column is zero then start a new row
++ // the specified number of images will be displayed side by side
++ if ( $current_col == 0 ) echo '<tr>'."\n";
++ // stretch the table cells to equal size
++ echo '<td class="single_image" style="width:';
++ // calculate the width of the cells
++ echo floor( 100 / $max_cols );
++ echo '%;">'."\n".
++ // display the image centered and put border around it
++ '<div align="center">'."\n".
++ '<a href="'.root.'gallery/gallery.php?'.
++ path.'='.$current_path.
++ '&'.index.'='.$i.
++ '&'.viewsize.'='.fullsize.
++ '" target="blank">'."\n".
++ '<img class="single_image" src="'.
++ $this->config['cache_path'].$current_path.'/'.
++ $file_prefix.$folderList[$i].'" '.
++ 'onmouseover="this.className=\'single_image_active\'" '.
++ 'onmouseout="this.className=\'single_image\'">'."\n".
++ '</a>'."\n".
++ '</div>'."\n".
++ '<div align="center">'."\n".
++ // show the filename
++ $folderList[$i]."\n".
++ '</div>'."\n".
++ '</td>'."\n";
++ // if the max number of columns are reached close the row
++ if ( $current_col == $max_cols ) echo '</tr>'."\n";
++ // reset the column count back to zero
++ $current_col++;
++ if ( $current_col == $max_cols ) $current_col = 0;
++ }
++ }
++ echo '</table>';
++ }
++
++
++ // =======================================================
++ function onlyDirectoriesAvailable( $current_path, $folderList, $image_viewsize, $image_index ) {
++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path;
++ // only so many images will be created that will be displayed on the screen
++ $max_cols = substr($image_viewsize, 0, 1);
++ $max_rows = substr($image_viewsize, 2, 1);
++ $max_number = ($max_cols * $max_rows);
++ // the prefix that will be added to a file so that different sizes have different names
++ $file_prefix = strtr($image_viewsize, ',','_').'_';
++
++ // go through the folderList. if there are only directories in it
++ // then dont display the navigation stuff
++ $only_dirs = true;
++ for ($i = 0; $i < count($folderList); $i++) {
++ if ( file_exists( $path.'/'.$file_prefix.$folderList[$i] )) {
++ $only_dirs = false;
++ break;
++ }
++ }
++ return $only_dirs;
++ }
++
++ // =======================================================
++ function showNavigation( $current_path, $folderList, $image_viewsize, $image_index ) {
++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path;
++ // only so many images will be created that will be displayed on the screen
++ $max_cols = substr($image_viewsize, 0, 1);
++ $max_rows = substr($image_viewsize, 2, 1);
++ $max_number = ($max_cols * $max_rows);
++ // the prefix that will be added to a file so that different sizes have different names
++ $file_prefix = strtr($image_viewsize, ',','_').'_';
++
++ echo '<table width="100%" cellspacing="0" cellpadding="0">'."\n".
++ '<tr>'."\n".
++ '<td class="image_navigation">&nbsp;'."\n".
++ '</td>'."\n".
++ '<td class="image_navigation">'."\n";
++ // display the goto first page link
++ if ($image_index != 1) {
++ echo '<a href="'.root.'gallery/gallery.php?'.
++ '&'.path.'='.$current_path.
++ '&'.index.'=1'.
++ '&'.viewsize.'='.$image_viewsize.'">'."\n".
++ // display the right arrow
++ '<img src="'.root.skin_dir.'/img/gallery/first_page.png">'.
++ '</a>'."\n";
++ } else {
++ echo '<img src="'.root.skin_dir.'/img/gallery/first_page_disabled.png">'."\n";
++ }
++ // display the previous page icon if there are more than one entries
++ if ($image_index != 1) {
++ echo '<a href="'.root.'gallery/gallery.php?'.
++ '&'.path.'='.$current_path.
++ '&'.index.'=';
++ if ($image_index < $max_number) {
++ echo 1;
++ } else {
++ echo ($image_index - $max_number);
++ }
++ echo '&'.viewsize.'='.$image_viewsize.'">'."\n".
++ // display the left arrow
++ '<img src="'.root.skin_dir.'/img/gallery/prev_page.png">'.
++ '</a>'."\n";
++ } else {
++ echo '<img src="'.root.skin_dir.'/img/gallery/prev_page_disabled.png">'."\n";
++ }
++ echo '</td>'."\n".
++ '<td class="image_navigation">'."\n".
++ // display an info in what page we are right now
++ '( '.$image_index.' '.t('to').' ';
++ if (($image_index + $max_number) < count($folderList)) {
++ echo ($image_index+$max_number-1);
++ } else {
++ echo (count($folderList)-1);
++ }
++ echo ' '.t('of').' '.(count($folderList)-1).' )'."\n".
++ '</td>'."\n".
++ '<td class="image_navigation">'."\n";
++ // display the next page link
++ if (($image_index + $max_number) < count($folderList)) {
++ echo '<a href="'.root.'gallery/gallery.php?'.
++ '&'.path.'='.$current_path.
++ '&'.index.'='.($image_index + $max_number).
++ '&'.viewsize.'='.$image_viewsize.'">'."\n".
++ // display the right arrow
++ '<img src="'.root.skin_dir.'/img/gallery/next_page.png">'.
++ '</a>'."\n";
++ } else {
++ echo '<img src="'.root.skin_dir.'/img/gallery/next_page_disabled.png">'."\n";
++ }
++ // display the goto last page link
++ if (($image_index + $max_number) < count($folderList)) {
++ echo '<a href="'.root.'gallery/gallery.php?'.
++ '&'.path.'='.$current_path.
++ '&'.index.'='.
++ (count($folderList) - (count($folderList) % $max_number)+1).
++ '&'.viewsize.'='.$image_viewsize.'">'."\n".
++ // display the right arrow
++ '<img src="'.root.skin_dir.'/img/gallery/last_page.png">'.
++ '</a>'."\n";
++ } else {
++ echo '<img src="'.root.skin_dir.'/img/gallery/last_page_disabled.png">'."\n";
++ }
++ echo '</td>'."\n".
++ '<td class="image_navigation">&nbsp;'."\n".
++ '</td>'."\n".
++ '</tr>'."\n".
++ '</table>'."\n";
++ }
++
++ // =======================================================
++ function showFullsizeImage( $current_path, $folderList, $image_index ) {
++ echo '<html>'."\n".
++ '<head>'."\n".
++ '<title>'.$folderList[$image_index].'</title>'."\n".
++ '</head>'."\n".
++ '<body>'."\n".
++ '<div>'."\n".
++ '<img src="'."\n".
++ $this->config['cache_path'].$current_path.'/'.
++ fullsize.'_'.$folderList[$image_index].'">'."\n".
++ '</div>'."\n".
++ '</body>'."\n".
++ '</html>';
++ }
++
++ // =======================================================
++}
+diff -Naur ../mythweb-orig/modules/gallery/includes/objects/Settings.php ./modules/gallery/includes/objects/Settings.php
+--- ../mythweb-orig/modules/gallery/includes/objects/Settings.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/includes/objects/Settings.php 2007-08-20 22:28:02.000000000 -0400
+@@ -0,0 +1,243 @@
++<?php
++/**
++ * Gallery Settings Functions
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/set_prefs.php $
++ * @date $Date: 2006-12-19 09:17:33 +0100 (Di, 19 Dez 2006) $
++ * @version $Revision: 12295 $
++ * @author $Author: xris $
++ * @license GPL
++ *
++ * @package MythWeb
++ * @subpackage Gallery
++/**/
++
++// Load the available configuration from the session variable
++// or if this one is empty then form the database
++function loadGalleryConfig()
++{
++ $_SESSION['gallery']['image_path'] = getGalleryImagePath();
++ $_SESSION['gallery']['cache_path'] = getGalleryCachePath();
++ $_SESSION['gallery']['default_viewsize'] = getGalleryDefaultViewSize();
++ $_SESSION['gallery']['screen_width'] = getGalleryScreenWidth();
++ $_SESSION['gallery']['viewsizes'] = getGalleryViewSizes();
++ $_SESSION['gallery']['valid_image_files'] = getGalleryValidImageFiles();
++}
++
++
++// Load all of the known mythtv frontend hosts
++function getGalleryHostnames()
++{
++ $Settings_Hosts = array('' => t('MythWeb Session'));
++ global $db;
++ $sh = $db->query('SELECT DISTINCT hostname FROM settings WHERE value="locale" ORDER BY hostname');
++
++ // add all the found hosts into an array
++ while (list($host) = $sh->fetch_row())
++ {
++ if (empty($host))
++ continue;
++ $Settings_Hosts[$host] = $host;
++ }
++ $sh->finish();
++ return $Settings_Hosts;
++}
++
++
++// update the values in the database if necessary
++function saveGalleryConfig( $Settings_Hosts )
++{
++ // Make sure we have a valid host selected
++ if (!isset( $Settings_Hosts[$_SESSION['settings']['host']]) )
++ {
++ // we have no valid host, reset the array
++ $_SESSION['settings']['host'] = reset(array_keys($Settings_Hosts));
++ } else {
++ // we have a valid host, check if the data should be saved
++ if ($_POST['save'] && isset($_POST['host']))
++ {
++ // Changing settings for this MythWeb session
++ if (empty($_POST['host']))
++ {
++ // save the image path in the session variable
++ $_SESSION['gallery']['image_path'] = $_POST['image_path'];
++ $_SESSION['gallery']['cache_path'] = $_POST['cache_path'];
++ $_SESSION['gallery']['default_viewsize'] = $_POST['default_viewsize'];
++ $_SESSION['gallery']['screen_width'] = $_POST['screen_width'];
++ $_SESSION['gallery']['viewsizes'] = $_POST['viewsizes'];
++ $_SESSION['gallery']['valid_image_files'] = $_POST['valid_image_files'];
++ } else {
++ // save the settings in the database
++// setGalleryImagePath( $_POST['image_path'], $_POST['host'] );
++ setGalleryCachePath( $_POST['cache_path'], $_POST['host'] );
++ setGalleryDefaultViewSize( $_POST['default_viewsize'], $_POST['host'] );
++ setGalleryScreenWidth( $_POST['screen_width'], $_POST['host'] );
++ setGalleryViewSizes( $_POST['viewsizes'], $_POST['host'] );
++ setGalleryValidImageFiles( $_POST['valid_image_files'],$_POST['host'] );
++ }
++ // Make sure the session host gets updated to the posted one.
++ $_SESSION['settings']['host'] = $_POST['host'];
++ }
++ }
++}
++
++// the absolute path where the images are
++// get it from the database or the session variable
++function getGalleryImagePath()
++{
++ global $db;
++ if (!empty($_SESSION['settings']['host'])) {
++ $imagePath = $db->query_col('SELECT data FROM settings
++ WHERE value="GalleryDir" AND hostname=?', $_SESSION['settings']['host']);
++ }
++
++ if (!$imagePath)
++ {
++ $imagePath = _or($_SESSION['gallery']['image_path'], '/myth/gallery');
++ }
++
++ return $imagePath;
++}
++
++// directory where the cached images are stored
++// this directory is relative to the htdocs directory
++function getGalleryCachePath()
++{
++ global $db;
++ if (!empty($_SESSION['settings']['host'])) {
++ $cachePath = $db->query_col('SELECT data FROM settings
++ WHERE value="GalleryCachePath" AND hostname=?', $_SESSION['settings']['host']);
++ }
++
++ if (!$cachePath)
++ {
++ $cachePath = _or($_SESSION['gallery']['cache_path'], '/mythweb/data/cache');
++ }
++
++ return $cachePath;
++}
++
++
++// defines the default view mode
++// default is 4 columns and 4 rows per page
++function getGalleryDefaultViewSize()
++{
++ global $db;
++ if (!empty($_SESSION['settings']['host'])) {
++ $defaultViewSize = $db->query_col('SELECT data FROM settings
++ WHERE value="GalleryDefaultViewSize" AND hostname=?', $_SESSION['settings']['host']);
++ }
++
++ if (!$defaultViewSize)
++ {
++ $defaultViewSize = _or($_SESSION['gallery']['default_viewsize'], '4,3');
++ }
++
++ return $defaultViewSize;
++}
++
++
++// width if the screen-200 (example 1024-200)
++// this is needed to calculate the width of the images
++function getGalleryScreenWidth()
++{
++ global $db;
++ if (!empty($_SESSION['settings']['host'])) {
++ $screenWidth = $db->query_col('SELECT data FROM settings
++ WHERE value="GalleryScreenWidth" AND hostname=?', $_SESSION['settings']['host']);
++ }
++
++ if (!$screenWidth)
++ {
++ $screenWidth = _or($_SESSION['gallery']['screen_width'], '1024');
++ }
++
++ return $screenWidth;
++}
++
++
++// columns and rows that are shown on one page, ; separates another mode
++function getGalleryViewSizes()
++{
++ global $db;
++ if (!empty($_SESSION['settings']['host'])) {
++ $viewSizes = $db->query_col('SELECT data FROM settings
++ WHERE value="GalleryViewSizes" AND hostname=?', $_SESSION['settings']['host']);
++ }
++
++ if (!$viewSizes)
++ {
++ $viewSizes = _or($_SESSION['gallery']['viewsizes'], '5,4 ; 4,4 ; 4,3 ; 3,3 ; 2,2 ; 1,1');
++ }
++
++ return $viewSizes;
++}
++
++
++// image extensions that will be shown, everything else
++// will not work, currently there four are supported
++function getGalleryValidImageFiles()
++{
++ global $db;
++ if (!empty($_SESSION['settings']['host'])) {
++ $validImageFiles = $db->query_col('SELECT data FROM settings
++ WHERE value="GalleryValidImageFiles" AND hostname=?', $_SESSION['settings']['host']);
++ }
++
++ if (!$validImageFiles)
++ {
++ $validImageFiles = _or($_SESSION['gallery']['valid_image_files'], 'jpg,png,gif,bmp');
++ }
++
++ return $validImageFiles;
++}
++
++
++// save the image path in the database
++//function setGalleryImagePath( $imagePath, $host )
++//{
++// global $db;
++// $db->query('UPDATE settings SET data = ?
++// WHERE value="GalleryDir" AND hostname=?', $imagePath, $host);
++//}
++
++function setGalleryCachePath( $cachePath, $host )
++{
++ global $db;
++ $db->query('UPDATE settings SET data = ?
++ WHERE value="GalleryCachePath" AND hostname=?', $cachePath, $host);
++}
++
++
++function setGalleryDefaultViewSize( $defaultViewSize, $host )
++{
++ global $db;
++ $db->query('UPDATE settings SET data = ?
++ WHERE value="GalleryDefaultViewSize" AND hostname=?', $defaultViewSize, $host);
++}
++
++
++function setGalleryScreenWidth( $screenWidth, $host )
++{
++ global $db;
++ $db->query('UPDATE settings SET data = ?
++ WHERE value="GalleryScreenWidth" AND hostname=?', $screenWidth, $host);
++}
++
++
++function setGalleryViewSizes( $viewSizes, $host )
++{
++ global $db;
++ $db->query('UPDATE settings SET data = ?
++ WHERE value="GalleryViewSizes" AND hostname=?', $viewSizes, $host);
++}
++
++
++function setGalleryValidImageFiles( $validImageFiles, $host )
++{
++ global $db;
++ $db->query('UPDATE settings SET data = ?
++ WHERE value="GalleryValidImageFiles" AND hostname=?', $validImageFiles, $host);
++}
++
++
+diff -Naur ../mythweb-orig/modules/gallery/init.php ./modules/gallery/init.php
+--- ../mythweb-orig/modules/gallery/init.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/init.php 2007-08-19 23:21:33.000000000 -0400
+@@ -0,0 +1,38 @@
++<?php
++/**
++ * Initialization routines for the MythWeb Gallery module
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/init.php $
++ * @date $Date: 2006-12-19 09:17:33 +0100 (Di, 19 Dez 2006) $
++ * @version $Revision: 12295 $
++ * @author $Author: rsiebert $
++ * @license GPL
++ *
++ * @package MythWeb
++ * @subpackage Gallery
++ *
++/**/
++
++// Settings options
++ $Settings['gallery'] = array('name' => t('Gallery'),
++ 'choices' => array('prefs' => t('Preferences'), ),
++ 'default' => 'prefs',
++ );
++
++// First, we should check to see that MythGallery is configured.
++ $has_gallery = $_SESSION['locale']
++ ? true
++ : $db->query_col('SELECT COUNT(data)
++ FROM settings
++ WHERE value="locale"');
++
++
++
++// If gallery is enabled, add it to the list.
++ if ($has_gallery) {
++ $Modules['gallery'] = array('path' => 'gallery',
++ 'sort' => 5,
++ 'name' => t('Gallery'),
++ 'description' => t('Local Image Gallery')
++ );
++ }
+diff -Naur ../mythweb-orig/modules/gallery/set_prefs.php ./modules/gallery/set_prefs.php
+--- ../mythweb-orig/modules/gallery/set_prefs.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/set_prefs.php 2007-08-20 22:29:12.000000000 -0400
+@@ -0,0 +1,24 @@
++<?php
++/**
++ * Gallery settings
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/set_prefs.php $
++ * @date $Date: 2006-12-19 09:17:33 +0100 (Di, 19 Dez 2006) $
++ * @version $Revision: 12295 $
++ * @author $Author: xris $
++ * @license GPL
++ *
++ * @package MythWeb
++ * @subpackage Gallery
++/**/
++
++// Load functions
++require_once 'includes/objects/Settings.php';
++
++// Load all of the known mythtv frontend hosts
++$Settings_Hosts = getGalleryHostnames();
++
++// update the values in the database if necessary
++saveGalleryConfig( $Settings_Hosts );
++loadGalleryConfig();
++
+diff -Naur ../mythweb-orig/modules/gallery/tmpl/default/gallery.php ./modules/gallery/tmpl/default/gallery.php
+--- ../mythweb-orig/modules/gallery/tmpl/default/gallery.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/tmpl/default/gallery.php 2007-08-22 00:21:05.000000000 -0400
+@@ -0,0 +1,39 @@
++<?php
++/**
++ * Display template for the Gallery module
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/tmpl/default/gallery.php $
++ * @date $Date: 2006-12-19 09:17:33 +0100 (Di, 19 Dez 2006) $
++ * @version $Revision: 12295 $
++ * @author $Author: xris $
++ * @license GPL
++ *
++ * @package MythWeb
++ *
++/**/
++
++// Page title
++$page_title = 'MythWeb - '.t('Gallery');
++
++// the current viewsize mode
++$image_viewsize = $gallery->getImageViewSize();
++
++// If displaying full size image don't display header and footer
++if ($image_viewsize == 'fullsize') {
++ // Print the gallery part
++ $gallery->start();
++}
++else
++{
++ // Load this page's custom stylesheet
++ $headers[] = '<link rel="stylesheet" type="text/css" href="'.root.skin_dir.'/gallery.css" />';
++
++ // Print the page header
++ require 'modules/_shared/tmpl/'.tmpl.'/header.php';
++
++ // Print the gallery part
++ $gallery->start();
++
++ // Print the page footer
++ require 'modules/_shared/tmpl/'.tmpl.'/footer.php';
++}
+\ No newline at end of file
+diff -Naur ../mythweb-orig/modules/gallery/tmpl/default/set_prefs.php ./modules/gallery/tmpl/default/set_prefs.php
+--- ../mythweb-orig/modules/gallery/tmpl/default/set_prefs.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/tmpl/default/set_prefs.php 2007-08-19 23:21:33.000000000 -0400
+@@ -0,0 +1,93 @@
++<?php
++/**
++ * Display/save MythGallery settings
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/tmpl/default/set_prefs.php $
++ * @date $Date: 2007-01-09 07:37:34 +0100 (Di, 09 Jan 2007) $
++ * @version $Revision: 12460 $
++ * @author $Author: xris $
++ * @license GPL
++ *
++ * @package MythWeb
++ * @subpackage Gallery
++ *
++/**/
++
++// Display the gui for the settings
++$galleryConfigTheme = new GalleryConfigTheme();
++$galleryConfigTheme->showConfig();
++
++class GalleryConfigTheme
++{
++ function GalleryConfigTheme()
++ {
++
++ }
++
++ function showConfig()
++ {
++ echo '<form class="form" method="post" action="'. form_action .'">'.
++ '<input type="hidden" name="host" value="'. html_entities($_SESSION['settings']['host']) .'"/>'.
++ '<table border="0" cellspacing="0" cellpadding="0">'.
++ '<tr class="_sep">'.
++ '<td>'.
++ t('Gallery image path').':&nbsp;'.
++ '</td>'.
++ '<td>'.
++ '<input class="_text" type="text" name="image_path" value="'.getGalleryImagePath().'">'.
++ '</td>'.
++ '</tr>'.
++ '<tr class="_sep">'.
++ '<td>'.
++ t('Path where the thumbnails are').':&nbsp;'.
++ '</td>'.
++ '<td>'.
++ '<input class="_text" type="text" name="cache_path" value="'.getGalleryCachePath().'">'.
++ '</td>'.
++ '</tr>'.
++ '<tr class="_sep">'.
++ '<td>'.
++ t('Default view size').':&nbsp;'.
++ '</td>'.
++ '<td>'.
++ '<input class="_text" type="text" name="default_viewsize" value="'.getGalleryDefaultViewSize().'">'.
++ '</td>'.
++ '</tr>'.
++ '<tr class="_sep">'.
++ '<td>'.
++ t('Horizontal screen resolution').':&nbsp;'.
++ '</td>'.
++ '<td>'.
++ '<input class="_text" type="text" name="screen_width" value="'.getGalleryScreenWidth().'">'.
++ '</td>'.
++ '</tr>'.
++ '<tr class="_sep">'.
++ '<td>'.
++ t('List of available view sizes').':&nbsp;'.
++ '</td>'.
++ '<td>'.
++ '<input class="_text" type="text" name="viewsizes" value="'.getGalleryViewSizes().'">'.
++ '</td>'.
++ '</tr>'.
++ '<tr class="_sep">'.
++ '<td>'.
++ t('List of allowed image formats').':&nbsp;'.
++ '</td>'.
++ '<td>'.
++ '<input class="_text" type="text" name="valid_image_files" value="'.getGalleryValidImageFiles().'">'.
++ '</td>'.
++ '</tr>'.
++ '<tr>'.
++ '<td align="center">'.
++ '<input class="_button" type="reset" class="submit" value="'.t('Reset').'">'.
++ '</td>'.
++ '<td align="center">'.
++ '<input class="_button" type="submit" class="submit" name="save" value="'.t('Save') .'">'.
++ '</td>'.
++ '</tr>'.
++ '</table>'.
++ '</form>';
++ }
++}
++
++?>
+\ No newline at end of file
+diff -Naur ../mythweb-orig/modules/gallery/tmpl/default/welcome.php ./modules/gallery/tmpl/default/welcome.php
+--- ../mythweb-orig/modules/gallery/tmpl/default/welcome.php 1969-12-31 19:00:00.000000000 -0500
++++ ./modules/gallery/tmpl/default/welcome.php 2007-08-19 23:21:33.000000000 -0400
+@@ -0,0 +1,26 @@
++<?php
++/**
++ * Welcome page description of the Gallery module.
++ *
++ * @url $URL: http://svn.mythtv.org/svn/trunk/mythplugins/mythweb/modules/gallery/tmpl/default/welcome.php $
++ * @date $Date: 2005-12-13 08:23:18 +0100 (Di, 13 Dez 2005) $
++ * @version $Revision: 8252 $
++ * @author $Author: xris $
++ * @license GPL
++ *
++ * @package MythWeb
++ *
++/**/
++
++// Open with a div and an image
++ echo '<div id="info_gallery" class="hidden">',
++ '<img src="', skin_url, '/img/gallery.png" class="module_icon" />',
++
++// Print a basic overview of what this module does
++ t('welcome: gallery'),
++
++// Next, print a list of possible subsectons
++ ####
++
++// Close the div
++ "</div>\n";
+\ No newline at end of file
+diff -Naur ../mythweb-orig/modules/_shared/lang/English.lang ./modules/_shared/lang/English.lang
+--- ../mythweb-orig/modules/_shared/lang/English.lang 2007-08-19 23:20:01.000000000 -0400
++++ ./modules/_shared/lang/English.lang 2007-08-19 23:26:41.000000000 -0400
+@@ -153,6 +153,7 @@
+ "Create Schedule"
+ "Current Conditions"
+ "Current recordings"
++"Current path"
+ "Currently Browsing: $1"
+ "Currently Recording: Edit"
+ "Custom"
+@@ -164,6 +165,7 @@
+ "Deactivated"
+ "Default"
+ "Default MythVideo View"
++"Default view size"
+ "Delete"
+ "delete"
+ "Delete $1"
+@@ -242,6 +244,8 @@
+ "freqid"
+ "Friday"
+ "Frontends"
++"Gallery"
++"Gallery image path"
+ "generic_date"
+ %a %b %e, %Y
+ "generic_time"
+@@ -269,6 +273,7 @@
+ "Hide"
+ "High"
+ "Home"
++"Horizontal screen resolution"
+ "Host"
+ "Hosted by"
+ "Hosts"
+@@ -276,6 +281,7 @@
+ "Hour Format"
+ "hue"
+ "Humidity"
++"Images per page"
+ "IMDB"
+ "imdb rating"
+ "IMDBTYPE"
+@@ -318,6 +324,8 @@
+ "length"
+ "Length"
+ "Length (min)"
++"List of allowed image formats"
++"List of available view sizes"
+ "Listing &quot;Jump to&quot;"
+ "Listing Time Key"
+ "Listings"
+@@ -367,6 +375,7 @@
+ "mythvideo.sort_ignores_case"
+ "MythWeb"
+ "MythWeb Defaults"
++"MythWeb Gallery."
+ "MythWeb Global Defaults"
+ "MythWeb Session"
+ "MythWeb session settings"
+@@ -401,6 +410,7 @@
+ "Number of shows"
+ "Number of Songs"
+ "Number of timeslots"
++"of"
+ "Only display favourite channels"
+ "Only match commercial-free channels"
+ "Only match HD programs"
+@@ -415,6 +425,7 @@
+ "Past Month"
+ "Past Week"
+ "Past Year"
++"Path where the thumbnails are"
+ "Paused"
+ "Pending"
+ "People"
+@@ -673,6 +684,7 @@
+ "Subtitles Available"
+ "Sunday"
+ "Surround Sound"
++"Switch view mode"
+ "Tab"
+ "The requested recording schedule has been deleted."
+ "There are no items in this Playlist!"
+@@ -690,6 +702,7 @@
+ "Title Match"
+ "Title search"
+ "Title Search"
++"to"
+ "Today"
+ "Tomorrow"
+ "Too Many"
+@@ -784,6 +797,8 @@
+ "Wednesday"
+ "welcome: backend_log"
+ Show the server logs.
++"welcome: gallery"
++ Browse your picture collection.
+ "welcome: music"
+ Browse your music collection.
+ "welcome: remote"
+diff -Naur ../mythweb-orig/modules/_shared/lang/German.lang ./modules/_shared/lang/German.lang
+--- ../mythweb-orig/modules/_shared/lang/German.lang 2007-08-19 23:20:01.000000000 -0400
++++ ./modules/_shared/lang/German.lang 2007-08-19 23:27:54.000000000 -0400
+@@ -209,6 +209,8 @@
+ "Create a Random Mix"
+ "Create Schedule"
+ Speichern
++"Current path"
++ Aktueller Pfad
+ "Current Conditions"
+ Das aktuelle Wetter
+ "Current recordings"
+@@ -231,6 +233,8 @@
+ "Default"
+ Standard
+ "Default MythVideo View"
++"Default view size"
++ Standardansicht
+ "Delete"
+ Löschen
+ "delete"
+@@ -343,6 +347,10 @@
+ "Friday"
+ Freitag
+ "Frontends"
++"Gallery"
++ Gallerie
++"Gallery image path"
++ Pfad der Bilder
+ "generic_date"
+ %e.%m.%Y
+ "generic_time"
+@@ -379,6 +387,8 @@
+ "High"
+ Max
+ "Home"
++"Horizontal screen resolution"
++ Horizontale Bildschirmauflösung
+ "Host"
+ "Hosted by"
+ "Hosts"
+@@ -390,6 +400,8 @@
+ Farbton
+ "Humidity"
+ Luftfeuchtigkeit
++"Images per page"
++ Bilder pro Seite
+ "IMDB"
+ IMDB
+ "imdb rating"
+@@ -438,6 +450,10 @@
+ Dauer
+ "Length (min)"
+ Dauer (Min.)
++"List of allowed image formats"
++ Liste der erlaubten Bildformate
++"List of available view sizes"
++ Liste der möglichen Ansichten
+ "Listing &quot;Jump to&quot;"
+ TV Programm &quot;Gehe zu&quot;
+ "Listing Time Key"
+@@ -502,6 +518,8 @@
+ "mythvideo.sort_ignores_case"
+ "MythWeb"
+ "MythWeb Defaults"
++"MythWeb Gallery."
++ Gallerie
+ "MythWeb Global Defaults"
+ "MythWeb Session"
+ "MythWeb session settings"
+@@ -548,6 +566,8 @@
+ "Number of shows"
+ "Number of Songs"
+ "Number of timeslots"
++"of"
++ von
+ "Only display favourite channels"
+ Nur Favoriten anzeigen
+ "Only match commercial-free channels"
+@@ -562,6 +582,8 @@
+ "Override"
+ "Page Down"
+ "Page Up"
++"Path where the thumbnails are"
++ Thumbnails speichern unter
+ "Part $1 of $2"
+ Teil $1 von $2
+ "Past Month"
+@@ -870,6 +892,10 @@
+ "Streaming"
+ "Sub and Desc (Empty matches)"
+ Untertitel & Beschr. (kein Ergebnis)
++"subfolder"
++ Unterordner
++"subfolders"
++ Unterordner
+ "Submit Search"
+ "subtitle"
+ "Subtitle"
+@@ -882,6 +908,8 @@
+ "Subtitles Available"
+ "Sunday"
+ Sonntag
++"Switch view mode"
++ Ansichtsmodus wechseln
+ "Surround Sound"
+ "Tab"
+ "The requested recording schedule has been deleted."
+@@ -907,6 +935,8 @@
+ "Title search"
+ "Title Search"
+ Titel Suche
++"to"
++ bis
+ "Today"
+ Heute
+ "Tomorrow"
+@@ -1024,6 +1054,8 @@
+ Mittwoch
+ "welcome: backend_log"
+ Backend Log
++"welcome: gallery"
++ Gallerie
+ "welcome: music"
+ Musik
+ "welcome: remote"
+diff -Naur ../mythweb-orig/modules/_shared/tmpl/default/header.php ./modules/_shared/tmpl/default/header.php
+--- ../mythweb-orig/modules/_shared/tmpl/default/header.php 2007-08-19 23:20:01.000000000 -0400
++++ ./modules/_shared/tmpl/default/header.php 2007-08-19 23:21:33.000000000 -0400
+@@ -96,6 +96,13 @@
+ </a>
+ <?php
+ }
++ if ($Modules['gallery']) {
++?>
++ <a id="gallery_link"<?php if ($Path[0] == 'gallery') echo ' class="current_section"' ?> href="<?php echo root ?>gallery" onmouseover="return help_text('<?php echo str_replace("'", "\\'", t('MythWeb Gallery.')) ?>')" onmouseout="return help_text()">
++ <img src="<?php echo skin_url ?>img/gallery.png" width="48" height="48" class="alpha_png" alt="MythGallery" />
++ </a>
++<?php
++ }
+ ?>
+ <a id="settings_link"<?php if ($Path[0] == 'settings') echo ' class="current_section"' ?> href="<?php echo root ?>settings" onmouseover="return help_text('<?php echo str_replace("'", "\\'", t('Edit MythWeb and some MythTV settings.')) ?>')" onmouseout="return help_text()">
+ <img src="<?php echo skin_url ?>img/settings.png" width="48" height="48" class="alpha_png" alt="<?php echo t('Settings') ?>" />
+diff -Naur ../mythweb-orig/skins/default/gallery.css ./skins/default/gallery.css
+--- ../mythweb-orig/skins/default/gallery.css 1969-12-31 19:00:00.000000000 -0500
++++ ./skins/default/gallery.css 2007-08-19 23:21:33.000000000 -0400
+@@ -0,0 +1,108 @@
++img {
++ border: 0px;
++ border-color: #000000;
++}
++
++table.current_path_and_viewsize {
++ margin-top:5px;
++ border:1px solid #626262;
++ padding:5px;
++ width:100%;
++}
++
++a {
++ color:#000000;
++ text-decoration:none;
++}
++
++a.header {
++ font-weight:bold;
++ font-style:italic;
++}
++
++a.folderlist {
++ font-style:italic;
++}
++
++td.current_path {
++ text-align:left;
++ width:auto;
++}
++
++td.change_viewsize_text {
++ text-align:right;
++ width:160px;
++}
++
++td.change_viewsize_selection {
++ text-align:right;
++ width:140px;
++}
++
++select.change_viewsize {
++ border:1px solid #323232;
++ background-color: #191c26;
++ color: #FFFFFF;
++}
++
++td.folder_navigation {
++ width:200px;
++ vertical-align:top;
++}
++
++table.folder_navigation {
++ margin-top:5px;
++ border:1px solid #626262;
++ padding:4px;
++ width:100%;
++}
++
++div.folder_navigation_active {
++ background-color: #224477;
++ border:1px solid #191c26;
++ text-align:left;
++ padding:4px;
++}
++
++div.folder_navigation {
++ border:1px solid #191c26;
++ text-align:left;
++ padding:4px;
++}
++
++td.image_listing {
++ width:auto;
++ vertical-align:top;
++}
++
++table.imagelist_and_navigation {
++ margin-top:5px;
++ margin-left:5px;
++ border:1px solid #626262;
++ padding:5px;
++ width:100%;
++}
++
++td.image_navigation {
++ text-align:center;
++ vertical-align:middle;
++ width:20%;
++ border-width: 0px;
++}
++
++td.single_image {
++ font-size:9pt;
++ padding:5px;
++ text-align:center;
++}
++
++img.single_image {
++ padding:7px;
++ border:1px solid #323232;
++}
++
++img.single_image_active {
++ background-color: #224477;
++ padding:7px;
++ border:1px solid #323232;
++}
+\ No newline at end of file
+diff -Naur ../mythweb-orig/skins/grey/gallery.css ./skins/grey/gallery.css
+--- ../mythweb-orig/skins/grey/gallery.css 1969-12-31 19:00:00.000000000 -0500
++++ ./skins/grey/gallery.css 2007-08-19 23:21:33.000000000 -0400
+@@ -0,0 +1,107 @@
++img {
++ border: 0px;
++ border-color: #000000;
++}
++
++table.current_path_and_viewsize {
++ margin-top:5px;
++ border:1px solid #626262;
++ padding:5px;
++ width:100%;
++}
++
++a {
++ color:#000000;
++ text-decoration:none;
++}
++
++a.header {
++ font-weight:bold;
++ font-style:italic;
++}
++
++a.folderlist {
++ font-style:italic;
++}
++
++td.current_path {
++ text-align:left;
++ width:auto;
++}
++
++td.change_viewsize_text {
++ text-align:right;
++ width:160px;
++}
++
++td.change_viewsize_selection {
++ text-align:right;
++ width:140px;
++}
++
++select.change_viewsize {
++ border:1px solid #323232;
++ background-color: #212121;
++}
++
++td.folder_navigation {
++ width:200px;
++ vertical-align:top;
++}
++
++table.folder_navigation {
++ margin-top:5px;
++ border:1px solid #626262;
++ padding:4px;
++ width:100%;
++}
++
++div.folder_navigation_active {
++ background-color: #626262;
++ border:1px solid #212121;
++ text-align:left;
++ padding:4px;
++}
++
++div.folder_navigation {
++ border:1px solid #212121;
++ text-align:left;
++ padding:4px;
++}
++
++td.image_listing {
++ width:auto;
++ vertical-align:top;
++}
++
++table.imagelist_and_navigation {
++ margin-top:5px;
++ margin-left:5px;
++ border:1px solid #626262;
++ padding:5px;
++ width:100%;
++}
++
++td.image_navigation {
++ text-align:center;
++ vertical-align:middle;
++ width:20%;
++ border-width: 0px;
++}
++
++td.single_image {
++ font-size:9pt;
++ padding:5px;
++ text-align:center;
++}
++
++img.single_image {
++ padding:7px;
++ border:1px solid #323232;
++}
++
++img.single_image_active {
++ background-color: #626262;
++ padding:7px;
++ border:1px solid #323232;
++}
+\ No newline at end of file
+diff -Naur ../mythweb-orig/skins/grey/settings.css ./skins/grey/settings.css
+--- ../mythweb-orig/skins/grey/settings.css 2007-08-19 23:20:00.000000000 -0400
++++ ./skins/grey/settings.css 2007-08-19 23:21:33.000000000 -0400
+@@ -94,7 +94,7 @@
+
+ #settings .-host {
+ text-align: right;
+- border-bottom: 2px solid #eee;
++ border-bottom: 2px solid #aaa;
+ }
+
+ /* A notification/warning */
+@@ -115,3 +115,33 @@
+ border: 2px solid #999;
+ border-top: none;
+ }
++
++ #settings ._content input._text {
++ margin: 2px;
++ padding: 2px;
++ border: 1px solid #333333;
++ }
++
++ #settings ._content input._button {
++ margin: 2px;
++ padding: 2px;
++ border: 1px solid #333333;
++ color: #DDDDDD;
++ }
++
++ #settings ._content table {
++ width: 100%;
++ }
++ #settings ._content table th, #settings ._content table td {
++ padding: .5em;
++ }
++
++ #settings ._content th, #settings ._content td {
++ text-align: right;
++ font-weight: normal;
++ white-space: nowrap;
++ }
++
++ #settings ._content tr._sep th, #settings ._content tr._sep td {
++ border-bottom: 1px solid #304943;
++ }