From b3ef6a900d2cdad870d8e64a00761ff9fc1cc52f Mon Sep 17 00:00:00 2001 From: flop25 Date: Wed, 20 Apr 2011 18:17:28 +0000 Subject: merge r10513 from trunk to branch 2.2 check if there is thumbnails git-svn-id: http://piwigo.org/svn/branches/2.2@10514 68402e56-0260-453c-a942-63ccdbb3a9ee --- element_set_ranks.php | 326 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 element_set_ranks.php diff --git a/element_set_ranks.php b/element_set_ranks.php new file mode 100644 index 000000000..05576777e --- /dev/null +++ b/element_set_ranks.php @@ -0,0 +1,326 @@ + $category_id, + 'image_id' => $id, + 'rank' => ++$current_rank, + ) + ); + } + $fields = array( + 'primary' => array('image_id', 'category_id'), + 'update' => array('rank') + ); + mass_updates(IMAGE_CATEGORY_TABLE, $fields, $datas); +} + +// +-----------------------------------------------------------------------+ +// | global mode form submission | +// +-----------------------------------------------------------------------+ + +$image_order_choices = array('default', 'rank', 'user_define'); +$image_order_choice = 'default'; + +if (isset($_POST['submit'])) +{ + if (isset($_POST['rank_of_image'])) + { + asort($_POST['rank_of_image'], SORT_NUMERIC); + + save_images_order( + $page['category_id'], + array_keys($_POST['rank_of_image']) + ); + + array_push( + $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); + + if (isset($_POST['image_order_subcats'])) + { + $cat_info = get_cat_info($page['category_id']); + + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET image_order = '.(isset($image_order) ? '\''.$image_order.'\'' : 'NULL').' + WHERE uppercats LIKE \''.$cat_info['uppercats'].',%\''; + pwg_query($query); + } + + array_push($page['infos'], l10n('Your configuration settings are saved')); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ +$template->set_filenames( + array('element_set_ranks' => 'element_set_ranks.tpl') + ); + +$base_url = get_root_url().'admin.php'; + +$query = ' +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'], + get_root_url().'admin.php?page=cat_modify&cat_id=' + ); + +$template->assign( + array( + 'CATEGORIES_NAV' => $navigation, + 'F_ACTION' => $base_url.get_query_string_diff(array()), + ) + ); + +// +-----------------------------------------------------------------------+ +// | thumbnails | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT + id, + file, + path, + tn_ext, + name, + rank + FROM '.IMAGES_TABLE.' + JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id + WHERE category_id = '.$page['category_id'].' + ORDER BY rank +;'; +$result = pwg_query($query); +if (pwg_db_num_rows($result) > 0) +{ + // template thumbnail initialization + $current_rank = 1; + $thumbnail_info=array(); + $clipping=array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $src = get_thumbnail_url($row); + + $thumbnail_size = getimagesize($src); + if ( !empty( $row['name'] ) ) + { + $thumbnail_name = $row['name']; + } + else + { + $file_wo_ext = get_filename_wo_extension($row['file']); + $thumbnail_name = str_replace('_', ' ', $file_wo_ext); + } + $thumbnail_info[] = array( + 'name' => $thumbnail_name, + 'width' => $thumbnail_size[0], + 'height' => $thumbnail_size[1], + 'id' => $row['id'], + 'tn_src' => $src, + 'rank' => $current_rank * 10, + ); + if ($thumbnail_size[0]<=128 and $thumbnail_size[1]<=128) + { + $clipping[]= min($thumbnail_size[0],$thumbnail_size[1]); + } + else + { + $clipping[]= min($thumbnail_size[0]*0.75,$thumbnail_size[1]*0.75); + } + $current_rank++; + } + $clipping=array_sum($clipping)/count($clipping); + foreach ($thumbnail_info as $thumbnails_info) + { + $thumbnail_x_center = $thumbnails_info['width']/2; + $thumbnail_y_center = $thumbnails_info['height']/2; + $template->append( + 'thumbnails', + array( + 'ID' => $thumbnails_info['id'], + 'NAME' => $thumbnails_info['name'], + 'TN_SRC' => $thumbnails_info['tn_src'], + 'RANK' => $thumbnails_info['rank'], + 'CLIPING' => round($clipping), + 'CLIPING_li' => round($clipping+8), + 'CLIP_TOP' => round($thumbnail_y_center - $clipping/2), + 'CLIP_RIGHT' => round($thumbnail_x_center + $clipping/2), + 'CLIP_BOTTOM' => round($thumbnail_y_center + $clipping/2), + 'CLIP_LEFT' => round($thumbnail_x_center - $clipping/2) + ) + ); + } +} +// 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 | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'element_set_ranks'); +?> -- cgit v1.2.3