diff options
| author | Veit Olschinski <veit@olschinski.de> | 2010-04-05 10:29:41 +0000 |
|---|---|---|
| committer | Veit Olschinski <veit@olschinski.de> | 2010-04-05 10:29:41 +0000 |
| commit | 5bc7b36708d272081ffd2df5658ddf12275447dd (patch) | |
| tree | 7884d88bd634f62d94e0239c911305ac4349dba8 /index_edit.php | |
| parent | 5dbb23df7f03aeb32c6c5a3fa6139dd479f9c0b4 (diff) | |
| download | webtrees-5bc7b36708d272081ffd2df5658ddf12275447dd.tar.gz webtrees-5bc7b36708d272081ffd2df5658ddf12275447dd.tar.bz2 webtrees-5bc7b36708d272081ffd2df5658ddf12275447dd.zip | |
Diffstat (limited to 'index_edit.php')
| -rw-r--r-- | index_edit.php | 558 |
1 files changed, 558 insertions, 0 deletions
diff --git a/index_edit.php b/index_edit.php new file mode 100644 index 0000000000..e369906c67 --- /dev/null +++ b/index_edit.php @@ -0,0 +1,558 @@ +<?php +/** + * My Page page allows a logged in user the abilty + * to keep bookmarks, see a list of upcoming events, etc. + * + * webtrees: Web based Family History software + * Copyright (C) 2010 webtrees development team. + * + * Derived from PhpGedView + * Copyright (C) 2002 to 2009 PGV Development Team. All rights reserved. + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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 + * + * This Page Is Valid XHTML 1.0 Transitional! > 13 August 2005 + * + * @package webtrees + * @subpackage Display + * @version $Id$ + */ + +define('WT_SCRIPT_NAME', 'index_edit.php'); +require './includes/session.php'; +require_once WT_ROOT.'includes/index_cache.php'; + +if (isset($_REQUEST['action'])) $action = $_REQUEST['action']; +if (isset($_REQUEST['ctype'])) $ctype = $_REQUEST['ctype']; +if (isset($_REQUEST['main'])) $main = $_REQUEST['main']; +if (isset($_REQUEST['right'])) $right = $_REQUEST['right']; +if (isset($_REQUEST['setdefault'])) $setdefault = $_REQUEST['setdefault']; +if (isset($_REQUEST['side'])) $side = $_REQUEST['side']; +if (isset($_REQUEST['index'])) $index = $_REQUEST['index']; +if (isset($_REQUEST['name'])) $name = $_REQUEST['name']; + +//-- make sure that they have user status before they can use this page +//-- otherwise have them login again +if (!WT_USER_ID) { + print_simple_header(""); + print i18n::translate('<b>Access Denied</b><br />You do not have access to this resource.'); + print "<div class=\"center\"><a href=\"javascript:;\" onclick=\"self.close();\">".i18n::translate('Close Window')."</a></div>\n"; + print_simple_footer(); + exit; +} +if (!WT_USER_IS_ADMIN) $setdefault=false; + +if (!isset($action)) $action=""; +if (!isset($ctype)) $ctype="user"; +if (!isset($main)) $main=array(); +if (!isset($right)) $right=array(); +if (!isset($setdefault)) $setdefault=false; +if (!isset($side)) $side="main"; +if (!isset($index)) $index=1; + +// Define all the icons we're going to use +$IconUarrow = "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["uarrow"]["other"]."\" width=\"20\" height=\"20\" alt=\"\" />"; +$IconDarrow = "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["darrow"]["other"]."\" width=\"20\" height=\"20\" alt=\"\" />"; +$IconRarrow = "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["rarrow"]["other"]."\" width=\"20\" height=\"20\" alt=\"\" />"; +$IconLarrow = "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["larrow"]["other"]."\" width=\"20\" height=\"20\" alt=\"\" />"; +$IconRDarrow = "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["rdarrow"]["other"]."\" width=\"20\" height=\"20\" alt=\"\" />"; +$IconLDarrow = "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["ldarrow"]["other"]."\" width=\"20\" height=\"20\" alt=\"\" />"; + +/** + * Load List of Blocks in blocks directory (unchanged) + */ +$WT_BLOCKS = array(); +$d = dir("blocks"); +while (false !== ($entry = $d->read())) { + if (($entry!=".") && ($entry!="..") && ($entry!="CVS") && (preg_match("/\.php$/", $entry)>0)) { + require_once WT_ROOT.'blocks/'.$entry; + } +} +$d->close(); +/** + * End loading list of Blocks in blocks directory + * + * Load List of Blocks in modules/XX/blocks directories + */ +if (file_exists(WT_ROOT.'modules')) { + $dir=dir(WT_ROOT.'modules'); + while (false !== ($entry = $dir->read())) { + if (!strstr($entry,".") && ($entry!="..") && ($entry!="CVS")&& !strstr($entry, "svn")) { + $path = WT_ROOT.'modules/' . $entry.'/blocks'; + if (is_readable($path)) { + $d=dir($path); + while (false !== ($entry = $d->read())) { + if (($entry!=".") && ($entry!="..") && ($entry!="CVS")&& !strstr($entry, "svn")&&(preg_match("/\.php$/", $entry)>0)) { + $p=$path.'/'.$entry; + require_once $p; + } + } + } + } + } +} +/** + * End loading list of Blocks in modules/XX/blocks directories +*/ + +// Build sorted table of block names, BUT: +// include in this table ONLY if the block is appropriate for this page +// If $BLOCK["type"] is "both", include in both page types +// "user", include in My Page only +// "gedcom", include in Index page only +$SortedBlocks = array(); +foreach($WT_BLOCKS as $key => $BLOCK) { + if (empty($BLOCK["type"])) $BLOCK["type"] = "both"; + if (($BLOCK["type"]=="both") or ($BLOCK["type"]==$ctype)) { + $SortedBlocks[$key] = $BLOCK["name"]; + } +} +asort($SortedBlocks); + +//-- get the blocks list +if ($ctype=="user") { + $ublocks = getBlocks(WT_USER_NAME); + if (($action=="reset") || ((count($ublocks["main"])==0) && (count($ublocks["right"])==0))) { + $ublocks["main"] = array(); + $ublocks["main"][] = array("print_todays_events", ""); + $ublocks["main"][] = array("print_user_messages", ""); + $ublocks["main"][] = array("print_user_favorites", ""); + + $ublocks["right"] = array(); + $ublocks["right"][] = array("print_welcome_block", ""); + $ublocks["right"][] = array("print_random_media", ""); + $ublocks["right"][] = array("print_upcoming_events", ""); + $ublocks["right"][] = array("print_logged_in_users", ""); + } +} +else { + $ublocks = getBlocks($GEDCOM); + if (($action=="reset") or ((count($ublocks["main"])==0) and (count($ublocks["right"])==0))) { + $ublocks["main"] = array(); + $ublocks["main"][] = array("print_gedcom_stats", ""); + $ublocks["main"][] = array("print_gedcom_news", ""); + $ublocks["main"][] = array("print_gedcom_favorites", ""); + $ublocks["main"][] = array("review_changes_block", ""); + + $ublocks["right"] = array(); + $ublocks["right"][] = array("print_gedcom_block", ""); + $ublocks["right"][] = array("print_random_media", ""); + $ublocks["right"][] = array("print_todays_events", ""); + $ublocks["right"][] = array("print_logged_in_users", ""); + } +} + +if ($ctype=="user") { + print_simple_header(i18n::translate('My Page')); +} else { + print_simple_header(get_gedcom_setting(WT_GED_ID, 'title')); +} + +$GEDCOM_TITLE=PrintReady(get_gedcom_setting(WT_GED_ID, 'title')); + +?> +<script language="JavaScript" type="text/javascript"> +<!-- +function parentrefresh() { + opener.window.location.reload(); + window.close(); +} +//--> +</script> +<?php +if ($action=="updateconfig") { + $block = $ublocks[$side][$index]; + if (isset($WT_BLOCKS[$block[0]]["canconfig"]) && $WT_BLOCKS[$block[0]]["canconfig"] && isset($WT_BLOCKS[$block[0]]["config"]) && is_array($WT_BLOCKS[$block[0]]["config"])) { + $config = $block[1]; + foreach($WT_BLOCKS[$block[0]]["config"] as $config_name=>$config_value) { + if (isset($_POST[$config_name])) { + $config[$config_name] = $_POST[$config_name]; + } + else { + $config[$config_name] = ""; + } + } + $ublocks[$side][$index][1] = $config; + setBlocks($name, $ublocks, $setdefault); + } + print i18n::translate('Configuration file updated successfully.')."<br />\n"; + if (isset($_POST["nextaction"])) $action = $_POST["nextaction"]; + if ($ctype!="user") $_SESSION['clearcache'] = true; +} + +if ($action=="update") { + $newublocks["main"] = array(); + if (is_array($main)) { + foreach($main as $indexval => $b) { + $config = ""; + $index = ""; + reset($ublocks["main"]); + foreach($ublocks["main"] as $index=>$block) { + if ($block[0]==$b) { + $config = $block[1]; + break; + } + } + if ($index!="") unset($ublocks["main"][$index]); + $newublocks["main"][] = array($b, $config); + } + } + + $newublocks["right"] = array(); + if (is_array($right)) { + foreach($right as $indexval => $b) { + $config = ""; + $index = ""; + reset($ublocks["right"]); + foreach($ublocks["right"] as $index=>$block) { + if ($block[0]==$b) { + $config = $block[1]; + break; + } + } + if ($index!="") unset($ublocks["right"][$index]); + $newublocks["right"][] = array($b, $config); + } + } + $ublocks = $newublocks; + setBlocks($name, $ublocks, $setdefault); + if (isset($_POST["nextaction"])) $action = $_POST["nextaction"]; + ?><script language="JavaScript" type="text/javascript">parentrefresh();</script><?php +} + +if ($action=="clearcache") { + clearCache(); + print "<span class=\"warning\">".i18n::translate('The cache files have been removed.')."</span><br /><br />"; +} + +if ($action=="configure" && isset($ublocks[$side][$index])) { + $block = $ublocks[$side][$index]; + print "<table class=\"facts_table ".$TEXT_DIRECTION."\" width=\"99%\">"; + print "<tr><td class=\"facts_label\">"; + print "<h2>".i18n::translate('Configure')."</h2>"; + print "</td></tr>"; + print "<tr><td class=\"facts_label03\">"; + print "<b>".$WT_BLOCKS[$block[0]]["name"]."</b>"; + print "</td></tr>"; + print "</table>"; +?> +<script language="JavaScript" type="text/javascript"> +<!-- + var pastefield; + function paste_id(value) { + pastefield.value=value; + } +//--> +</script> +<?php + print "\n<form name=\"block\" method=\"post\" action=\"index_edit.php\">\n"; + print "<input type=\"hidden\" name=\"ctype\" value=\"$ctype\" />\n"; + print "<input type=\"hidden\" name=\"action\" value=\"updateconfig\" />\n"; + print "<input type=\"hidden\" name=\"name\" value=\"$name\" />\n"; + print "<input type=\"hidden\" name=\"nextaction\" value=\"configure\" />\n"; + print "<input type=\"hidden\" name=\"side\" value=\"$side\" />\n"; + print "<input type=\"hidden\" name=\"index\" value=\"$index\" />\n"; + print "<table border=\"0\" class=\"facts_table ".$TEXT_DIRECTION."\" width=\"99%\">"; + if ($WT_BLOCKS[$block[0]]["canconfig"]) { + eval($block[0]."_config(\$block[1]);"); + print "<tr><td colspan=\"2\" class=\"topbottombar\">"; + print "<input type=\"button\" value=\"".i18n::translate('Click here to continue')."\" onclick=\"document.block.submit();\" />"; + print help_link('click_here'); + print " <input type =\"button\" value=\"".i18n::translate('Cancel')."\" onclick=\"window.close()\" />"; + print "</td></tr>"; + } + else { + print "<tr><td colspan=\"2\" class=\"optionbox\">"; + print i18n::translate('This block cannot be configured.'); + print "</td></tr>"; + print "<tr><td colspan=\"2\" class=\"topbottombar\">"; + print "<input type=\"button\" value=\"".i18n::translate('Click here to continue')."\" onclick=\"parentrefresh();\" />"; + print help_link('click_here'); + print "</td></tr>"; + } + print "</table>"; + print "</form>"; +} +else { + ?> + <script language="JavaScript" type="text/javascript"> + <!-- +/** + * Move Up Block JavaScript function + * + * This function moves the selected option up in the given select list + * @param String section_name the name of the select to move the options + */ + function move_up_block(section_name) { + section_select = document.getElementById(section_name); + if (section_select) { + if (section_select.selectedIndex <= 0) return false; + index = section_select.selectedIndex; + temp = new Option(section_select.options[index-1].text, section_select.options[index-1].value); + section_select.options[index-1] = new Option(section_select.options[index].text, section_select.options[index].value); + section_select.options[index] = temp; + section_select.selectedIndex = index-1; + } + } + +/** + * Move Down Block JavaScript function + * + * This function moves the selected option down in the given select list + * @param String section_name the name of the select to move the options + */ + function move_down_block(section_name) { + section_select = document.getElementById(section_name); + if (section_select) { + if (section_select.selectedIndex < 0) return false; + if (section_select.selectedIndex >= section_select.length-1) return false; + index = section_select.selectedIndex; + temp = new Option(section_select.options[index+1].text, section_select.options[index+1].value); + section_select.options[index+1] = new Option(section_select.options[index].text, section_select.options[index].value); + section_select.options[index] = temp; + section_select.selectedIndex = index+1; + } + } + +/** + * Move Block from one column to the other JavaScript function + * + * This function moves the selected option down in the given select list + * @author KosherJava + * @param String add_to_column the name of the select to move the option to + * @param String remove_from_column the name of the select to remove the option from + */ + function move_left_right_block(add_to_column, remove_from_column) { + section_select = document.getElementById(remove_from_column); + add_select = document.getElementById(add_to_column); + instruct = document.getElementById('instructions'); + if ((section_select) && (add_select)) { + add_option = add_select.options[add_select.selectedIndex]; + if (remove_from_column != 'available_select') { + section_select.options[section_select.length] = new Option(add_option.text, add_option.value); + } + if (add_to_column != 'available_select') { + add_select.options[add_select.selectedIndex] = null; //remove from list + } + } + } +/** + * Select Options JavaScript function + * + * This function selects all the options in the multiple select lists + */ + function select_options() { + section_select = document.getElementById('main_select'); + if (section_select) { + for(i=0; i<section_select.length; i++) { + section_select.options[i].selected=true; + } + } + section_select = document.getElementById('right_select'); + if (section_select) { + for(i=0; i<section_select.length; i++) { + section_select.options[i].selected=true; + } + } + return true; + } + +/** + * Load Block Description array for use by jscript + */ + <?php + print "var block_descr = new Array();\n"; + foreach($WT_BLOCKS as $b=>$block) { + print "block_descr['$b'] = '".str_replace("'", "\\'", embed_globals($block["descr"]))."';\n"; + } + print "block_descr['advice1'] = '".str_replace("'", "\\'", i18n::translate('Highlight a block name and then click on one of the arrow icons to move that highlighted block in the indicated direction.'))."';\n"; + ?> + + +/** + * Show Block Description JavaScript function + * + * This function shows a description for the selected option + * @param String list_name the name of the select to get the option from + */ + function show_description(list_name) { + list_select = document.getElementById(list_name); + instruct = document.getElementById('instructions'); + if (list_select && instruct) { + instruct.innerHTML = block_descr[list_select.options[list_select.selectedIndex].value]; + } + list1 = document.getElementById('main_select'); + list2 = document.getElementById('available_select'); + list3 = document.getElementById('right_select'); + if (list_name=='main_select') { + list2.selectedIndex = -1; + list3.selectedIndex = -1; + } + if (list_name=='available_select') { + list1.selectedIndex = -1; + list3.selectedIndex = -1; + } + if (list_name=='right_select') { + list1.selectedIndex = -1; + list2.selectedIndex = -1; + } + } + + function save_form(){ + document.config_setup.submit(); + } + //--> + </script> + <?php + //--------------------------------Start 1st tab Configuration page + ?> + <div id="configure" class="tab_page center" style="position: absolute; display: block; top: auto; left: auto; z-index: 1; "> + <br /> + <form name="config_setup" method="post" action="index_edit.php"> + <input type="hidden" name="ctype" value="<?php print $ctype;?>" /> + <input type="hidden" name="action" value="update" /> + <input type="hidden" name="name" value="<?php print $name;?>" /> + <table dir="ltr" border="1" width="400px"> + <tr><td class="topbottombar" colspan="7"> + <?php + if ($ctype=="user") print "<b>".i18n::translate('Customize My Page')."</b>"; + else print "<b>".i18n::translate('Customize this GEDCOM Home Page')."</b>"; + echo help_link('portal_config_intructions'); + print "</td></tr>"; + // NOTE: Row 1: Column legends + print "<tr>"; + print "<td class=\"descriptionbox center vmiddle\" colspan=\"2\">\n"; + print "<b>".i18n::translate('Main Section Blocks')."</b>"; + print "</td>\n"; + print "<td class=\"descriptionbox center vmiddle\" colspan=\"3\">"; + print "<b>".i18n::translate('Available Blocks')."</b>"; + print "</td>\n"; + print "<td class=\"descriptionbox center vmiddle\" colspan=\"2\">"; + print "<b>".i18n::translate('Right Section Blocks')."</b>"; + print "</td>"; + print "</tr>\n"; + print "<tr>"; + // NOTE: Row 2 column 1: Up/Down buttons for left (main) block list + print "<td class=\"optionbox width20px center vmiddle\">"; + print "<a tabindex=\"-1\" onclick=\"move_up_block('main_select');\" title=\"".i18n::translate('Move Up')."\">".$IconUarrow."</a>"; + print "<br />"; + print "<a tabindex=\"-1\" onclick=\"move_down_block('main_select');\" title=\"".i18n::translate('Move Down')."\">".$IconDarrow."</a>"; + print "<br /><br />"; + print help_link('block_move_up'); + + print "</td>"; + // NOTE: Row 2 column 2: Left (Main) block list + print "<td class=\"optionbox\" dir=\"".$TEXT_DIRECTION."\">\n"; + print "<select multiple=\"multiple\" id=\"main_select\" name=\"main[]\" size=\"10\" onchange=\"show_description('main_select');\">\n"; + foreach($ublocks["main"] as $indexval => $block) { + if (function_exists($block[0])) { + print "<option value=\"$block[0]\">".$WT_BLOCKS[$block[0]]["name"]."</option>\n"; + } + } + print "</select>\n"; + print "</td>"; + // NOTE: Row 2 column 3: Left/Right buttons for left (main) block list + print "<td class=\"optionbox width20 vmiddle\">"; + print "<a tabindex=\"-1\" onclick=\"move_left_right_block('main_select', 'right_select');\" title=\"".i18n::translate('Move Right')."\">".$IconRDarrow."</a>"; + print "<br />"; + print "<a tabindex=\"-1\" onclick=\"move_left_right_block('main_select', 'available_select');\" title=\"".i18n::translate('Remove')."\">".$IconRarrow."</a>"; + print "<br />"; + print "<a tabindex=\"-1\" onclick=\"move_left_right_block('available_select', 'main_select');\" title=\"".i18n::translate('Add')."\">".$IconLarrow."</a>"; + print "<br /><br />"; + print help_link('block_move_right'); + + print "</td>"; + // Row 2 column 4: Middle (Available) block list + print "<td class=\"optionbox\" dir=\"".$TEXT_DIRECTION."\">"; + print "<select id=\"available_select\" name=\"available[]\" size=\"10\" onchange=\"show_description('available_select');\">\n"; + foreach($SortedBlocks as $key => $value) { + if (!isset($WT_BLOCKS[$key]["type"])) $WT_BLOCKS[$key]["type"]=$ctype; + print "<option value=\"$key\">".$SortedBlocks[$key]."</option>\n"; + } + print "</select>\n"; + print "</td>"; + // NOTE: Row 2 column 5: Left/Right buttons for right block list + print "<td class=\"optionbox width20 vmiddle\">"; + print "<a tabindex=\"-1\" onclick=\"move_left_right_block('right_select', 'main_select');\" title=\"".i18n::translate('Move Left')."\">".$IconLDarrow."</a>"; + print "<br />"; + print "<a tabindex=\"-1\" onclick=\"move_left_right_block('right_select', 'available_select');\" title=\"".i18n::translate('Remove')."\">".$IconLarrow."</a>"; + print "<br />"; + print "<a tabindex=\"-1\" onclick=\"move_left_right_block('available_select', 'right_select');\" title=\"".i18n::translate('Add')."\">".$IconRarrow."</a>"; + print "<br /><br />"; + print help_link('block_move_right'); + print "</td>"; + // NOTE: Row 2 column 6: Right block list + print "<td class=\"optionbox\" dir=\"".$TEXT_DIRECTION."\">"; + print "<select multiple=\"multiple\" id=\"right_select\" name=\"right[]\" size=\"10\" onchange=\"show_description('right_select');\">\n"; + foreach($ublocks["right"] as $indexval => $block) { + if (function_exists($block[0])) { + print "<option value=\"$block[0]\">".$WT_BLOCKS[$block[0]]["name"]."</option>\n"; + } + } + print "</select>\n"; + print "</td>"; + // NOTE: Row 2 column 7: Up/Down buttons for right block list + print "<td class=\"optionbox width20 vmiddle\">"; + print "<a tabindex=\"-1\" onclick=\"move_up_block('right_select');\" title=\"".i18n::translate('Move Up')."\">".$IconUarrow."</a>"; + print "<br />"; + print "<a tabindex=\"-1\" onclick=\"move_down_block('right_select');\" title=\"".i18n::translate('Move Down')."\">".$IconDarrow."</a>"; + print "<br /><br />"; + print help_link('block_move_up'); + print "</td>"; + print "</tr>"; + // NOTE: Row 3 columns 1-7: Summary description of currently selected block + print "<tr><td class=\"descriptionbox wrap\" colspan=\"7\" dir=\"".$TEXT_DIRECTION."\"><div id=\"instructions\">"; + print i18n::translate('Highlight a block name and then click on one of the arrow icons to move that highlighted block in the indicated direction.'); + print "</div></td></tr>"; + print "<tr><td class=\"topbottombar\" colspan=\"7\">"; + + if (WT_USER_IS_ADMIN && $ctype=='user') { + print i18n::translate('Use these blocks as the default block configuration for all users?')."<input type=\"checkbox\" name=\"setdefault\" value=\"1\" /><br /><br />\n"; + } + + print "<input type=\"button\" value=\"".i18n::translate('Reset to Default Blocks')."\" onclick=\"window.location='index_edit.php?ctype=$ctype&action=reset&name=".str_replace("'", "\'", $name)."';\" />\n"; + if ($ctype=='user') { + echo help_link('block_default_portal'); + } else { + echo help_link('block_default_index'); + } + print " "; + print "<input type=\"button\" value=\"".i18n::translate('Click here to continue')."\" onclick=\"select_options(); save_form();\" />\n"; + print help_link('click_here'); + print " "; + print "<input type =\"button\" value=\"".i18n::translate('Cancel')."\" onclick=\"window.close()\" />"; + if (WT_USER_GEDCOM_ADMIN && $ctype!="user") { + print "<br />"; + print "<input type =\"button\" value=\"".i18n::translate('Clear cache files')."\" onclick=\"window.location='index_edit.php?ctype=$ctype&action=clearcache&name=".str_replace("'", "\'", $name)."';\" />"; + print help_link('clear_cache'); + } + print "</td></tr></table>"; + print "</form>\n"; + + // end of 1st tab + print "</div>\n"; + + //--------------------------------Start 2nd tab Help page + print "\n\t<div id=\"help\" class=\"tab_page\" style=\"position: absolute; display: none; top: auto; left: auto; z-index: 2; \">\n\t"; + + print "<br /><center><input type=\"button\" value=\"".i18n::translate('Click here to continue')."\" onclick=\"expand_layer('configure', true); expand_layer('help', false);\" /></center><br /><br />\n"; + echo i18n::translate("Here is a short description of each of the blocks you can place on the Welcome or My Page.<br /><table border='1' align='center'><tr><td class='list_value'><b>Name</b></td><td class='list_value'><b>Description</b></td></tr> </table>"); + + // end of 2nd tab + print "</div>\n"; +} + +print "</body></html>"; // Yes! Absolutely NOTHING at page bottom, please. +?> |
