PageRenderTime 51ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/administrator/components/com_modules/admin.modules.html.php

https://bitbucket.org/asosso/joomla15
PHP | 632 lines | 549 code | 34 blank | 49 comment | 62 complexity | d8453d3ebc9f6d6bd233ae36e0c23db4 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
  1. <?php
  2. /**
  3. * @version $Id: admin.modules.html.php 18162 2010-07-16 07:00:47Z ian $
  4. * @package Joomla
  5. * @subpackage Modules
  6. * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
  7. * @license GNU/GPL, see LICENSE.php
  8. * Joomla! is free software. This version may have been modified pursuant
  9. * to the GNU General Public License, and as distributed it includes or
  10. * is derivative of works licensed under the GNU General Public License or
  11. * other free or open source software licenses.
  12. * See COPYRIGHT.php for copyright notices and details.
  13. */
  14. // no direct access
  15. defined( '_JEXEC' ) or die( 'Restricted access' );
  16. /**
  17. * @package Joomla
  18. * @subpackage Modules
  19. */
  20. class HTML_modules
  21. {
  22. /**
  23. * Writes a list of the defined modules
  24. * @param array An array of category objects
  25. */
  26. function view( &$rows, &$client, &$page, &$lists )
  27. {
  28. $user =& JFactory::getUser();
  29. //Ordering allowed ?
  30. $ordering = ($lists['order'] == 'm.ordering' || $lists['order'] == 'm.position');
  31. JHTML::_('behavior.tooltip');
  32. ?>
  33. <form action="index.php?option=com_modules" method="post" name="adminForm">
  34. <table>
  35. <tr>
  36. <td align="left" width="100%">
  37. <?php echo JText::_( 'Filter' ); ?>:
  38. <input type="text" name="search" id="search" value="<?php echo htmlspecialchars($lists['search']);?>" class="text_area" onchange="document.adminForm.submit();" />
  39. <button onclick="this.form.submit();"><?php echo JText::_( 'Go' ); ?></button>
  40. <button onclick="document.getElementById('search').value='';this.form.submit();"><?php echo JText::_( 'Reset' ); ?></button>
  41. </td>
  42. <td nowrap="nowrap">
  43. <?php
  44. echo $lists['assigned'];
  45. echo $lists['position'];
  46. echo $lists['type'];
  47. echo $lists['state'];
  48. ?>
  49. </td>
  50. </tr>
  51. </table>
  52. <table class="adminlist" cellspacing="1">
  53. <thead>
  54. <tr>
  55. <th width="20">
  56. <?php echo JText::_( 'NUM' ); ?>
  57. </th>
  58. <th width="20">
  59. <input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count( $rows );?>);" />
  60. </th>
  61. <th class="title">
  62. <?php echo JHTML::_('grid.sort', 'Module Name', 'm.title', @$lists['order_Dir'], @$lists['order'] ); ?>
  63. </th>
  64. <th nowrap="nowrap" width="7%">
  65. <?php echo JHTML::_('grid.sort', 'Published', 'm.published', @$lists['order_Dir'], @$lists['order'] ); ?>
  66. </th>
  67. <th width="80" nowrap="nowrap">
  68. <?php echo JHTML::_('grid.sort', 'Order', 'm.ordering', @$lists['order_Dir'], @$lists['order'] ); ?>
  69. </th>
  70. <th width="1%">
  71. <?php if ($ordering) echo JHTML::_('grid.order', $rows ); ?>
  72. </th>
  73. <?php
  74. if ( $client->id == 0 ) {
  75. ?>
  76. <th nowrap="nowrap" width="7%">
  77. <?php echo JHTML::_('grid.sort', 'Access', 'groupname', @$lists['order_Dir'], @$lists['order'] ); ?>
  78. </th>
  79. <?php
  80. }
  81. ?>
  82. <th nowrap="nowrap" width="7%">
  83. <?php echo JHTML::_('grid.sort', 'Position', 'm.position', @$lists['order_Dir'], @$lists['order'] ); ?>
  84. </th>
  85. <th nowrap="nowrap" width="5%">
  86. <?php echo JHTML::_('grid.sort', 'Pages', 'pages', @$lists['order_Dir'], @$lists['order'] ); ?>
  87. </th>
  88. <th nowrap="nowrap" width="10%" class="title">
  89. <?php echo JHTML::_('grid.sort', 'Type', 'm.module', @$lists['order_Dir'], @$lists['order'] ); ?>
  90. </th>
  91. <th nowrap="nowrap" width="1%">
  92. <?php echo JHTML::_('grid.sort', 'ID', 'm.id', @$lists['order_Dir'], @$lists['order'] ); ?>
  93. </th>
  94. </tr>
  95. </thead>
  96. <tfoot>
  97. <tr>
  98. <td colspan="12">
  99. <?php echo $page->getListFooter(); ?>
  100. </td>
  101. </tr>
  102. </tfoot>
  103. <tbody>
  104. <?php
  105. $k = 0;
  106. for ($i=0, $n=count( $rows ); $i < $n; $i++) {
  107. $row = &$rows[$i];
  108. $link = JRoute::_( 'index.php?option=com_modules&client='. $client->id .'&task=edit&cid[]='. $row->id );
  109. $access = JHTML::_('grid.access', $row, $i );
  110. $checked = JHTML::_('grid.checkedout', $row, $i );
  111. $published = JHTML::_('grid.published', $row, $i );
  112. ?>
  113. <tr class="<?php echo "row$k"; ?>">
  114. <td align="right">
  115. <?php echo $page->getRowOffset( $i ); ?>
  116. </td>
  117. <td width="20">
  118. <?php echo $checked; ?>
  119. </td>
  120. <td>
  121. <?php
  122. if ( JTable::isCheckedOut($user->get ('id'), $row->checked_out ) ) {
  123. echo htmlspecialchars($row->title);
  124. } else {
  125. ?>
  126. <span class="editlinktip hasTip" title="<?php echo JText::_( 'Edit Module' );?>::<?php echo htmlspecialchars($row->title); ?>">
  127. <a href="<?php echo $link; ?>">
  128. <?php echo htmlspecialchars($row->title); ?></a>
  129. </span>
  130. <?php
  131. }
  132. ?>
  133. </td>
  134. <td align="center">
  135. <?php echo $published;?>
  136. </td>
  137. <td class="order" colspan="2">
  138. <span><?php echo $page->orderUpIcon( $i, ($row->position == @$rows[$i-1]->position), 'orderup', 'Move Up', $ordering ); ?></span>
  139. <span><?php echo $page->orderDownIcon( $i, $n, ($row->position == @$rows[$i+1]->position),'orderdown', 'Move Down', $ordering ); ?></span>
  140. <?php $disabled = $ordering ? '' : 'disabled="disabled"'; ?>
  141. <input type="text" name="order[]" size="5" value="<?php echo $row->ordering; ?>" <?php echo $disabled ?> class="text_area" style="text-align: center" />
  142. </td>
  143. <?php
  144. if ( $client->id == 0 ) {
  145. ?>
  146. <td align="center">
  147. <?php echo $access;?>
  148. </td>
  149. <?php
  150. }
  151. ?>
  152. <td align="center">
  153. <?php echo $row->position; ?>
  154. </td>
  155. <td align="center">
  156. <?php
  157. if (is_null( $row->pages )) {
  158. echo JText::_( 'None' );
  159. } else if ($row->pages > 0) {
  160. echo JText::_( 'Varies' );
  161. } else {
  162. echo JText::_( 'All' );
  163. }
  164. ?>
  165. </td>
  166. <td>
  167. <?php echo $row->module ? $row->module : JText::_( 'User' );?>
  168. </td>
  169. <td>
  170. <?php echo $row->id;?>
  171. </td>
  172. </tr>
  173. <?php
  174. $k = 1 - $k;
  175. }
  176. ?>
  177. </tbody>
  178. </table>
  179. <input type="hidden" name="option" value="com_modules" />
  180. <input type="hidden" name="client" value="<?php echo $client->id;?>" />
  181. <input type="hidden" name="task" value="" />
  182. <input type="hidden" name="boxchecked" value="0" />
  183. <input type="hidden" name="filter_order" value="<?php echo $lists['order']; ?>" />
  184. <input type="hidden" name="filter_order_Dir" value="<?php echo $lists['order_Dir']; ?>" />
  185. <?php echo JHTML::_( 'form.token' ); ?>
  186. </form>
  187. <?php
  188. }
  189. /**
  190. * Writes the edit form for new and existing module
  191. *
  192. * A new record is defined when <var>$row</var> is passed with the <var>id</var>
  193. * property set to 0.
  194. * @param JTableCategory The category object
  195. * @param array <p>The modules of the left side. The array elements are in the form
  196. * <var>$leftorder[<i>order</i>] = <i>label</i></var>
  197. * where <i>order</i> is the module order from the db table and <i>label</i> is a
  198. * text label associciated with the order.</p>
  199. * @param array See notes for leftorder
  200. * @param array An array of select lists
  201. * @param object Parameters
  202. */
  203. function edit( &$model, &$row, &$orders2, &$lists, &$params, $client )
  204. {
  205. JRequest::setVar( 'hidemainmenu', 1 );
  206. // clean item data
  207. JFilterOutput::objectHTMLSafe( $row, ENT_QUOTES, 'content' );
  208. // Check for component metadata.xml file
  209. //$path = JApplicationHelper::getPath( 'mod'.$client->id.'_xml', $row->module );
  210. //$params = new JParameter( $row->params, $path );
  211. $document =& JFactory::getDocument();
  212. JHTML::_('behavior.combobox');
  213. jimport('joomla.html.pane');
  214. // TODO: allowAllClose should default true in J!1.6, so remove the array when it does.
  215. $pane = &JPane::getInstance('sliders', array('allowAllClose' => true));
  216. $editor =& JFactory::getEditor();
  217. JHTML::_('behavior.tooltip');
  218. ?>
  219. <script language="javascript" type="text/javascript">
  220. function submitbutton(pressbutton) {
  221. if ( ( pressbutton == 'save' || pressbutton == 'apply' ) && ( document.adminForm.title.value == "" ) ) {
  222. alert("<?php echo JText::_( 'Module must have a title', true ); ?>");
  223. } else {
  224. <?php
  225. if ($row->module == '' || $row->module == 'mod_custom') {
  226. echo $editor->save( 'content' );
  227. }
  228. ?>
  229. submitform(pressbutton);
  230. }
  231. }
  232. <!--
  233. var originalOrder = '<?php echo $row->ordering;?>';
  234. var originalPos = '<?php echo $row->position;?>';
  235. var orders = new Array(); // array in the format [key,value,text]
  236. <?php $i = 0;
  237. foreach ($orders2 as $k=>$items) {
  238. foreach ($items as $v) {
  239. echo "\n orders[".$i++."] = new Array( \"$k\",\"$v->value\",\"$v->text\" );";
  240. }
  241. }
  242. ?>
  243. //-->
  244. </script>
  245. <form action="index.php" method="post" name="adminForm">
  246. <div class="col width-50">
  247. <fieldset class="adminform">
  248. <legend><?php echo JText::_( 'Details' ); ?></legend>
  249. <table class="admintable" cellspacing="1">
  250. <tr>
  251. <td valign="top" class="key">
  252. <?php echo JText::_( 'Module Type' ); ?>:
  253. </td>
  254. <td>
  255. <strong>
  256. <?php echo JText::_($row->module); ?>
  257. </strong>
  258. </td>
  259. </tr>
  260. <tr>
  261. <td class="key">
  262. <label for="title">
  263. <?php echo JText::_( 'Title' ); ?>:
  264. </label>
  265. </td>
  266. <td>
  267. <input class="text_area" type="text" name="title" id="title" size="35" value="<?php echo $row->title; ?>" />
  268. </td>
  269. </tr>
  270. <tr>
  271. <td width="100" class="key">
  272. <?php echo JText::_( 'Show title' ); ?>:
  273. </td>
  274. <td>
  275. <?php echo $lists['showtitle']; ?>
  276. </td>
  277. </tr>
  278. <tr>
  279. <td valign="top" class="key">
  280. <?php echo JText::_( 'Published' ); ?>:
  281. </td>
  282. <td>
  283. <?php echo $lists['published']; ?>
  284. </td>
  285. </tr>
  286. <tr>
  287. <td valign="top" class="key">
  288. <label for="position" class="hasTip" title="<?php echo JText::_('MODULE_POSITION_TIP_TITLE', true); ?>::<?php echo JText::_('MODULE_POSITION_TIP_TEXT', true); ?>">
  289. <?php echo JText::_( 'Position' ); ?>:
  290. </label>
  291. </td>
  292. <td>
  293. <input type="text" id="position" class="combobox" name="position" value="<?php echo $row->position; ?>" />
  294. <ul id="combobox-position" style="display:none;">
  295. <?php
  296. $positions = $model->getPositions();
  297. foreach ($positions as $position) {
  298. echo '<li>'.$position.'</li>';
  299. }
  300. ?></ul>
  301. <script language="javascript" type="text/javascript">
  302. window.addEvent('domready', function() {
  303. $('combobox-position-select').addEvent('change', function() {
  304. changeDynaList('ordering', orders, document.adminForm.position.value, 0, 0);
  305. });
  306. $('position').addEvent('change', function() {
  307. changeDynaList('ordering', orders, document.adminForm.position.value, 0, 0);
  308. });
  309. });
  310. </script>
  311. </td>
  312. </tr>
  313. <tr>
  314. <td valign="top" class="key">
  315. <label for="ordering">
  316. <?php echo JText::_( 'Order' ); ?>:
  317. </label>
  318. </td>
  319. <td>
  320. <script language="javascript" type="text/javascript">
  321. <!--
  322. writeDynaList( 'class="inputbox" name="ordering" id="ordering" size="1"', orders, originalPos, originalPos, originalOrder );
  323. //-->
  324. </script>
  325. </td>
  326. </tr>
  327. <tr>
  328. <td valign="top" class="key">
  329. <label for="access">
  330. <?php echo JText::_( 'Access Level' ); ?>:
  331. </label>
  332. </td>
  333. <td>
  334. <?php echo $lists['access']; ?>
  335. </td>
  336. </tr>
  337. <tr>
  338. <td valign="top" class="key">
  339. <?php echo JText::_( 'ID' ); ?>:
  340. </td>
  341. <td>
  342. <?php echo $row->id; ?>
  343. </td>
  344. </tr>
  345. <tr>
  346. <td valign="top" class="key">
  347. <?php echo JText::_( 'Description' ); ?>:
  348. </td>
  349. <td>
  350. <?php echo JText::_($row->description); ?>
  351. </td>
  352. </tr>
  353. </table>
  354. </fieldset>
  355. <fieldset class="adminform">
  356. <legend><?php echo JText::_( 'Menu Assignment' ); ?></legend>
  357. <script type="text/javascript">
  358. function allselections() {
  359. var e = document.getElementById('selections');
  360. e.disabled = true;
  361. var i = 0;
  362. var n = e.options.length;
  363. for (i = 0; i < n; i++) {
  364. e.options[i].disabled = true;
  365. e.options[i].selected = true;
  366. }
  367. }
  368. function disableselections() {
  369. var e = document.getElementById('selections');
  370. e.disabled = true;
  371. var i = 0;
  372. var n = e.options.length;
  373. for (i = 0; i < n; i++) {
  374. e.options[i].disabled = true;
  375. e.options[i].selected = false;
  376. }
  377. }
  378. function enableselections() {
  379. var e = document.getElementById('selections');
  380. e.disabled = false;
  381. var i = 0;
  382. var n = e.options.length;
  383. for (i = 0; i < n; i++) {
  384. e.options[i].disabled = false;
  385. }
  386. }
  387. </script>
  388. <table class="admintable" cellspacing="1">
  389. <tr>
  390. <td valign="top" class="key">
  391. <?php echo JText::_( 'Menus' ); ?>:
  392. </td>
  393. <td>
  394. <?php if ($row->client_id != 1) : ?>
  395. <?php if ($row->pages == 'all') { ?>
  396. <label for="menus-all"><input id="menus-all" type="radio" name="menus" value="all" onclick="allselections();" checked="checked" /><?php echo JText::_( 'All' ); ?></label>
  397. <label for="menus-none"><input id="menus-none" type="radio" name="menus" value="none" onclick="disableselections();" /><?php echo JText::_( 'None' ); ?></label>
  398. <label for="menus-select"><input id="menus-select" type="radio" name="menus" value="select" onclick="enableselections();" /><?php echo JText::_( 'Select From List' ); ?></label>
  399. <?php } elseif ($row->pages == 'none') { ?>
  400. <label for="menus-all"><input id="menus-all" type="radio" name="menus" value="all" onclick="allselections();" /><?php echo JText::_( 'All' ); ?></label>
  401. <label for="menus-none"><input id="menus-none" type="radio" name="menus" value="none" onclick="disableselections();" checked="checked" /><?php echo JText::_( 'None' ); ?></label>
  402. <label for="menus-select"><input id="menus-select" type="radio" name="menus" value="select" onclick="enableselections();" /><?php echo JText::_( 'Select From List' ); ?></label>
  403. <?php } else { ?>
  404. <label for="menus-all"><input id="menus-all" type="radio" name="menus" value="all" onclick="allselections();" /><?php echo JText::_( 'All' ); ?></label>
  405. <label for="menus-none"><input id="menus-none" type="radio" name="menus" value="none" onclick="disableselections();" /><?php echo JText::_( 'None' ); ?></label>
  406. <label for="menus-select"><input id="menus-select" type="radio" name="menus" value="select" onclick="enableselections();" checked="checked" /><?php echo JText::_( 'Select From List' ); ?></label>
  407. <?php } ?>
  408. <?php endif; ?>
  409. </td>
  410. </tr>
  411. <tr>
  412. <td valign="top" class="key">
  413. <?php echo JText::_( 'Menu Selection' ); ?>:
  414. </td>
  415. <td>
  416. <?php echo $lists['selections']; ?>
  417. </td>
  418. </tr>
  419. </table>
  420. <?php if ($row->client_id != 1) : ?>
  421. <?php if ($row->pages == 'all') { ?>
  422. <script type="text/javascript">allselections();</script>
  423. <?php } elseif ($row->pages == 'none') { ?>
  424. <script type="text/javascript">disableselections();</script>
  425. <?php } else { ?>
  426. <?php } ?>
  427. <?php endif; ?>
  428. </fieldset>
  429. </div>
  430. <div class="col width-50">
  431. <fieldset class="adminform">
  432. <legend><?php echo JText::_( 'Parameters' ); ?></legend>
  433. <?php
  434. echo $pane->startPane("menu-pane");
  435. echo $pane->startPanel(JText :: _('Module Parameters'), "param-page");
  436. $p = $params;
  437. if($params = $p->render('params')) :
  438. echo $params;
  439. else :
  440. echo "<div style=\"text-align: center; padding: 5px; \">".JText::_('There are no parameters for this item')."</div>";
  441. endif;
  442. echo $pane->endPanel();
  443. if ($p->getNumParams('advanced')) {
  444. echo $pane->startPanel(JText :: _('Advanced Parameters'), "advanced-page");
  445. if($params = $p->render('params', 'advanced')) :
  446. echo $params;
  447. else :
  448. echo "<div style=\"text-align: center; padding: 5px; \">".JText::_('There are no advanced parameters for this item')."</div>";
  449. endif;
  450. echo $pane->endPanel();
  451. }
  452. if ($p->getNumParams('legacy')) {
  453. echo $pane->startPanel(JText :: _('Legacy Parameters'), "legacy-page");
  454. if($params = $p->render('params', 'legacy')) :
  455. echo $params;
  456. else :
  457. echo "<div style=\"text-align: center; padding: 5px; \">".JText::_('There are no legacy parameters for this item')."</div>";
  458. endif;
  459. echo $pane->endPanel();
  460. }
  461. if ($p->getNumParams('other')) {
  462. echo $pane->startPanel(JText :: _('Other Parameters'), "other-page");
  463. if($params = $p->render('params', 'other')) :
  464. echo $params;
  465. else :
  466. echo "<div style=\"text-align: center; padding: 5px; \">".JText::_('There are no other parameters for this item')."</div>";
  467. endif;
  468. echo $pane->endPanel();
  469. }
  470. echo $pane->endPane();
  471. ?>
  472. </fieldset>
  473. </div>
  474. <div class="clr"></div>
  475. <?php
  476. if ( !$row->module || $row->module == 'custom' || $row->module == 'mod_custom' ) {
  477. ?>
  478. <fieldset class="adminform">
  479. <legend><?php echo JText::_( 'Custom Output' ); ?></legend>
  480. <?php
  481. // parameters : areaname, content, width, height, cols, rows
  482. echo $editor->display( 'content', $row->content, '100%', '400', '60', '20', array('pagebreak', 'readmore') ) ;
  483. ?>
  484. </fieldset>
  485. <?php
  486. }
  487. ?>
  488. <input type="hidden" name="option" value="com_modules" />
  489. <input type="hidden" name="id" value="<?php echo $row->id; ?>" />
  490. <input type="hidden" name="cid[]" value="<?php echo $row->id; ?>" />
  491. <input type="hidden" name="original" value="<?php echo $row->ordering; ?>" />
  492. <input type="hidden" name="module" value="<?php echo $row->module; ?>" />
  493. <input type="hidden" name="task" value="" />
  494. <input type="hidden" name="client" value="<?php echo $client->id ?>" />
  495. <?php echo JHTML::_( 'form.token' ); ?>
  496. </form>
  497. <?php
  498. }
  499. function preview()
  500. {
  501. $editor =& JFactory::getEditor();
  502. ?>
  503. <script>
  504. var form = window.top.document.adminForm
  505. var title = form.title.value;
  506. var alltext = window.top.<?php echo $editor->getContent('text') ?>;
  507. </script>
  508. <table align="center" width="90%" cellspacing="2" cellpadding="2" border="0">
  509. <tr>
  510. <td class="contentheading" colspan="2"><script>document.write(title);</script></td>
  511. </tr>
  512. <tr>
  513. <script>document.write("<td valign=\"top\" height=\"90%\" colspan=\"2\">" + alltext + "</td>");</script>
  514. </tr>
  515. </table>
  516. <?php
  517. }
  518. /**
  519. /**
  520. * Displays a selection list for module types
  521. */
  522. function add(&$modules, $client)
  523. {
  524. JHTML::_('behavior.tooltip');
  525. ?>
  526. <form action="index.php" method="post" name="adminForm">
  527. <table class="adminlist" cellpadding="1" summary="Add Module">
  528. <thead>
  529. <tr>
  530. <th colspan="4">
  531. <?php echo JText::_('Modules'); ?>
  532. </th>
  533. </tr>
  534. </thead>
  535. <tfoot>
  536. <tr>
  537. <th colspan="4">&nbsp;
  538. </th>
  539. </tr>
  540. </tfoot>
  541. <tbody>
  542. <?php
  543. $altRow = 0;
  544. $count = count($modules);
  545. // Variable-column ready, just pass $cols in.
  546. $cols = 2;
  547. $pct = floor(100 / $cols);
  548. $rows = ceil($count / $cols);
  549. $posn = 0;
  550. do {
  551. ?>
  552. <tr class="<?php echo 'row' . $altRow; ?>" valign="top">
  553. <?php
  554. $altRow = 1 - $altRow;
  555. for ($col = 0; $col < $cols; ++$col) :
  556. if (($mod = $posn + $col * $rows) >= $count) :
  557. ?>
  558. <td width="<?php echo $pct; ?>%">&nbsp;</td>
  559. <?php
  560. continue;
  561. endif;
  562. $item = &$modules[$mod];
  563. $link = 'index.php?option=com_modules&amp;task=edit&amp;module='
  564. . $item->module . '&amp;created=1&amp;client=' . $client->id;
  565. ?>
  566. <td width="<?php echo $pct; ?>%">
  567. <span class="editlinktip hasTip" title="<?php
  568. echo htmlspecialchars($item->name . ' :: '
  569. . JText::_(stripslashes($item->descrip)), ENT_QUOTES, 'UTF-8');
  570. ?>" name="module" value="<?php
  571. echo $item->module;
  572. ?>" onclick="isChecked(this.checked);">
  573. <input type="radio" name="module" value="<?php
  574. echo $item->module;
  575. ?>" id="cb<?php echo $mod; ?>"/><a href="<?php
  576. echo $link;
  577. ?>"><?php echo htmlspecialchars($item->name, ENT_QUOTES, 'UTF-8'); ?></a></span>
  578. </td>
  579. <?php
  580. endfor;
  581. ++$posn;
  582. ?>
  583. </tr>
  584. <?php
  585. } while ($posn < $rows);
  586. ?>
  587. </tbody>
  588. </table>
  589. <input type="hidden" name="option" value="com_modules" />
  590. <input type="hidden" name="client" value="<?php echo $client->id; ?>" />
  591. <input type="hidden" name="created" value="1" />
  592. <input type="hidden" name="task" value="edit" />
  593. <input type="hidden" name="boxchecked" value="0" />
  594. <?php echo JHTML::_('form.token'); ?>
  595. </form>
  596. <?php
  597. }
  598. }