source: trunk/include/functions_html.inc.php @ 635

Last change on this file since 635 was 614, checked in by plg, 20 years ago
  • global categories' options : instead of N horizontal tabs on a single page, N options in the left menu (but the same backend)
  • categories.global_rank : new calculated field. It gives a global rank of the category among all others (updated during ordering)
  • category.php page : menu is generated faster thanks to categories.global_rank, recursivity becomes useless :-)
  • new function to display select box with a set of categories : display_select_cat_wrapper
  • cat_options : instead of using 1 multiselect for true/false items, using 1 multiselect for true, and another one for false. The form provides buttons with arrows to switch categories from one multiselect to another
  • deletion of obsolete function display_categories (working with the old template system)
  • deletion of obsolete functions get_user_plain_structure, create_user_structure, get_user_subcat_ids, update_structure, count_images : useless thanks to global_rank
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.3 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | PhpWebGallery - a PHP based picture gallery                           |
4// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
5// | Copyright (C) 2003-2004 PhpWebGallery Team - http://phpwebgallery.net |
6// +-----------------------------------------------------------------------+
7// | branch        : BSF (Best So Far)
8// | file          : $RCSfile$
9// | last update   : $Date: 2004-11-23 22:31:24 +0000 (Tue, 23 Nov 2004) $
10// | last modifier : $Author: plg $
11// | revision      : $Revision: 614 $
12// +-----------------------------------------------------------------------+
13// | This program is free software; you can redistribute it and/or modify  |
14// | it under the terms of the GNU General Public License as published by  |
15// | the Free Software Foundation                                          |
16// |                                                                       |
17// | This program is distributed in the hope that it will be useful, but   |
18// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
19// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
20// | General Public License for more details.                              |
21// |                                                                       |
22// | You should have received a copy of the GNU General Public License     |
23// | along with this program; if not, write to the Free Software           |
24// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
25// | USA.                                                                  |
26// +-----------------------------------------------------------------------+
27
28function get_icon( $date )
29{
30  global $user, $conf, $lang;
31
32  if (!preg_match('/\d{4}-\d{2}-\d{2}/', $date))
33  {
34    return '';
35  }
36
37  list( $year,$month,$day ) = explode( '-', $date );
38  $unixtime = mktime( 0, 0, 0, $month, $day, $year );
39 
40  $diff = time() - $unixtime;
41  $day_in_seconds = 24*60*60;
42  $output = '';
43  $title = $lang['recent_image'].'&nbsp;';
44  if ( $diff < $user['recent_period'] * $day_in_seconds )
45  {
46    $icon_url = './template/'.$user['template'].'/theme/';
47    $icon_url.= 'recent.gif';
48    $title .= $user['recent_period'];
49    $title .=  '&nbsp;'.$lang['days'];
50    $size = getimagesize( $icon_url );
51    $output = '<img title="'.$title.'" src="'.$icon_url.'" style="border:0;';
52    $output.= 'height:'.$size[1].'px;width:'.$size[0].'px" alt="" />';
53  }
54  return $output;
55}
56
57function create_navigation_bar( $url, $nb_element, $start,
58                                $nb_element_page, $link_class )
59{
60  global $lang;
61  $navigation_bar = "";
62  // 0. détection de la page en cours
63  if( !isset( $start )
64      || !is_numeric( $start )
65      || ( is_numeric( $start ) && $start < 0 ) )
66  {
67    $start = 0;
68  }
69  // on n'affiche la bare de navigation que si on plus de 1 page
70  if ( $nb_element > $nb_element_page )
71  {
72    // 1.une page précédente ?
73    if ( $start != 0 )
74    {
75      $previous = $start - $nb_element_page;
76      $navigation_bar.= '<a href="';
77      $navigation_bar.= add_session_id( $url.'&amp;start='.$previous );
78      $navigation_bar.= '" class="'.$link_class.'">'.$lang['previous_page'];
79      $navigation_bar.= '</a>';
80      $navigation_bar.= ' | ';
81    }
82    // 2.liste des numéros de page
83    $maximum = ceil ( $nb_element / $nb_element_page );
84    for ( $i = 1; $i <= $maximum; $i++ )
85    {
86      $temp_start = ( $i - 1 ) * $nb_element_page;
87      if ( $temp_start == $start )
88      {
89        $navigation_bar.= ' <span class="pageNumberSelected">'.$i.'</span> ';
90      }
91      else
92      {
93        $navigation_bar.= ' <a href="';
94        $navigation_bar.= add_session_id( $url.'&amp;start='.$temp_start );
95        $navigation_bar.= '" class="'.$link_class.'">'.$i.'</a> ';
96      }
97    }
98    // 3.une page suivante ?
99    if ( $nb_element > $nb_element_page
100         && $start + $nb_element_page < $nb_element )
101    {
102      $next = $start + $nb_element_page;
103      $navigation_bar.= ' | <a href="';
104      $navigation_bar.= add_session_id( $url.'&amp;start='.$next );
105      $navigation_bar.= '" class="'.$link_class.'">'.$lang['next_page'].'</a>';
106    }
107  }
108  return $navigation_bar;
109}
110
111//
112// Pick a language, any language ...
113//
114function language_select($default, $select_name = "language")
115{
116  $available_lang = get_languages();
117
118  $lang_select = '<select name="' . $select_name . '" onchange="this.form.submit()">';
119  foreach ($available_lang as $code => $displayname)
120  {
121    $selected = ( strtolower($default) == strtolower($code) ) ? ' selected="selected"' : '';
122    $lang_select .= '<option value="' . $code . '"' . $selected . '>' . ucwords($displayname) . '</option>';
123  }
124  $lang_select .= '</select>';
125
126  return $lang_select;
127}
128
129//
130// Pick a template/theme combo,
131//
132function style_select($default_style, $select_name = "style")
133{
134  $templates = get_templates();
135
136  $style_selected = '<select name="' . $select_name . '" >';
137  foreach ($templates as $template)
138  {
139    $selected = ( $template == $default_style ) ? ' selected="selected"' : '';
140    $style_selected.= '<option value="'.$template.'"'.$selected.'>';
141    $style_selected.= $template.'</option>';
142  }
143  $style_selected .= '</select>';
144  return $style_selected;
145}
146
147/**
148 * returns the list of categories as a HTML string
149 *
150 * categories string returned contains categories as given in the input
151 * array $cat_informations. $cat_informations array must be an association
152 * of {category_id => category_name}. If url input parameter is empty,
153 * returns only the categories name without links.
154 *
155 * @param array cat_informations
156 * @param string separator
157 * @param string url
158 * @param boolean replace_space
159 * @return string
160 */
161function get_cat_display_name($cat_informations,
162                              $separator, 
163                              $url = 'category.php?cat=',
164                              $replace_space = true)
165{
166  $output = '';
167  $is_first = true;
168  foreach ($cat_informations as $id => $name)
169  {
170    if ($is_first)
171    {
172      $is_first = false;
173    }
174    else
175    {
176      $output.= $separator;
177    }
178
179    if ($url == '')
180    {
181      $output.= $name;
182    }
183    else
184    {
185      $output.= '
186<a class="" href="'.add_session_id(PHPWG_ROOT_PATH.$url.$id).'">'.$name.'</a>';
187    }
188  }
189  if ($replace_space)
190  {
191    return replace_space($output);
192  }
193  else
194  {
195    return $output;
196  }
197}
198
199/**
200 * returns the list of categories as a HTML string, with cache of names
201 *
202 * categories string returned contains categories as given in the input
203 * array $cat_informations. $uppercats is the list of category ids to
204 * display in the right order. If url input parameter is empty, returns only
205 * the categories name without links.
206 *
207 * @param string uppercats
208 * @param string separator
209 * @param string url
210 * @param boolean replace_space
211 * @return string
212 */
213function get_cat_display_name_cache($uppercats,
214                                    $separator,
215                                    $url = 'category.php?cat=',
216                                    $replace_space = true)
217{
218  global $cat_names;
219
220  if (!isset($cat_names))
221  {
222    $query = '
223SELECT id,name
224  FROM '.CATEGORIES_TABLE.'
225;';
226    $result = pwg_query($query);
227    while ($row = mysql_fetch_array($result))
228    {
229      $cat_names[$row['id']] = $row['name'];
230    }
231  }
232 
233  $output = '';
234  $is_first = true;
235  foreach (explode(',', $uppercats) as $category_id)
236  {
237    $name = $cat_names[$category_id];
238   
239    if ($is_first)
240    {
241      $is_first = false;
242    }
243    else
244    {
245      $output.= $separator;
246    }
247
248    if ($url == '')
249    {
250      $output.= $name;
251    }
252    else
253    {
254      $output.= '
255<a class=""
256   href="'.add_session_id(PHPWG_ROOT_PATH.$url.$category_id).'">'.$name.'</a>';
257    }
258  }
259  if ($replace_space)
260  {
261    return replace_space($output);
262  }
263  else
264  {
265    return $output;
266  }
267}
268
269/**
270 * returns the HTML code for a category item in the menu (for category.php)
271 *
272 * HTML code generated uses logical list tags ul and each category is an
273 * item li. The paramter given is the category informations as an array,
274 * used keys are : id, name, nb_images, date_last
275 *
276 * @param array categories
277 * @return string
278 */
279function get_html_menu_category($categories)
280{
281  global $page, $lang;
282
283  $ref_level = 0;
284  $menu = '
285             <ul class="menu">';
286 
287  foreach ($categories as $category)
288  {
289    $level = substr_count($category['global_rank'], '.');
290    if ($level > $ref_level)
291    {
292      $menu.= '
293             <ul class="menu">';
294    }
295    else if ($level < $ref_level)
296    {
297      $menu.= '
298             </ul>';
299    }
300    $ref_level = $level;
301   
302    $menu.= '
303
304           <li>';
305 
306    $url = add_session_id(PHPWG_ROOT_PATH.'category.php?cat='.$category['id']);
307
308    $class = '';
309    if (isset($page['cat'])
310        and is_numeric($page['cat'])
311        and $category['id'] == $page['cat'])
312    {
313      $class = 'menuCategorySelected';
314    }
315    else
316    {
317      $class = 'menuCategoryNotSelected';
318    }
319
320    $menu.= '
321           <a href="'.$url.'"
322              title="'.$lang['hint_category'].'"
323              class="'.$class.'">
324             '.$category['name'].'
325           </a>';
326
327    if ($category['nb_images'] > 0)
328    {
329      $menu.= '
330             <span class="menuInfoCat"
331                   title="'.$category['nb_images'].'
332                          '.$lang['images_available'].'">
333             ['.$category['nb_images'].']
334             </span>
335             '.get_icon($category['date_last']);
336    }
337
338    $menu.= '</li>';
339  }
340 
341  $menu.= '
342             </ul>';
343 
344  return $menu;
345}
346
347/**
348 * returns HTMLized comment contents retrieved from database
349 *
350 * newlines becomes br tags, _word_ becomes underline, /word/ becomes
351 * italic, *word* becomes bolded
352 *
353 * @param string content
354 * @return string
355 */
356function parse_comment_content($content)
357{
358  $content = nl2br($content);
359 
360  // replace _word_ by an underlined word
361  $pattern = '/_([^\s]*)_/';
362  $replacement = '<span style="text-decoration:underline;">\1</span>';
363  $content = preg_replace($pattern, $replacement, $content);
364 
365  // replace *word* by a bolded word
366  $pattern = '/\*([^\s]*)\*/';
367  $replacement = '<span style="font-weight:bold;">\1</span>';
368  $content = preg_replace($pattern, $replacement, $content);
369 
370  // replace /word/ by an italic word
371  $pattern = '/\/([^\s]*)\//';
372  $replacement = '<span style="font-style:italic;">\1</span>';
373  $content = preg_replace($pattern, $replacement, $content);
374
375  return $content;
376}
377?>
Note: See TracBrowser for help on using the repository browser.