aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrvelices <rv-github@modusoptimus.com>2006-07-26 00:51:08 +0000
committerrvelices <rv-github@modusoptimus.com>2006-07-26 00:51:08 +0000
commitaca06a08aa8d2148ba6198811907fbb61a4e8f57 (patch)
tree021145a2e9d9e75ace7ce0013a66756a22684475
parent7e79e15d180c5621d83a6906968317de58eae722 (diff)
feature 169: each category can have its own image order
git-svn-id: http://piwigo.org/svn/trunk@1500 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/cat_modify.php100
-rw-r--r--include/functions_category.inc.php3
-rw-r--r--include/section_init.inc.php5
-rw-r--r--install/db/29-database.php46
-rw-r--r--install/phpwebgallery_structure.sql1
-rw-r--r--language/en_UK.iso-8859-1/admin.lang.php2
-rw-r--r--language/fr_FR.iso-8859-1/admin.lang.php2
-rw-r--r--template/yoga/admin/cat_modify.tpl32
8 files changed, 185 insertions, 6 deletions
diff --git a/admin/cat_modify.php b/admin/cat_modify.php
index 3d7ed8cb7..a543d0d77 100644
--- a/admin/cat_modify.php
+++ b/admin/cat_modify.php
@@ -80,6 +80,39 @@ if (isset($_POST['submit']))
);
}
+ $image_order = '';
+ if ( !isset($_POST['image_order_default']) )
+ {
+ for ($i=1; $i<=3; $i++)
+ {
+ if ( !empty($_POST['order_field_'.$i]) )
+ {
+ if (! empty($image_order) )
+ {
+ $image_order .= ',';
+ }
+ $image_order .= $_POST['order_field_'.$i];
+ if ($_POST['order_direction_'.$i]=='DESC')
+ {
+ $image_order .= ' DESC';
+ }
+ }
+ }
+ }
+ $image_order = empty($image_order) ? 'null' : "'$image_order'";
+ $query = '
+UPDATE '.CATEGORIES_TABLE.' SET image_order='.$image_order.'
+WHERE ';
+ if (isset($_POST['image_order_subcats']))
+ {
+ $query .= 'uppercats REGEXP \'(^|,)'.$_GET['cat_id'].'(,|$)\'';
+ }
+ else
+ {
+ $query .= 'id='.$_GET['cat_id'].';';
+ }
+ pwg_query($query);
+
array_push($page['infos'], $lang['editcat_confirm']);
}
else if (isset($_POST['set_random_representant']))
@@ -226,6 +259,9 @@ $template->assign_vars(
$commentable => 'checked="checked"',
$uploadable => 'checked="checked"',
+ 'IMG_ORDER_DEFAULT' => empty($category['image_order']) ?
+ 'checked="checked"' : '',
+
'L_EDIT_NAME' => $lang['name'],
'L_STORAGE' => $lang['storage'],
'L_REMOTE_SITE' => $lang['remote_site'],
@@ -277,6 +313,70 @@ if ($category['nb_images'] > 0)
);
}
+// image order management
+$matches = array();
+if ( !empty( $category['image_order'] ) )
+{
+ preg_match_all('/([a-z_]+) *(?:(asc|desc)(?:ending)?)? *(?:, *|$)/i',
+ $category['image_order'], $matches);
+}
+
+$sort_fields = array(
+ '' => '',
+ 'date_creation' => l10n('Creation date'),
+ 'date_available' => l10n('Post date'),
+ 'average_rate' => l10n('Average rate'),
+ 'hit' => l10n('most_visited_cat'),
+ 'file' => l10n('File name'),
+ 'id' => 'Id',
+ );
+
+for ($i=0; $i<3; $i++) // 3 fields
+{
+ $template->assign_block_vars('image_order', array('NUMBER'=>$i+1) );
+ foreach ($sort_fields as $sort_field => $name)
+ {
+ $selected='';
+ if ( isset($matches[1][$i]) and $matches[1][$i]==$sort_field )
+ {
+ $selected='selected="selected"';
+ }
+ elseif ( empty($sort_field) )
+ {
+ $selected='selected="selected"';
+ }
+
+ $template->assign_block_vars('image_order.field',
+ array(
+ 'SELECTED' => $selected,
+ 'VALUE' => $sort_field,
+ 'OPTION' => $name
+ )
+ );
+ }
+
+ $template->assign_block_vars('image_order.order',
+ array(
+ 'SELECTED' =>
+ ( empty($matches[2][$i]) or strcasecmp($matches[2][$i],'ASC')==0 )
+ ? 'selected="selected"' : '',
+ 'VALUE' => 'ASC',
+ 'OPTION' => 'Ascending'
+ )
+ );
+
+ $template->assign_block_vars('image_order.order',
+ array(
+ 'SELECTED' =>
+ ( isset($matches[2][$i]) and strcasecmp($matches[2][$i],'DESC')==0 )
+ ? 'selected="selected"' : '',
+ 'VALUE' => 'DESC',
+ 'OPTION' => 'Descending'
+ )
+ );
+}
+
+
// representant management
if ($category['nb_images'] > 0
or !empty($category['representative_picture_id']))
diff --git a/include/functions_category.inc.php b/include/functions_category.inc.php
index 2aff86975..939a72e77 100644
--- a/include/functions_category.inc.php
+++ b/include/functions_category.inc.php
@@ -110,7 +110,8 @@ function get_cat_info( $id )
{
$infos = array('nb_images','id_uppercat','comment','site_id'
,'dir','date_last','uploadable','status','visible'
- ,'representative_picture_id','uppercats','commentable');
+ ,'representative_picture_id','uppercats','commentable'
+ ,'image_order');
$query = '
SELECT '.implode(',', $infos).'
diff --git a/include/section_init.inc.php b/include/section_init.inc.php
index b2bb4c90e..1aa58516c 100644
--- a/include/section_init.inc.php
+++ b/include/section_init.inc.php
@@ -342,6 +342,11 @@ if ('categories' == $page['section'])
if (!isset($page['chronology_field']))
{
+ if ( !empty($result['image_order']) and !isset($page['super_order_by']) )
+ {
+ $conf[ 'order_by' ] = ' ORDER BY '.$result['image_order'];
+ }
+
$query = '
SELECT image_id
FROM '.IMAGE_CATEGORY_TABLE.'
diff --git a/install/db/29-database.php b/install/db/29-database.php
new file mode 100644
index 000000000..efa95d2d1
--- /dev/null
+++ b/install/db/29-database.php
@@ -0,0 +1,46 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | PhpWebGallery - a PHP based picture gallery |
+// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
+// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
+// +-----------------------------------------------------------------------+
+// | branch : BSF (Best So Far)
+// | file : $RCSfile$
+// | last update : $Date: 2006-07-23 14:17:00 +0200 (dim, 23 jui 2006) $
+// | last modifier : $Author: nikrou $
+// | revision : $Revision: 1492 $
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU General Public License |
+// | along with this program; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH'))
+{
+ die('Hacking attempt!');
+}
+
+$upgrade_description = 'Add column #categories.image_order';
+
+$query = '
+ALTER TABLE '.PREFIX_TABLE.'categories
+ ADD COLUMN image_order VARCHAR(128) DEFAULT NULL
+;';
+pwg_query($query);
+
+echo
+"\n"
+. $upgrade_description
+."\n"
+;
+?>
diff --git a/install/phpwebgallery_structure.sql b/install/phpwebgallery_structure.sql
index b9434ff09..cf7c55b39 100644
--- a/install/phpwebgallery_structure.sql
+++ b/install/phpwebgallery_structure.sql
@@ -37,6 +37,7 @@ CREATE TABLE `phpwebgallery_categories` (
`uppercats` varchar(255) NOT NULL default '',
`commentable` enum('true','false') NOT NULL default 'true',
`global_rank` varchar(255) default NULL,
+ `image_order` varchar(128) default NULL,
PRIMARY KEY (`id`),
KEY `categories_i2` (`id_uppercat`)
) TYPE=MyISAM;
diff --git a/language/en_UK.iso-8859-1/admin.lang.php b/language/en_UK.iso-8859-1/admin.lang.php
index ce2a743c0..8d0b21173 100644
--- a/language/en_UK.iso-8859-1/admin.lang.php
+++ b/language/en_UK.iso-8859-1/admin.lang.php
@@ -45,6 +45,7 @@ $lang['Add a user'] = 'Add a user';
$lang['Add group'] = 'Add group';
$lang['Add selected elements to caddie'] = 'Add selected elements to caddie';
$lang['Add'] = 'Add';
+$lang['Apply to subcategories'] = 'Apply to subcategories';
$lang['Are you sure?'] = 'Are you sure?';
$lang['Associated'] = 'Associated';
$lang['Association to categories'] = 'Association to categories';
@@ -165,6 +166,7 @@ $lang['Tag selection'] = 'Tag selection';
$lang['Take selected elements out of caddie'] = 'Take selected elements out of caddie';
$lang['The %d following tags were deleted : %s'] = 'The %d following tags were deleted : %s';
$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Unable to check for upgrade since allow_url_fopen is disabled.';
+$lang['Use default sort order']='Use the default image sort order (defined in the configuration file)';
$lang['User comments validation'] = 'User comments validation';
$lang['Users'] = 'Users';
$lang['Validate All'] = 'Validate All';
diff --git a/language/fr_FR.iso-8859-1/admin.lang.php b/language/fr_FR.iso-8859-1/admin.lang.php
index 1e0516bca..961159348 100644
--- a/language/fr_FR.iso-8859-1/admin.lang.php
+++ b/language/fr_FR.iso-8859-1/admin.lang.php
@@ -45,6 +45,7 @@ $lang['Add a user'] = 'Ajouter un utilisateur';
$lang['Add group'] = 'Ajouter un groupe';
$lang['Add selected elements to caddie'] = 'Ajouter les éléments sélectionnés au panier';
$lang['Add'] = 'Ajouter';
+$lang['Apply to subcategories'] = 'Appliquer au sous-catégories';
$lang['Are you sure?'] = 'Etes-vous sur?';
$lang['Associated'] = 'Associée à';
$lang['Association to categories'] = 'Association aux catégories';
@@ -165,6 +166,7 @@ $lang['Tag selection'] = 'Sélection de tags';
$lang['Take selected elements out of caddie'] = 'Sortir les éléments sélectionnés du panier';
$lang['The %d following tags were deleted : %s'] = 'Les %d tags suivants ont été supprimés : %s';
$lang['Unable to check for upgrade since allow_url_fopen is disabled.'] = 'Impossible de connaître la dernière version cat la fonction allow_url_fopen est désactivée.';
+$lang['Use default sort order']='Utiliser l\'ordre de tri des images par défaut (défini dans le fichier de configuration)';
$lang['User comments validation'] = 'Validation des commentaires utilisateur';
$lang['Users'] = 'Utilisateurs';
$lang['Validate All'] = 'Tout valider';
diff --git a/template/yoga/admin/cat_modify.tpl b/template/yoga/admin/cat_modify.tpl
index 62e97077f..ef7b64b78 100644
--- a/template/yoga/admin/cat_modify.tpl
+++ b/template/yoga/admin/cat_modify.tpl
@@ -62,7 +62,7 @@
<!-- BEGIN parent_option -->
<option class="{move.parent_option.CLASS}" {move.parent_option.SELECTED} value="{move.parent_option.VALUE}">{move.parent_option.OPTION}</option>
<!-- END parent_option -->
- </select>
+ </select>
</fieldset>
<!-- END move -->
@@ -102,6 +102,28 @@
</table>
</fieldset>
+<fieldset id="image_order">
+ <legend>{lang:Sort order}</legend>
+ <input type="checkbox" name="image_order_default" id="image_order_default" {IMG_ORDER_DEFAULT} />
+ <label for="image_order_default">{lang:Use default sort order}</label>
+ <br/>
+ <input type="checkbox" name="image_order_subcats" id="image_order_subcats" />
+ <label for="image_order_subcats">{lang:Apply to subcategories}</label>
+ <br/>
+ <!-- BEGIN image_order -->
+ <select name="order_field_{image_order.NUMBER}">
+ <!-- BEGIN field -->
+ <option value="{image_order.field.VALUE}" {image_order.field.SELECTED}>{image_order.field.OPTION}</option>
+ <!-- END field -->
+ </select>
+ <select name="order_direction_{image_order.NUMBER}">
+ <!-- BEGIN order -->
+ <option value="{image_order.order.VALUE}" {image_order.order.SELECTED}>{image_order.order.OPTION}</option>
+ <!-- END order -->
+ </select><br/>
+ <!-- END image_order -->
+</fieldset>
+
<p style="text-align:center;">
<input type="submit" value="{L_SUBMIT}" name="submit" {TAG_INPUT_ENABLED}/>
<input type="reset" value="{lang:Reset}" name="reset" />
@@ -122,7 +144,7 @@
<!-- END random -->
</td>
<td>
- <!-- BEGIN set_random -->
+ <!-- BEGIN set_random -->
<p><input type="submit" name="set_random_representant" value="{L_SET_RANDOM_REPRESENTANT}" {TAG_INPUT_ENABLED}/></p>
<!-- END set_random -->
@@ -138,7 +160,7 @@
</form>
<form action="{F_ACTION}" method="POST" id="links">
-
+
<fieldset id="linkAllNew">
<legend>{lang:Link all category elements to a new category}</legend>
@@ -163,7 +185,7 @@
<p>
<input type="submit" value="{lang:Submit}" name="submitAdd" {TAG_INPUT_ENABLED}/>
<input type="reset" value="{lang:Reset}" name="reset" />
- </p>
+ </p>
</fieldset>
@@ -186,7 +208,7 @@
<p>
<input type="submit" value="{lang:Submit}" name="submitDestinations" {TAG_INPUT_ENABLED}/>
<input type="reset" value="{lang:Reset}" name="reset" />
- </p>
+ </p>
</fieldset>