When iTop is in read only mode, then the portal displays a banner and prevent the user from accessing the modification forms

SVN:trunk[2540]
This commit is contained in:
Romain Quetiez
2012-12-06 11:42:13 +00:00
parent bee851155a
commit cb4735ba6b
3 changed files with 80 additions and 53 deletions

View File

@@ -255,6 +255,21 @@ EOF
public function output()
{
$sApplicationBanner = '';
if (!MetaModel::DBHasAccess(ACCESS_USER_WRITE))
{
$sReadOnly = Dict::S('UI:AccessRO-Users');
$sAdminMessage = trim(MetaModel::GetConfig()->Get('access_message'));
$sApplicationBanner .= '<div id="admin-banner">';
$sApplicationBanner .= '<img src="../images/locked.png" style="vertical-align:middle;">';
$sApplicationBanner .= '&nbsp;<b>'.$sReadOnly.'</b>';
if (strlen($sAdminMessage) > 0)
{
$sApplicationBanner .= '&nbsp;: '.$sAdminMessage.'';
}
$sApplicationBanner .= '</div>';
}
$sMenu = '';
if ($this->m_bEnableDisconnectButton)
{
@@ -264,7 +279,7 @@ EOF
{
$sMenu .= "<a class=\"button\" id=\"{$aMenuItem['id']}\" href=\"{$aMenuItem['hyperlink']}\"><span>".Dict::S($aMenuItem['label'])."</span></a>";
}
$this->s_content = '<div id="portal"><div id="welcome">'.$this->m_sWelcomeMsg.'</div><div id="banner"><div id="logo"></div><div id="menu">'.$sMenu.'</div></div><div id="content">'.$this->s_content.'</div></div>';
$this->s_content = '<div id="portal"><div id="welcome">'.$this->m_sWelcomeMsg.'</div><div id="banner"><div id="logo"></div><div id="menu">'.$sMenu.'</div></div>'.$sApplicationBanner.'<div id="content">'.$this->s_content.'</div></div>';
parent::output();
}

View File

@@ -507,40 +507,43 @@ function ShowDetailsRequest(WebPage $oP, $oObj)
$bIsEscalateButton = false;
$bIsCloseButton = false;
$bEditAttachments = false;
switch($oObj->GetState())
$aEditAtt = array();
if (!MetaModel::DBIsReadOnly())
{
case 'new':
case 'assigned':
case 'frozen':
$aEditAtt = array(
PORTAL_ATTCODE_LOG => '????'
);
$bEditAttachments = true;
// disabled - $bIsEscalateButton = true;
break;
case 'escalated_tto':
case 'escalated_ttr':
$aEditAtt = array(
PORTAL_ATTCODE_LOG => '????'
);
$bEditAttachments = true;
break;
case 'resolved':
$aEditAtt = array(
// non, read-only dans cet etat - 'ticket_log' => '????',
'user_satisfaction' => '????',
PORTAL_ATTCODE_COMMENT => '????',
);
$bIsCloseButton = true;
break;
case 'closed':
case 'closure_requested':
default:
$aEditAtt = array();
break;
switch($oObj->GetState())
{
case 'new':
case 'assigned':
case 'frozen':
$aEditAtt = array(
PORTAL_ATTCODE_LOG => '????'
);
$bEditAttachments = true;
// disabled - $bIsEscalateButton = true;
break;
case 'escalated_tto':
case 'escalated_ttr':
$aEditAtt = array(
PORTAL_ATTCODE_LOG => '????'
);
$bEditAttachments = true;
break;
case 'resolved':
$aEditAtt = array(
// non, read-only dans cet etat - 'ticket_log' => '????',
'user_satisfaction' => '????',
PORTAL_ATTCODE_COMMENT => '????',
);
$bIsCloseButton = true;
break;
case 'closed':
case 'closure_requested':
default:
break;
}
}
// REFACTORISER LA MISE EN FORME
@@ -771,7 +774,10 @@ try
case 'create_request':
DisplayMainMenu($oP);
CreateRequest($oP, $oUserOrg);
if (!MetaModel::DBIsReadOnly())
{
CreateRequest($oP, $oUserOrg);
}
break;
case 'details':
@@ -782,26 +788,29 @@ try
case 'update_request':
DisplayMainMenu($oP);
$oObj = $oP->FindObjectFromArgs(array('UserRequest'));
switch(get_class($oObj))
if (!MetaModel::DBIsReadOnly())
{
case 'UserRequest':
$aAttList = array(PORTAL_ATTCODE_LOG, 'user_satisfaction', PORTAL_ATTCODE_COMMENT);
break;
default:
throw new Exception("Implementation issue: unexpected class '".get_class($oObj)."'");
$oObj = $oP->FindObjectFromArgs(array('UserRequest'));
switch(get_class($oObj))
{
case 'UserRequest':
$aAttList = array(PORTAL_ATTCODE_LOG, 'user_satisfaction', PORTAL_ATTCODE_COMMENT);
break;
default:
throw new Exception("Implementation issue: unexpected class '".get_class($oObj)."'");
}
try
{
$oP->DoUpdateObjectFromPostedForm($oObj, $aAttList);
$oObj->Reload(); // Make sure the object is in good shape to be displayed
}
catch(TransactionException $e)
{
$oP->add("<h1>".Dict::S('UI:Error:ObjectAlreadyUpdated')."</h1>\n");
}
DisplayObject($oP, $oObj, $oUserOrg);
}
try
{
$oP->DoUpdateObjectFromPostedForm($oObj, $aAttList);
$oObj->Reload(); // Make sure the object is in good shape to be displayed
}
catch(TransactionException $e)
{
$oP->add("<h1>".Dict::S('UI:Error:ObjectAlreadyUpdated')."</h1>\n");
}
DisplayObject($oP, $oObj, $oUserOrg);
break;
case 'show_ongoing':

View File

@@ -28,6 +28,9 @@ div#portal #banner {
vertical-align: middle;
width: 100%;
}
div#portal #admin-banner {
width: 100%;
}
div#portal #logo {
background: url("../images/itop-logo.png") no-repeat scroll 0 0 transparent;
border: 0 none;