mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-05-04 20:42:53 +02:00
Feature 1031 : Automatically sort photos by rank when manual ranks are edited
Add fields to choose sorting mode. If order of images is changed, checked automaticaly rank for sorting mode. Need refactoring between admin/element_set_ranks.php admin/cat_modify.php git-svn-id: http://piwigo.org/svn/trunk@5759 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -84,6 +84,9 @@ function save_images_order($category_id, $images)
|
||||
// | global mode form submission |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
$image_order_choices = array('default', 'rank', 'user_define');
|
||||
$image_order_choice = 'default';
|
||||
|
||||
if (isset($_POST['submit']))
|
||||
{
|
||||
asort($_POST['rank_of_image'], SORT_NUMERIC);
|
||||
@@ -97,6 +100,40 @@ if (isset($_POST['submit']))
|
||||
$page['infos'],
|
||||
l10n('Images manual order was saved')
|
||||
);
|
||||
|
||||
$image_order = null;
|
||||
if (!empty($_POST['image_order_choice'])
|
||||
&& in_array($_POST['image_order_choice'], $image_order_choices))
|
||||
{
|
||||
$image_order_choice = $_POST['image_order_choice'];
|
||||
}
|
||||
|
||||
if ($image_order_choice=='user_define')
|
||||
{
|
||||
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';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($image_order_choice=='rank')
|
||||
{
|
||||
$image_order = 'rank';
|
||||
}
|
||||
$query = '
|
||||
UPDATE '.CATEGORIES_TABLE.' SET image_order=\''.$image_order.'\'
|
||||
WHERE id='.$page['category_id'];
|
||||
pwg_query($query);
|
||||
}
|
||||
|
||||
// +-----------------------------------------------------------------------+
|
||||
@@ -108,15 +145,22 @@ $template->set_filenames(
|
||||
|
||||
$base_url = get_root_url().'admin.php';
|
||||
|
||||
// $form_action = $base_url.'?page=element_set_global';
|
||||
|
||||
$query = '
|
||||
SELECT uppercats
|
||||
SELECT *
|
||||
FROM '.CATEGORIES_TABLE.'
|
||||
WHERE id = '.$page['category_id'].'
|
||||
;';
|
||||
$category = pwg_db_fetch_assoc(pwg_query($query));
|
||||
|
||||
if ($category['image_order']=='rank')
|
||||
{
|
||||
$image_order_choice = 'rank';
|
||||
}
|
||||
elseif ($category['image_order']!='')
|
||||
{
|
||||
$image_order_choice = 'user_define';
|
||||
}
|
||||
|
||||
// Navigation path
|
||||
$navigation = get_cat_display_name_cache(
|
||||
$category['uppercats'],
|
||||
@@ -174,6 +218,56 @@ while ($row = pwg_db_fetch_assoc($result))
|
||||
$current_rank++;
|
||||
}
|
||||
|
||||
// image order management
|
||||
$sort_fields = array(
|
||||
'' => '',
|
||||
'date_creation' => l10n('Creation date'),
|
||||
'date_available' => l10n('Post date'),
|
||||
'average_rate' => l10n('Average rate'),
|
||||
'hit' => l10n('Most visited'),
|
||||
'file' => l10n('File name'),
|
||||
'id' => 'Id',
|
||||
'rank' => l10n('Rank'),
|
||||
);
|
||||
|
||||
$sort_directions = array(
|
||||
'ASC' => l10n('ascending'),
|
||||
'DESC' => l10n('descending'),
|
||||
);
|
||||
|
||||
$template->assign('image_order_field_options', $sort_fields);
|
||||
$template->assign('image_order_direction_options', $sort_directions);
|
||||
|
||||
$matches = array();
|
||||
if ( !empty( $category['image_order'] ) )
|
||||
{
|
||||
preg_match_all('/([a-z_]+) *(?:(asc|desc)(?:ending)?)? *(?:, *|$)/i',
|
||||
$category['image_order'], $matches);
|
||||
}
|
||||
|
||||
for ($i=0; $i<3; $i++) // 3 fields
|
||||
{
|
||||
$tpl_image_order_select = array(
|
||||
'ID' => $i+1,
|
||||
'FIELD' => array(''),
|
||||
'DIRECTION' => array('ASC'),
|
||||
);
|
||||
|
||||
if ( isset($matches[1][$i]) )
|
||||
{
|
||||
$tpl_image_order_select['FIELD'] = array($matches[1][$i]);
|
||||
}
|
||||
|
||||
if (isset($matches[2][$i]) and strcasecmp($matches[2][$i],'DESC')==0)
|
||||
{
|
||||
$tpl_image_order_select['DIRECTION'] = array('DESC');
|
||||
}
|
||||
$template->append( 'image_orders', $tpl_image_order_select);
|
||||
}
|
||||
|
||||
$template->assign('image_order_choice', $image_order_choice);
|
||||
|
||||
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | sending html code |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
@@ -293,6 +293,10 @@ FORM P {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
form p.field {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
FORM FIELDSET P {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 0;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"}
|
||||
{known_script id="jquery.ui" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.core.packed.js" }
|
||||
{known_script id="jquery.ui.sortable" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.sortable.packed.js" }
|
||||
|
||||
{html_head}
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
@@ -15,12 +15,14 @@
|
||||
$(this).find("input[name^=rank_of_image]")
|
||||
.each(function() { $(this).attr('value', (i+1)*10)});
|
||||
});
|
||||
$('#image_order_rank').attr('checked', true);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{/literal}
|
||||
{/html_head}
|
||||
|
||||
<h2>{'Manage image ranks'|@translate}</h2>
|
||||
|
||||
@@ -46,9 +48,35 @@
|
||||
</ul>
|
||||
{/if}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{'Sort order'|@translate}</legend>
|
||||
<p class="field">
|
||||
<input type="radio" name="image_order_choice" id="image_order_default" value="default"{if $image_order_choice=='default'} checked="checked"{/if}>
|
||||
<label for="image_order_default">{'Use the default image sort order (defined in the configuration file)'|@translate}</label>
|
||||
</p>
|
||||
<p class="field">
|
||||
<input type="radio" name="image_order_choice" id="image_order_rank" value="rank"{if $image_order_choice=='rank'} checked="checked"{/if}>
|
||||
<label for="image_order_rank">{'By rank'|@translate}</label>
|
||||
</p>
|
||||
<p class="field">
|
||||
<input type="radio" name="image_order_choice" id="image_order_user_define" value="user_define"{if $image_order_choice=='user_define'} checked="checked"{/if}>
|
||||
<label for="image_order_user_define">{'Manual order'|@translate}</label>
|
||||
{foreach from=$image_orders item=order}
|
||||
<p class="field">
|
||||
<select name="order_field_{$order.ID}">
|
||||
{html_options options=$image_order_field_options selected=$order.FIELD }
|
||||
</select>
|
||||
<select name="order_direction_{$order.ID}">
|
||||
{html_options options=$image_order_direction_options selected=$order.DIRECTION }
|
||||
</select>
|
||||
</p>
|
||||
{/foreach}
|
||||
</fieldset>
|
||||
<p><input class="submit" type="submit" value="{'Submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED}></p>
|
||||
</form>
|
||||
|
||||
|
||||
{else}
|
||||
<div class="infos"><p>{'No element in this category'|@translate}</p></div>
|
||||
{/if}
|
||||
|
||||
Reference in New Issue
Block a user