flop25 a écrit:
A ben ça c'est sur , il est vachement utilisé le site gna par les simples user de pwg. Doit y avoir 3 liens sur tout le site de pwg qui y ramène :/
On s'écarte du sujet de ce topic. Tu as parfaitement raison que l'inscription à cette mailing-list n'est pas "aisée". On y travaille pour le nouveau site qui viendra en même temps que la nouvelle version majeure. Promis, ce sera plus facile de s'inscrire.
A ben ça c'est sur , il est vachement utilisé le site gna par les simples user de pwg. Doit y avoir 3 liens sur tout le site de pwg qui y ramène :/
On voit que vous n'êtes pas inscrit à la mailing-list des annonces. annonce sortie de la 1.7.2, qui contient des infos sur la prochaine grosse sortie.
wop là ! calme !! J'ai un contrat de confidentialité ^^ dsl !
Franchement, ils ne savent pas eux même quand sortira la 1.8 : mais ce sera de sûr avant la fin de l'année. C'est pas trop me mouiller que de dire ça :p
flop25 a écrit:
A ce que j'en sais, la 1.8 va sortir dans pas si longtemps alors ...
t'en as trop dit ! faut preciser!
A ce que j'en sais, la 1.8 va sortir dans pas si longtemps alors ...
sakkhho a écrit:
pq cette modif n'est pas encore intégrée dans la 1.7.2 ??
parce qu'il y avait des nouvelles traductions... mais est-ce une raison suffisante?;-)
pq cette modif n'est pas encore intégrée dans la 1.7.2 ??
phibrunet a écrit:
La 1.8!?! Mais elle est où cette version?
Dans les cartons, c'est la future version majeure!
La 1.8!?! Mais elle est où cette version?
phibrunet a écrit:
Finalement ça n'a pas été mis sur la 1.7.1 cette modif?
Elle a été mise dans la 1.8, pas dans la 1.7.1 car il y avait des nouvelles traductions. (on essaie de ne pas mettre de nouvelles traductions et de modifications base de données entre les versions mineures)
non non je ne crois pas ... moi j ai gardé mes modifs dans les pages pour afficher les images comme dans ce poste et ca marche
Finalement ça n'a pas été mis sur la 1.7.1 cette modif?
Super, Merci beaucoup!
Pour la future 1.7.1 ou pour ceux qui ont installés Files statistics:
admin\history.php
<?php // +-----------------------------------------------------------------------+ // | PhpWebGallery - a PHP based picture gallery | // | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net | // | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net | // +-----------------------------------------------------------------------+ // | file : $Id: history.php 2156 2007-11-01 17:06:15Z rub $ // | last update : $Date: 2007-11-01 18:06:15 +0100 (jeu., 01 nov. 2007) $ // | last modifier : $Author: rub $ // | revision : $Revision: 2156 $ // +-----------------------------------------------------------------------+ // | 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. | // +-----------------------------------------------------------------------+ /** * Display filtered history lines */ // +-----------------------------------------------------------------------+ // | functions | // +-----------------------------------------------------------------------+ // +-----------------------------------------------------------------------+ // | initialization | // +-----------------------------------------------------------------------+ if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); } include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); include_once(PHPWG_ROOT_PATH.'admin/include/functions_history.inc.php'); if (isset($_GET['start']) and is_numeric($_GET['start'])) { $page['start'] = $_GET['start']; } else { $page['start'] = 0; } $types = array('none', 'picture', 'high', 'other'); // +-----------------------------------------------------------------------+ // | Check Access and exit when user status is not ok | // +-----------------------------------------------------------------------+ check_status(ACCESS_ADMINISTRATOR); // +-----------------------------------------------------------------------+ // | Build search criteria and redirect to results | // +-----------------------------------------------------------------------+ $page['errors'] = array(); $search = array(); if (isset($_POST['submit'])) { // dates if (!empty($_POST['start_year'])) { $search['fields']['date-after'] = sprintf( '%d-%02d-%02d', $_POST['start_year'], $_POST['start_month'], $_POST['start_day'] ); } if (!empty($_POST['end_year'])) { $search['fields']['date-before'] = sprintf( '%d-%02d-%02d', $_POST['end_year'], $_POST['end_month'], $_POST['end_day'] ); } if (empty($_POST['types'])) { $search['fields']['types'] = $types; } else { $search['fields']['types'] = $_POST['types']; } $search['fields']['user'] = $_POST['user']; if (!empty($_POST['image_id'])) { $search['fields']['image_id'] = intval($_POST['image_id']); } if (!empty($_POST['filename'])) { $search['fields']['filename'] = str_replace( '*', '%', mysql_escape_string($_POST['filename']) ); } // TODO manage inconsistency of having $_POST['image_id'] and // $_POST['filename'] simultaneously // echo '<pre>'; print_r($search); echo '</pre>'; if (!empty($search)) { // register search rules in database, then they will be available on // thumbnails page and picture page. $query =' INSERT INTO '.SEARCH_TABLE.' (rules) VALUES (\''.serialize($search).'\') ;'; pwg_query($query); $search_id = mysql_insert_id(); redirect( PHPWG_ROOT_PATH.'admin.php?page=history&search_id='.$search_id ); } else { array_push($page['errors'], $lang['search_one_clause_at_least']); } } // +-----------------------------------------------------------------------+ // | template init | // +-----------------------------------------------------------------------+ $template->set_filename('history', 'admin/history.tpl'); // TabSheet initialization history_tabsheet(); $base_url = PHPWG_ROOT_PATH.'admin.php?page=history'; $template->assign_vars( array( 'U_HELP' => PHPWG_ROOT_PATH.'popuphelp.php?page=history', 'F_ACTION' => PHPWG_ROOT_PATH.'admin.php?page=history' ) ); $template->assign_vars( array( 'TODAY_DAY' => date('d', time()), 'TODAY_MONTH' => date('m', time()), 'TODAY_YEAR' => date('Y', time()), ) ); // +-----------------------------------------------------------------------+ // | history lines | // +-----------------------------------------------------------------------+ if (isset($_GET['search_id']) and $page['search_id'] = (int)$_GET['search_id']) { // what are the lines to display in reality ? $query = ' SELECT rules FROM '.SEARCH_TABLE.' WHERE id = '.$page['search_id'].' ;'; list($serialized_rules) = mysql_fetch_row(pwg_query($query)); $page['search'] = unserialize($serialized_rules); if (isset($_GET['user_id'])) { if (!is_numeric($_GET['user_id'])) { die('user_id GET parameter must be an integer value'); } $page['search']['fields']['user'] = $_GET['user_id']; $query =' INSERT INTO '.SEARCH_TABLE.' (rules) VALUES (\''.serialize($page['search']).'\') ;'; pwg_query($query); $search_id = mysql_insert_id(); redirect( PHPWG_ROOT_PATH.'admin.php?page=history&search_id='.$search_id ); } $data = trigger_event('get_history', array(), $page['search'], $types); usort($data, 'history_compare'); $page['nb_lines'] = count($data); $history_lines = array(); $user_ids = array(); $username_of = array(); $category_ids = array(); $image_ids = array(); $tag_ids = array(); foreach ($data as $row) { $user_ids[$row['user_id']] = 1; if (isset($row['category_id'])) { $category_ids[$row['category_id']] = 1; } if (isset($row['image_id'])) { $image_ids[$row['image_id']] = 1; } if (isset($row['tag_ids'])) { foreach (explode(',', $row['tag_ids']) as $tag_id) { array_push($tag_ids, $tag_id); } } array_push( $history_lines, $row ); } // prepare reference data (users, tags, categories...) if (count($user_ids) > 0) { $query = ' SELECT '.$conf['user_fields']['id'].' AS id , '.$conf['user_fields']['username'].' AS username FROM '.USERS_TABLE.' WHERE id IN ('.implode(',', array_keys($user_ids)).') ;'; $result = pwg_query($query); $username_of = array(); while ($row = mysql_fetch_array($result)) { $username_of[$row['id']] = $row['username']; } } if (count($category_ids) > 0) { $query = ' SELECT id, uppercats FROM '.CATEGORIES_TABLE.' WHERE id IN ('.implode(',', array_keys($category_ids)).') ;'; $uppercats_of = simple_hash_from_query($query, 'id', 'uppercats'); $name_of_category = array(); foreach ($uppercats_of as $category_id => $uppercats) { $name_of_category[$category_id] = get_cat_display_name_cache( $uppercats ); } } if (count($image_ids) > 0) { $query = ' SELECT id, IF(name IS NULL, file, name) AS label, filesize, high_filesize, file, path, tn_ext FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', array_keys($image_ids)).') ;'; // $label_of_image = simple_hash_from_query($query, 'id', 'label'); $label_of_image = array(); $filesize_of_image = array(); $high_filesize_of_image = array(); $file_of_image = array(); $path_of_image = array(); $tn_ext_of_image = array(); $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $label_of_image[ $row['id'] ] = $row['label']; if (isset($row['filesize'])) { $filesize_of_image[ $row['id'] ] = $row['filesize']; } if (isset($row['high_filesize'])) { $high_filesize_of_image[ $row['id'] ] = $row['high_filesize']; } $file_of_image[ $row['id'] ] = $row['file']; $path_of_image[ $row['id'] ] = $row['path']; $tn_ext_of_image[ $row['id'] ] = $row['tn_ext']; } // echo '<pre>'; print_r($high_filesize_of_image); echo '</pre>'; } if (count($tag_ids) > 0) { $tag_ids = array_unique($tag_ids); $query = ' SELECT id, name FROM '.TAGS_TABLE.' WHERE id IN ('.implode(', ', $tag_ids).') ;'; $name_of_tag = array(); $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $name_of_tag[ $row['id'] ] = $row['name']; } } $i = 0; $first_line = $page['start'] + 1; $last_line = $page['start'] + $conf['nb_logs_page']; $summary['total_filesize'] = 0; $summary['guests_IP'] = array(); foreach ($history_lines as $line) { // FIXME when we watch the representative of a non image element, it is // the not the representative filesize that is counted (as it is // unknown) but the non image element filesize. Proposed solution: add // #images.representative_filesize and add 'representative' in the // choices of #history.image_type. if (isset($line['image_type'])) { if ($line['image_type'] == 'high') { if (isset($high_filesize_of_image[$line['image_id']])) { $summary['total_filesize']+= $high_filesize_of_image[$line['image_id']]; } } else { if (isset($filesize_of_image[$line['image_id']])) { $summary['total_filesize']+= $filesize_of_image[$line['image_id']]; } } } if ($line['user_id'] == $conf['guest_id']) { if (!isset($summary['guests_IP'][ $line['IP'] ])) { $summary['guests_IP'][ $line['IP'] ] = 0; } $summary['guests_IP'][ $line['IP'] ]++; } $i++; if ($i < $first_line or $i > $last_line) { continue; } $user_string = ''; if (isset($username_of[$line['user_id']])) { $user_string.= $username_of[$line['user_id']]; } else { $user_string.= $line['user_id']; } $user_string.= ' <a href="'; $user_string.= PHPWG_ROOT_PATH.'admin.php?page=history'; $user_string.= '&search_id='.$page['search_id']; $user_string.= '&user_id='.$line['user_id']; $user_string.= '">+</a>'; $tags_string = ''; if (isset($line['tag_ids'])) { $tags_string = preg_replace( '/(\d+)/e', '$name_of_tag["$1"]', str_replace( ',', ', ', $line['tag_ids'] ) ); } $image_string = ''; if (isset($line['image_id'])) { $picture_url = make_picture_url( array( 'image_id' => $line['image_id'], ) ); // <a class="thumbnail" href="#thumb">(1258)<span><img src="./galleries/category/thumbnail/th-dsc1258.png"></span></a> $element = array( 'id' => $line['image_id'], 'file' => $file_of_image[$line['image_id']], 'path' => $path_of_image[$line['image_id']], 'tn_ext' => $tn_ext_of_image[$line['image_id']], ); $image_string = ''; /* if (!isset($conf['history_no_thumb']) or $conf['history_no_thumb']) { $thumb_mode = "over"; if (isset($conf['history_no_hover']) and $conf['history_no_hover']) { $thumb_mode = "thumbnail"; }*/ $thumb_mode = "thumbnail"; $image_string = '<a class="'.$thumb_mode.'" href="#thumb">' .'('.$line['image_id'].') <span><img src="' . get_thumbnail_url( $element ) .'"></span></a><a href="'.$picture_url.'">'; /* } else { $image_string= '<a href="'.$picture_url.'">'; $image_string.= '('.$line['image_id'].')'; }*/ if (isset($label_of_image[$line['image_id']])) { $image_string.= ' '.$label_of_image[$line['image_id']]; } else { $image_string.= ' unknown filename'; } } $template->assign_block_vars( 'detail', array( 'DATE' => $line['date'], 'TIME' => $line['time'], 'USER' => $user_string, 'IP' => $line['IP'], 'IMAGE' => $image_string, 'TYPE' => $line['image_type'], 'SECTION' => $line['section'], 'CATEGORY' => isset($line['category_id']) ? ( isset($name_of_category[$line['category_id']]) ? $name_of_category[$line['category_id']] : 'deleted '.$line['category_id'] ) : '', 'TAGS' => $tags_string, 'T_CLASS' => ($i % 2) ? 'row1' : 'row2', ) ); } $summary['nb_guests'] = 0; if (count(array_keys($summary['guests_IP'])) > 0) { $summary['nb_guests'] = count(array_keys($summary['guests_IP'])); // we delete the "guest" from the $username_of hash so that it is // avoided in next steps unset($username_of[ $conf['guest_id'] ]); } $summary['nb_members'] = count($username_of); $member_strings = array(); foreach ($username_of as $user_id => $user_name) { $member_string = $user_name.' <a href="'; $member_string.= PHPWG_ROOT_PATH.'admin.php?page=history'; $member_string.= '&search_id='.$page['search_id']; $member_string.= '&user_id='.$user_id; $member_string.= '">+</a>'; $member_strings[] = $member_string; } $template->assign_block_vars( 'summary', array( 'NB_LINES' => l10n_dec( '%d line filtered', '%d lines filtered', $page['nb_lines'] ), 'FILESIZE' => $summary['total_filesize'].' KB', 'USERS' => l10n_dec( '%d user', '%d users', $summary['nb_members'] + $summary['nb_guests'] ), 'MEMBERS' => sprintf( l10n_dec('%d member', '%d members', $summary['nb_members']).': %s', implode( ', ', $member_strings ) ), 'GUESTS' => l10n_dec( '%d guest', '%d guests', $summary['nb_guests'] ), ) ); } // +-----------------------------------------------------------------------+ // | navigation bar | // +-----------------------------------------------------------------------+ if (isset($page['search_id'])) { $navbar = create_navigation_bar( PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start')), $page['nb_lines'], $page['start'], $conf['nb_logs_page'] ); $template->assign_block_vars( 'navigation', array( 'NAVBAR' => $navbar ) ); } // +-----------------------------------------------------------------------+ // | filter form | // +-----------------------------------------------------------------------+ $form = array(); if (isset($page['search'])) { if (isset($page['search']['fields']['date-after'])) { $tokens = explode('-', $page['search']['fields']['date-after']); $form['start_year'] = (int)$tokens[0]; $form['start_month'] = (int)$tokens[1]; $form['start_day'] = (int)$tokens[2]; } if (isset($page['search']['fields']['date-before'])) { $tokens = explode('-', $page['search']['fields']['date-before']); $form['end_year'] = (int)$tokens[0]; $form['end_month'] = (int)$tokens[1]; $form['end_day'] = (int)$tokens[2]; } $form['types'] = $page['search']['fields']['types']; if (isset($page['search']['fields']['user'])) { $form['user'] = $page['search']['fields']['user']; } else { $form['user'] = null; } $form['image_id'] = @$page['search']['fields']['image_id']; $form['filename'] = @$page['search']['fields']['filename']; } else { // by default, at page load, we want the selected date to be the current // date $form['start_year'] = $form['end_year'] = date('Y'); $form['start_month'] = $form['end_month'] = date('n'); $form['start_day'] = $form['end_day'] = date('j'); $form['types'] = $types; } // start date get_day_list('start_day', @$form['start_day']); get_month_list('start_month', @$form['start_month']); // end date get_day_list('end_day', @$form['end_day']); get_month_list('end_month', @$form['end_month']); $template->assign_vars( array( 'START_YEAR' => @$form['start_year'], 'END_YEAR' => @$form['end_year'], 'IMAGE_ID' => @$form['image_id'], 'FILENAME' => @$form['filename'], ) ); foreach ($types as $option) { $selected = ''; if (in_array($option, $form['types'])) { $selected = 'selected="selected"'; } $template->assign_block_vars( 'types_option', array( 'VALUE' => $option, 'CONTENT' => l10n($option), 'SELECTED' => $selected, ) ); } $template->assign_block_vars( 'user_option', array( 'VALUE'=> -1, 'CONTENT' => '------------', 'SELECTED' => '' ) ); $query = ' SELECT '.$conf['user_fields']['id'].' AS id, '.$conf['user_fields']['username'].' AS username FROM '.USERS_TABLE.' ORDER BY username ASC ;'; $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { $selected = ''; if (isset($form['user']) and $row['id'] == $form['user']) { $selected = 'selected="selected"'; } $template->assign_block_vars( 'user_option', array( 'VALUE' => $row['id'], 'CONTENT' => $row['username'], 'SELECTED' => $selected, ) ); } // +-----------------------------------------------------------------------+ // | html code display | // +-----------------------------------------------------------------------+ $template->assign_var_from_handle('ADMIN_CONTENT', 'history'); ?>
template\yoga\admin\default-layout.css
/* $Id: */ BODY#theAdminPage #theHeader P { display: none; } /* History tables */ TABLE.table2 { border: 1px solid black; margin: 1em auto; padding: 0; } TABLE.table2 TD, TABLE.table2 TH { padding: 0 1em; } TABLE.table2 TR { text-align: left; } TABLE.table2 TR.throw { text-align: center; } .hour { white-space: pre; } .number { text-align: right; } TABLE#dailyStats { width: 60%; } TABLE#detailedStats { width: 99%; } /* categoryOrdering */ SELECT.categoryList { width: 100%; } FORM#categoryOrdering { padding-left: 1em; /* same as FIELDSET margin (there is no fieldset in this form) */ padding-right: 1em; /* same as FIELDSET margin (there is no fieldset in this form) */ } FORM#categoryOrdering p { text-align: left; margin-top: 1em; margin-bottom: 1em; } UL.categoryUl { list-style: none; padding: 0; margin: 0; } LI.categoryLi { border: 1px solid gray; padding: 0px 5px; margin-bottom: 5px; } FORM#categoryOrdering UL.categoryActions { float: right; margin-top: 5px; } /* */ FORM#catModify TABLE { width: auto; } FIELDSET.elementEdit A { display: block; float: right; } TABLE.doubleSelect { text-align: center; margin: 0 auto; width: 100%; } TABLE.doubleSelect TD { padding: 0 5px; width: 50%; } TABLE.doubleSelect SELECT.categoryList { width: 100%; } FORM#categoryPermissions LI { display:inline; white-space: nowrap; } FIELDSET#mainConfCheck SPAN.property, FIELDSET#historyConf SPAN.property, FIELDSET#commentsConf SPAN.property { float: right; text-align: left; } FIELDSET#mainConfCheck INPUT, FIELDSET#historyConf INPUT, FIELDSET#commentsConf INPUT { float: none; } FIELDSET#mainConf SPAN.property { width: 25%; } FIELDSET#mainConf TEXTAREA.description { width: 70%; } FIELDSET#mainConfCheck SPAN.property, FIELDSET#historyConf SPAN.property { width: 90%; } FIELDSET#mainConfCheck INPUT, FIELDSET#historyConf INPUT { margin-left: 5%; } FIELDSET#commentsConf SPAN.property { width: 85%; } FIELDSET#commentsConf INPUT { margin-left: 5%; } /* PWG Links Menu is fixed Graphic charts */ .pwgmenu { display: table; list-style-type: none; list-style-image: none; /* for firefox */ white-space: nowrap; position: relative; text-decoration : none; font-family: verdana, arial, helvetica, sans-serif; font-size: 70%; line-height: 1.1em; width: 66em; margin: 1px 8px 1px auto; padding: 3px; background: transparent; } .pwgmenu li { float: left; width: 10em !important; text-align: center; margin: 0 6px; padding: 0; } .pwgmenu a { width: 9em !important; display: block; padding: 4px 8px; background: #69c; /* PWG Graphic charts */ color: white; text-align: center; text-decoration: none; font-weight: bold; border: 1px solid #fff; /* Why bordered? in case of #69c background */ } .pwgmenu a:hover { background: #f92; color: white; } /* PWG Graphic charts */ .statBar { height: 10px; background-color: #66f; border: 1px solid black; } /* Tabsheet */ ul.tabsheet { display: table; list-style-type: none; list-style-image: none; /* for firefox */ white-space: nowrap; margin-left: auto; margin-right: auto; text-decoration : none; background: transparent; border-bottom: 1px solid #fff; } ul.tabsheet li { float: left; text-align: center; margin: 0 6px; color: white; font-size: 110%; font-weight: bold; padding: 4px 8px; border: 1px solid #fff; border-radius: 6px 6px 0px 0px; /* round corners with CSS3 compliant browsers */ padding: 5px 2em 2px 2em; } .over{ position: relative; z-index: 0; } .over:hover{ background-color: transparent; z-index: 50; } .over span{ /*CSS for enlarged image*/ position: absolute; background-color: #eee; padding: 5px; left: -1000px; border: 1px solid #69c; visibility: hidden; color: black; text-decoration: none; } .over span img{ /*CSS for enlarged image*/ border-width: 0; padding: 2px; } .over:hover span{ /*CSS for enlarged image on hover*/ visibility: visible; top: 0; left: 60px; /*position where enlarged image should offset horizontally */ }