annotate forum/Themes/default/GenericList.template.php @ 78:96118bc49f04 website

Add RGU-MFS
author Chris Cannam
date Thu, 17 Oct 2013 09:22:53 +0100
parents e3e11437ecea
children
rev   line source
Chris@76 1 <?php
Chris@76 2 /**
Chris@76 3 * Simple Machines Forum (SMF)
Chris@76 4 *
Chris@76 5 * @package SMF
Chris@76 6 * @author Simple Machines
Chris@76 7 * @copyright 2011 Simple Machines
Chris@76 8 * @license http://www.simplemachines.org/about/smf/license.php BSD
Chris@76 9 *
Chris@76 10 * @version 2.0
Chris@76 11 */
Chris@76 12
Chris@76 13 function template_show_list($list_id = null)
Chris@76 14 {
Chris@76 15 global $context, $settings, $options, $scripturl, $txt, $modSettings;
Chris@76 16
Chris@76 17 // Get a shortcut to the current list.
Chris@76 18 $list_id = $list_id === null ? $context['default_list'] : $list_id;
Chris@76 19 $cur_list = &$context[$list_id];
Chris@76 20
Chris@76 21 // These are the main tabs that is used all around the template.
Chris@76 22 if (!empty($settings['use_tabs']) && isset($cur_list['list_menu'], $cur_list['list_menu']['show_on']) && ($cur_list['list_menu']['show_on'] == 'both' || $cur_list['list_menu']['show_on'] == 'top'))
Chris@76 23 template_create_list_menu($cur_list['list_menu'], 'top');
Chris@76 24
Chris@76 25 if (isset($cur_list['form']))
Chris@76 26 echo '
Chris@76 27 <form action="', $cur_list['form']['href'], '" method="post"', empty($cur_list['form']['name']) ? '' : ' name="' . $cur_list['form']['name'] . '" id="' . $cur_list['form']['name'] . '"', ' accept-charset="', $context['character_set'], '">
Chris@76 28 <div class="generic_list">';
Chris@76 29
Chris@76 30 // Show the title of the table (if any).
Chris@76 31 if (!empty($cur_list['title']))
Chris@76 32 echo '
Chris@76 33 <div class="title_bar clear_right">
Chris@76 34 <h3 class="titlebg">
Chris@76 35 ', $cur_list['title'], '
Chris@76 36 </h3>
Chris@76 37 </div>';
Chris@76 38 // This is for the old style menu with the arrows "> Test | Test 1"
Chris@76 39 if (empty($settings['use_tabs']) && isset($cur_list['list_menu'], $cur_list['list_menu']['show_on']) && ($cur_list['list_menu']['show_on'] == 'both' || $cur_list['list_menu']['show_on'] == 'top'))
Chris@76 40 template_create_list_menu($cur_list['list_menu'], 'top');
Chris@76 41
Chris@76 42 if (isset($cur_list['additional_rows']['top_of_list']))
Chris@76 43 template_additional_rows('top_of_list', $cur_list);
Chris@76 44
Chris@76 45 if (isset($cur_list['additional_rows']['after_title']))
Chris@76 46 {
Chris@76 47 echo '
Chris@76 48 <div class="information flow_hidden">';
Chris@76 49 template_additional_rows('after_title', $cur_list);
Chris@76 50 echo '
Chris@76 51 </div>';
Chris@76 52 }
Chris@76 53
Chris@76 54 if (!empty($cur_list['items_per_page']) || isset($cur_list['additional_rows']['bottom_of_list']))
Chris@76 55 {
Chris@76 56 echo '
Chris@76 57 <div class="flow_auto">';
Chris@76 58
Chris@76 59 // Show the page index (if this list doesn't intend to show all items).
Chris@76 60 if (!empty($cur_list['items_per_page']))
Chris@76 61 echo '
Chris@76 62 <div class="floatleft">
Chris@76 63 <div class="pagesection">', $txt['pages'], ': ', $cur_list['page_index'], '</div>
Chris@76 64 </div>';
Chris@76 65
Chris@76 66 if (isset($cur_list['additional_rows']['above_column_headers']))
Chris@76 67 {
Chris@76 68 echo '
Chris@76 69 <div class="floatright">';
Chris@76 70
Chris@76 71 template_additional_rows('above_column_headers', $cur_list);
Chris@76 72
Chris@76 73 echo '
Chris@76 74 </div>';
Chris@76 75 }
Chris@76 76
Chris@76 77 echo '
Chris@76 78 </div>';
Chris@76 79 }
Chris@76 80
Chris@76 81 echo '
Chris@76 82 <table class="table_grid" cellspacing="0" width="', !empty($cur_list['width']) ? $cur_list['width'] : '100%', '">';
Chris@76 83
Chris@76 84 // Show the column headers.
Chris@76 85 $header_count = count($cur_list['headers']);
Chris@76 86 if (!($header_count < 2 && empty($cur_list['headers'][0]['label'])))
Chris@76 87 {
Chris@76 88 echo '
Chris@76 89 <thead>
Chris@76 90 <tr class="catbg">';
Chris@76 91
Chris@76 92 // Loop through each column and add a table header.
Chris@76 93 $i = 0;
Chris@76 94 foreach ($cur_list['headers'] as $col_header)
Chris@76 95 {
Chris@76 96 $i ++;
Chris@76 97 if (empty($col_header['class']) && $i == 1)
Chris@76 98 $col_header['class'] = 'first_th';
Chris@76 99 elseif (empty($col_header['class']) && $i == $header_count)
Chris@76 100 $col_header['class'] = 'last_th';
Chris@76 101
Chris@76 102 echo '
Chris@76 103 <th scope="col"', empty($col_header['class']) ? '' : ' class="' . $col_header['class'] . '"', empty($col_header['style']) ? '' : ' style="' . $col_header['style'] . '"', empty($col_header['colspan']) ? '' : ' colspan="' . $col_header['colspan'] . '"', '>', empty($col_header['href']) ? '' : '<a href="' . $col_header['href'] . '" rel="nofollow">', empty($col_header['label']) ? '&nbsp;' : $col_header['label'], empty($col_header['href']) ? '' : '</a>', empty($col_header['sort_image']) ? '' : ' <img src="' . $settings['images_url'] . '/sort_' . $col_header['sort_image'] . '.gif" alt="" />', '</th>';
Chris@76 104 }
Chris@76 105
Chris@76 106 echo '
Chris@76 107 </tr>
Chris@76 108 </thead>
Chris@76 109 <tbody>';
Chris@76 110 }
Chris@76 111
Chris@76 112 // Show a nice message informing there are no items in this list.
Chris@76 113 if (empty($cur_list['rows']) && !empty($cur_list['no_items_label']))
Chris@76 114 echo '
Chris@76 115 <tr>
Chris@76 116 <td class="windowbg" colspan="', $cur_list['num_columns'], '" align="', !empty($cur_list['no_items_align']) ? $cur_list['no_items_align'] : 'center', '"><div class="padding">', $cur_list['no_items_label'], '</div></td>
Chris@76 117 </tr>';
Chris@76 118
Chris@76 119 // Show the list rows.
Chris@76 120 elseif (!empty($cur_list['rows']))
Chris@76 121 {
Chris@76 122 $alternate = false;
Chris@76 123 foreach ($cur_list['rows'] as $id => $row)
Chris@76 124 {
Chris@76 125 echo '
Chris@76 126 <tr class="windowbg', $alternate ? '2' : '', '" id="list_', $list_id, '_', $id, '">';
Chris@76 127
Chris@76 128 foreach ($row as $row_data)
Chris@76 129 echo '
Chris@76 130 <td', empty($row_data['class']) ? '' : ' class="' . $row_data['class'] . '"', empty($row_data['style']) ? '' : ' style="' . $row_data['style'] . '"', '>', $row_data['value'], '</td>';
Chris@76 131
Chris@76 132 echo '
Chris@76 133 </tr>';
Chris@76 134
Chris@76 135 $alternate = !$alternate;
Chris@76 136 }
Chris@76 137 }
Chris@76 138
Chris@76 139 echo '
Chris@76 140 </tbody>
Chris@76 141 </table>';
Chris@76 142
Chris@76 143 if (!empty($cur_list['items_per_page']) || isset($cur_list['additional_rows']['below_table_data']) || isset($cur_list['additional_rows']['bottom_of_list']))
Chris@76 144 {
Chris@76 145 echo '
Chris@76 146 <div class="flow_auto">';
Chris@76 147
Chris@76 148 // Show the page index (if this list doesn't intend to show all items).
Chris@76 149 if (!empty($cur_list['items_per_page']))
Chris@76 150 echo '
Chris@76 151 <div class="floatleft">
Chris@76 152 <div class="pagesection">', $txt['pages'], ': ', $cur_list['page_index'], '</div>
Chris@76 153 </div>';
Chris@76 154
Chris@76 155 if (isset($cur_list['additional_rows']['below_table_data']))
Chris@76 156 {
Chris@76 157 echo '
Chris@76 158 <div class="floatright">';
Chris@76 159
Chris@76 160 template_additional_rows('below_table_data', $cur_list);
Chris@76 161
Chris@76 162 echo '
Chris@76 163 </div>';
Chris@76 164 }
Chris@76 165
Chris@76 166 if (isset($cur_list['additional_rows']['bottom_of_list']))
Chris@76 167 {
Chris@76 168 echo '
Chris@76 169 <div class="floatright">';
Chris@76 170
Chris@76 171 template_additional_rows('bottom_of_list', $cur_list);
Chris@76 172
Chris@76 173 echo '
Chris@76 174 </div>';
Chris@76 175 }
Chris@76 176
Chris@76 177 echo '
Chris@76 178 </div>';
Chris@76 179 }
Chris@76 180
Chris@76 181 if (isset($cur_list['form']))
Chris@76 182 {
Chris@76 183 foreach ($cur_list['form']['hidden_fields'] as $name => $value)
Chris@76 184 echo '
Chris@76 185 <input type="hidden" name="', $name, '" value="', $value, '" />';
Chris@76 186
Chris@76 187 echo '
Chris@76 188 </div>
Chris@76 189 </form>';
Chris@76 190 }
Chris@76 191
Chris@76 192 // Tabs at the bottom. Usually bottom alligned.
Chris@76 193 if (!empty($settings['use_tabs']) && isset($cur_list['list_menu'], $cur_list['list_menu']['show_on']) && ($cur_list['list_menu']['show_on'] == 'both' || $cur_list['list_menu']['show_on'] == 'bottom'))
Chris@76 194 template_create_list_menu($cur_list['list_menu'], 'bottom');
Chris@76 195
Chris@76 196 if (isset($cur_list['javascript']))
Chris@76 197 echo '
Chris@76 198 <script type="text/javascript"><!-- // --><![CDATA[
Chris@76 199 ', $cur_list['javascript'], '
Chris@76 200 // ]]></script>';
Chris@76 201 }
Chris@76 202
Chris@76 203 function template_additional_rows($row_position, $cur_list)
Chris@76 204 {
Chris@76 205 global $context, $settings, $options;
Chris@76 206
Chris@76 207 foreach ($cur_list['additional_rows'][$row_position] as $row)
Chris@76 208 echo '
Chris@76 209 <div class="additional_row', empty($row['class']) ? '' : ' ' . $row['class'], '"', empty($row['style']) ? '' : ' style="' . $row['style'] . '"', '>', $row['value'], '</div>';
Chris@76 210 }
Chris@76 211
Chris@76 212 function template_create_list_menu($list_menu, $direction = 'top')
Chris@76 213 {
Chris@76 214 global $context, $settings;
Chris@76 215
Chris@76 216 /**
Chris@76 217 // This is use if you want your generic lists to have tabs.
Chris@76 218 $cur_list['list_menu'] = array(
Chris@76 219 // This is the style to use. Tabs or Buttons (Text 1 | Text 2).
Chris@76 220 // By default tabs are selected if not set.
Chris@76 221 // The main difference between tabs and buttons is that tabs get highlighted if selected.
Chris@76 222 // If style is set to buttons and use tabs is diabled then we change the style to old styled tabs.
Chris@76 223 'style' => 'tabs',
Chris@76 224 // The posisiton of the tabs/buttons. Left or Right. By default is set to left.
Chris@76 225 'position' => 'left',
Chris@76 226 // This is used by the old styled menu. We *need* to know the total number of columns to span.
Chris@76 227 'columns' => 0,
Chris@76 228 // This gives you the option to show tabs only at the top, bottom or both.
Chris@76 229 // By default they are just shown at the top.
Chris@76 230 'show_on' => 'top',
Chris@76 231 // Links. This is the core of the array. It has all the info that we need.
Chris@76 232 'links' => array(
Chris@76 233 'name' => array(
Chris@76 234 // This will tell use were to go when they click it.
Chris@76 235 'href' => $scripturl . '?action=theaction',
Chris@76 236 // The name that you want to appear for the link.
Chris@76 237 'label' => $txt['name'],
Chris@76 238 // If we use tabs instead of buttons we highlight the current tab.
Chris@76 239 // Must use conditions to determine if its selected or not.
Chris@76 240 'is_selected' => isset($_REQUEST['name']),
Chris@76 241 ),
Chris@76 242 ),
Chris@76 243 );
Chris@76 244 */
Chris@76 245
Chris@76 246 // Are we using right-to-left orientation?
Chris@76 247 $first = $context['right_to_left'] ? 'last' : 'first';
Chris@76 248 $last = $context['right_to_left'] ? 'first' : 'last';
Chris@76 249
Chris@76 250 // Tabs take preference over buttons in certain cases.
Chris@76 251 if (empty($settings['use_tabs']) && $list_menu['style'] == 'button')
Chris@76 252 $list_menu['style'] = 'tabs';
Chris@76 253
Chris@76 254 if (!isset($list_menu['style']) || isset($list_menu['style']) && $list_menu['style'] == 'tabs')
Chris@76 255 {
Chris@76 256 if (!empty($settings['use_tabs']))
Chris@76 257 {
Chris@76 258 echo '
Chris@76 259 <table cellpadding="0" cellspacing="0" style="margin-', $list_menu['position'], ': 10px; width: 100%;">
Chris@76 260 <tr>', $list_menu['position'] == 'right' ? '
Chris@76 261 <td>&nbsp;</td>' : '', '
Chris@76 262 <td align="', $list_menu['position'], '">
Chris@76 263 <table cellspacing="0" cellpadding="0">
Chris@76 264 <tr>
Chris@76 265 <td class="', $direction == 'top' ? 'mirror' : 'main', 'tab_', $first, '">&nbsp;</td>';
Chris@76 266
Chris@76 267 foreach ($list_menu['links'] as $link)
Chris@76 268 {
Chris@76 269 if ($link['is_selected'])
Chris@76 270 echo '
Chris@76 271 <td class="', $direction == 'top' ? 'mirror' : 'main', 'tab_active_', $first, '">&nbsp;</td>
Chris@76 272 <td valign="top" class="', $direction == 'top' ? 'mirrortab' : 'maintab', '_active_back">
Chris@76 273 <a href="', $link['href'], '">', $link['label'], '</a>
Chris@76 274 </td>
Chris@76 275 <td class="', $direction == 'top' ? 'mirror' : 'main', 'tab_active_', $last, '">&nbsp;</td>';
Chris@76 276 else
Chris@76 277 echo '
Chris@76 278 <td valign="top" class="', $direction == 'top' ? 'mirror' : 'main', 'tab_back">
Chris@76 279 <a href="', $link['href'], '">', $link['label'], '</a>
Chris@76 280 </td>';
Chris@76 281 }
Chris@76 282
Chris@76 283 echo '
Chris@76 284 <td class="', $direction == 'top' ? 'mirror' : 'main', 'tab_', $last, '">&nbsp;</td>
Chris@76 285 </tr>
Chris@76 286 </table>
Chris@76 287 </td>', $list_menu['position'] == 'left' ? '
Chris@76 288 <td>&nbsp;</td>' : '', '
Chris@76 289 </tr>
Chris@76 290 </table>';
Chris@76 291 }
Chris@76 292 else
Chris@76 293 {
Chris@76 294 echo '
Chris@76 295 <tr class="titlebg">
Chris@76 296 <td colspan="', $context['colspan'], '">';
Chris@76 297
Chris@76 298 $links = array();
Chris@76 299 foreach ($list_menu['links'] as $link)
Chris@76 300 $links[] = ($link['is_selected'] ? '<img src="' . $settings['images_url'] . '/selected.gif" alt="&gt;" /> ' : '') . '<a href="' . $link['href'] . '">' . $link['label'] . '</a>';
Chris@76 301
Chris@76 302 echo '
Chris@76 303 ', implode(' | ', $links), '
Chris@76 304 </td>
Chris@76 305 </tr>';
Chris@76 306 }
Chris@76 307 }
Chris@76 308 elseif (isset($list_menu['style']) && $list_menu['style'] == 'buttons')
Chris@76 309 {
Chris@76 310 $links = array();
Chris@76 311 foreach ($list_menu['links'] as $link)
Chris@76 312 $links[] = '<a href="' . $link['href'] . '">' . $link['label'] . '</a>';
Chris@76 313
Chris@76 314 echo '
Chris@76 315 <table cellpadding="0" cellspacing="0" style="margin-', $list_menu['position'], ': 10px; width: 100%;">
Chris@76 316 <tr>', $list_menu['position'] == 'right' ? '
Chris@76 317 <td>&nbsp;</td>' : '', '
Chris@76 318 <td align="', $list_menu['position'], '">
Chris@76 319 <table cellspacing="0" cellpadding="0">
Chris@76 320 <tr>
Chris@76 321 <td class="', $direction == 'top' ? 'mirror' : 'main', 'tab_', $first, '">&nbsp;</td>
Chris@76 322 <td class="', $direction == 'top' ? 'mirror' : 'main', 'tab_back">', implode(' &nbsp;|&nbsp; ', $links), '</td>
Chris@76 323 <td class="', $direction == 'top' ? 'mirror' : 'main', 'tab_', $last, '">&nbsp;</td>
Chris@76 324 </tr>
Chris@76 325 </table>
Chris@76 326 </td>', $list_menu['position'] == 'left' ? '
Chris@76 327 <td>&nbsp;</td>' : '', '
Chris@76 328 </tr>
Chris@76 329 </table>';
Chris@76 330 }
Chris@76 331 }
Chris@76 332
Chris@76 333 ?>