Fixed issue: user always considered as being an admin (regression due to changes in the setup), user profile setup is finally done at 100% in the setup code.

SVN:code[128]
This commit is contained in:
Romain Quetiez
2009-09-10 10:58:45 +00:00
parent e7c7bda520
commit bfc2df25d7
7 changed files with 65 additions and 584 deletions

View File

@@ -717,6 +717,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
public function Setup()
{
SetupITILProfiles::DoCreateDimensions();
SetupITILProfiles::DoCreateProfiles();
return true;
}
@@ -735,7 +736,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
protected $m_aLogin2UserId = array(); // login -> id
protected $m_aAdmins = array(); // id of users being linked to the profile #ADMIN_PROFILE_ID
protected $m_aAdmins = array(); // id of users being linked to the well-known admin profile
protected $m_aClassActionGrants = array(); // profile, class, action -> permission
protected $m_aClassStimulusGrants = array(); // profile, class, stimulus -> permission
@@ -1106,7 +1107,7 @@ exit;
{
// user projection to be cached on a given page !
$aUserProjection = $this->m_aProPros[$iProfile][$iDimension]->ProjectUser($oUser);
if (is_null($aUserProjection))
{
$aRes[] = $iProfile;
@@ -1184,6 +1185,14 @@ class SetupITILProfiles
),
);
*/
protected static $m_aDimensions = array(
'organization' => array(
'description' => '',
'type' => 'bizOrganization',
),
);
protected static $m_aActions = array(
UR_ACTION_READ => 'Read',
UR_ACTION_MODIFY => 'Modify',
@@ -1325,6 +1334,26 @@ class SetupITILProfiles
),
),
);
protected static function DoCreateClassProjection($iDimension, $sClass)
{
$oNewObj = MetaModel::NewObject("URP_ClassProjection");
$oNewObj->Set('dimensionid', $iDimension);
$oNewObj->Set('class', $sClass);
$oNewObj->Set('attribute', '');
$iId = $oNewObj->DBInsertNoReload();
return $iId;
}
protected static function DoCreateDimension($sName, $aDimensionData)
{
$oNewObj = MetaModel::NewObject("URP_Dimensions");
$oNewObj->Set('name', $sName);
$oNewObj->Set('description', $aDimensionData['description']);
$oNewObj->Set('type', $aDimensionData['type']);
$iId = $oNewObj->DBInsertNoReload();
return $iId;
}
protected static function DoCreateProfileProjection($iProfile, $iDimension)
@@ -1361,6 +1390,18 @@ class SetupITILProfiles
return $iId;
}
protected static function DoCreateAdminProfile()
{
$oNewObj = MetaModel::NewObject("URP_Profiles");
$oNewObj->Set('name', 'Administrator');
$oNewObj->Set('description', 'Has the rights on everything (bypassing any control)');
$iNewId = $oNewObj->DBInsertNoReload();
if ($iNewId != ADMIN_PROFILE_ID)
{
throw new CoreException('Admin profile could not be created with its standard id', array('requested'=>ADMIN_PROFILE_ID, 'obtained'=>$iNewId));
}
}
protected static function DoCreateOneProfile($sName, $aProfileData)
{
$sDescription = $aProfileData['description'];
@@ -1430,8 +1471,25 @@ class SetupITILProfiles
}
}
public static function DoCreateDimensions()
{
$aClass = MetaModel::GetClasses();
foreach(self::$m_aDimensions as $sName => $aDimensionData)
{
$iDimension = self::DoCreateDimension($sName, $aDimensionData);
foreach($aClass as $sClass)
{
self::DoCreateClassProjection($iDimension, $sClass);
}
}
}
public static function DoCreateProfiles()
{
self::DoCreateAdminProfile();
foreach(self::$m_aProfiles as $sName => $aProfileData)
{
self::DoCreateOneProfile($sName, $aProfileData);

View File

@@ -274,7 +274,8 @@ EOF
$sOnClick = " onclick=\"this.value='';this.onclick=null;\"";
}
$sUserName = UserRights::GetUser();
echo "<div id=\"OrganizationSelection\" style=\"position:absolute; top:18px; right:16px; width:400px;\">Logged in as '$sUserName'&nbsp;&nbsp;&nbsp;";
$sIsAdmin = UserRights::IsAdministrator() ? '(Administrator)' : '';
echo "<div id=\"OrganizationSelection\" style=\"position:absolute; top:18px; right:16px; width:500px;\">Logged in as '$sUserName'&nbsp;$sIsAdmin&nbsp;&nbsp;";
echo "<form action=\"../pages/UI.php\" method=\"post\" style=\"display:inline\">\n";
echo "<input type=\"Submit\" value=\"Log off\">\n";
echo "<input type=\"hidden\" name=\"operation\" value=\"logoff\">\n";

View File

@@ -1,13 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Set>
<URP_Dimensions id="1">
<name>organization</name>
<description></description>
<type>bizOrganization</type>
</URP_Dimensions>
<URP_Dimensions id="2">
<name>site</name>
<description></description>
<type></type>
</URP_Dimensions>
</Set>
</Set>

View File

@@ -1,7 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Set>
<URP_Profiles id="1">
<name>Administrator</name>
<description>Has the rights on everything (ignores the grant records)</description>
</URP_Profiles>
</Set>

View File

@@ -1,555 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Set>
<URP_ClassProjection id="1">
<dimensionid>1</dimensionid>
<class>bizOrganization</class>
<value>&lt;this&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="2">
<dimensionid>1</dimensionid>
<class>logRealObject</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="3">
<dimensionid>1</dimensionid>
<class>bizContact</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="4">
<dimensionid>1</dimensionid>
<class>bizPerson</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="5">
<dimensionid>1</dimensionid>
<class>bizTeam</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="6">
<dimensionid>1</dimensionid>
<class>bizDocument</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="7">
<dimensionid>1</dimensionid>
<class>bizDocVersion</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="8">
<dimensionid>1</dimensionid>
<class>lnkDocumentRealObject</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="9">
<dimensionid>1</dimensionid>
<class>lnkContactRealObject</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="10">
<dimensionid>1</dimensionid>
<class>logInfra</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="11">
<dimensionid>1</dimensionid>
<class>bizLocation</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="12">
<dimensionid>1</dimensionid>
<class>bizCircuit</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="13">
<dimensionid>1</dimensionid>
<class>bizInterface</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="14">
<dimensionid>1</dimensionid>
<class>lnkInterfaces</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="15">
<dimensionid>1</dimensionid>
<class>bizDevice</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="16">
<dimensionid>1</dimensionid>
<class>bizPC</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="17">
<dimensionid>1</dimensionid>
<class>bizServer</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="18">
<dimensionid>1</dimensionid>
<class>bizNetworkDevice</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="19">
<dimensionid>1</dimensionid>
<class>bizInfraGroup</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="20">
<dimensionid>1</dimensionid>
<class>bizApplication</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="21">
<dimensionid>1</dimensionid>
<class>lnkInfraGrouping</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="22">
<dimensionid>1</dimensionid>
<class>lnkClientServer</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="23">
<dimensionid>1</dimensionid>
<class>bizPatch</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="24">
<dimensionid>1</dimensionid>
<class>bizIncidentTicket</class>
<value>&lt;this&gt;</value>
<attribute>customer_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="25">
<dimensionid>1</dimensionid>
<class>lnkRelatedTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="26">
<dimensionid>1</dimensionid>
<class>lnkInfraTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="27">
<dimensionid>1</dimensionid>
<class>lnkContactTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="28">
<dimensionid>1</dimensionid>
<class>bizWorkgroup</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="29">
<dimensionid>1</dimensionid>
<class>bizContract</class>
<value>&lt;this&gt;</value>
<attribute>org_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="30">
<dimensionid>1</dimensionid>
<class>lnkInfraContract</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="31">
<dimensionid>1</dimensionid>
<class>lnkContactContract</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="32">
<dimensionid>1</dimensionid>
<class>lnkDocumentContract</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="33">
<dimensionid>1</dimensionid>
<class>bizChangeTicket</class>
<value>&lt;this&gt;</value>
<attribute>customer_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="34">
<dimensionid>1</dimensionid>
<class>lnkInfraChangeTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="35">
<dimensionid>1</dimensionid>
<class>lnkContactChange</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="36">
<dimensionid>1</dimensionid>
<class>bizKnownError</class>
<value>&lt;this&gt;</value>
<attribute>cust_id</attribute>
</URP_ClassProjection>
<URP_ClassProjection id="37">
<dimensionid>1</dimensionid>
<class>lnkInfraError</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="38">
<dimensionid>1</dimensionid>
<class>lnkDocumentError</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="39">
<dimensionid>1</dimensionid>
<class>AuditCategory</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="40">
<dimensionid>1</dimensionid>
<class>AuditRule</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="41">
<dimensionid>1</dimensionid>
<class>menuNode</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="42">
<dimensionid>1</dimensionid>
<class>CMDBChange</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="43">
<dimensionid>1</dimensionid>
<class>CMDBChangeOp</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="44">
<dimensionid>1</dimensionid>
<class>CMDBChangeOpCreate</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="45">
<dimensionid>1</dimensionid>
<class>CMDBChangeOpDelete</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="46">
<dimensionid>1</dimensionid>
<class>CMDBChangeOpSetAttribute</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="47">
<dimensionid>2</dimensionid>
<class>bizOrganization</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="48">
<dimensionid>2</dimensionid>
<class>logRealObject</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="49">
<dimensionid>2</dimensionid>
<class>bizContact</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="50">
<dimensionid>2</dimensionid>
<class>bizPerson</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="51">
<dimensionid>2</dimensionid>
<class>bizTeam</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="52">
<dimensionid>2</dimensionid>
<class>bizDocument</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="53">
<dimensionid>2</dimensionid>
<class>bizDocVersion</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="54">
<dimensionid>2</dimensionid>
<class>lnkDocumentRealObject</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="55">
<dimensionid>2</dimensionid>
<class>lnkContactRealObject</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="56">
<dimensionid>2</dimensionid>
<class>logInfra</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="57">
<dimensionid>2</dimensionid>
<class>bizLocation</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="58">
<dimensionid>2</dimensionid>
<class>bizCircuit</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="59">
<dimensionid>2</dimensionid>
<class>bizInterface</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="60">
<dimensionid>2</dimensionid>
<class>lnkInterfaces</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="61">
<dimensionid>2</dimensionid>
<class>bizDevice</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="62">
<dimensionid>2</dimensionid>
<class>bizPC</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="63">
<dimensionid>2</dimensionid>
<class>bizServer</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="64">
<dimensionid>2</dimensionid>
<class>bizNetworkDevice</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="65">
<dimensionid>2</dimensionid>
<class>bizInfraGroup</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="66">
<dimensionid>2</dimensionid>
<class>bizApplication</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="67">
<dimensionid>2</dimensionid>
<class>lnkInfraGrouping</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="68">
<dimensionid>2</dimensionid>
<class>lnkClientServer</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="69">
<dimensionid>2</dimensionid>
<class>bizPatch</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="70">
<dimensionid>2</dimensionid>
<class>bizIncidentTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="71">
<dimensionid>2</dimensionid>
<class>lnkRelatedTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="72">
<dimensionid>2</dimensionid>
<class>lnkInfraTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="73">
<dimensionid>2</dimensionid>
<class>lnkContactTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="74">
<dimensionid>2</dimensionid>
<class>bizWorkgroup</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="75">
<dimensionid>2</dimensionid>
<class>bizContract</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="76">
<dimensionid>2</dimensionid>
<class>lnkInfraContract</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="77">
<dimensionid>2</dimensionid>
<class>lnkContactContract</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="78">
<dimensionid>2</dimensionid>
<class>lnkDocumentContract</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="79">
<dimensionid>2</dimensionid>
<class>bizChangeTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="80">
<dimensionid>2</dimensionid>
<class>lnkInfraChangeTicket</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="81">
<dimensionid>2</dimensionid>
<class>lnkContactChange</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="82">
<dimensionid>2</dimensionid>
<class>bizKnownError</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="83">
<dimensionid>2</dimensionid>
<class>lnkInfraError</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="84">
<dimensionid>2</dimensionid>
<class>lnkDocumentError</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="85">
<dimensionid>2</dimensionid>
<class>AuditCategory</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="86">
<dimensionid>2</dimensionid>
<class>AuditRule</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="87">
<dimensionid>2</dimensionid>
<class>menuNode</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="88">
<dimensionid>2</dimensionid>
<class>CMDBChange</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="89">
<dimensionid>2</dimensionid>
<class>CMDBChangeOp</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="90">
<dimensionid>2</dimensionid>
<class>CMDBChangeOpCreate</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="91">
<dimensionid>2</dimensionid>
<class>CMDBChangeOpDelete</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
<URP_ClassProjection id="92">
<dimensionid>2</dimensionid>
<class>CMDBChangeOpSetAttribute</class>
<value>&lt;any&gt;</value>
<attribute></attribute>
</URP_ClassProjection>
</Set>
</Set>

View File

@@ -1,15 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Set>
<URP_ProfileProjection id="1">
<dimensionid>1</dimensionid>
<profileid>1</profileid>
<value>true</value>
<attribute></attribute>
</URP_ProfileProjection>
<URP_ProfileProjection id="2">
<dimensionid>2</dimensionid>
<profileid>1</profileid>
<value>true</value>
<attribute></attribute>
</URP_ProfileProjection>
</Set>

View File

@@ -381,7 +381,7 @@ function DisplayStep4(setup_web_page $oP, Config $oConfig, $sAdminUser, $sAdminP
$oP->add("<h2>Step 4: Loading of sample data</h2>\n");
$oP->p("<fieldset><legend> Do you want to load sample data into the database ? </legend>\n");
$oP->p("<input type=\"radio\" id=\"sample_data\" name=\"sample_data\" checked value=\"yes\"> Yes, for testing purposes, populate the database with sample data.\n");
$oP->p("<input type=\"radio\" name=\"sample_data\" unchecked value=\"no\"> No, this is a production system, I will load real data myself.\n");
$oP->p("<input type=\"radio\" name=\"sample_data\" unchecked value=\"no\"> No, this is a production system, load only the data required by the application.\n");
$oP->p("</fieldset>\n");
$oP->add("<button onClick=\"window.history.back();\"><< Back</button>\n");
$oP->add("&nbsp;&nbsp;&nbsp;&nbsp;\n");