mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
The "Preferences" pages now allows a user to:
- change her/his favorite language - set a global default for the length of all lists, overriding the system-wide configuration. SVN:trunk[2139]
This commit is contained in:
@@ -36,26 +36,31 @@ function DisplayPreferences($oP)
|
||||
{
|
||||
$oAppContext = new ApplicationContext();
|
||||
|
||||
$oP->add('<div class="page_header"><h1><img style="vertical-align:middle" src="../images/preferences.png"/> '.Dict::S('UI:Preferences')."</h1></div>\n");
|
||||
$oP->add('<div id="user_prefs" style="max-width:800px; min-width:400px;">');
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Favorite Organizations
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$oP->add('<fieldset><legend>'.Dict::S('UI:FavoriteOrganizations').'</legend>');
|
||||
$oP->p(Dict::S('UI:FavoriteOrganizations+'));
|
||||
$oP->add('<form method="post">');
|
||||
// Favorite organizations: the organizations listed in the drop-down menu
|
||||
$sOQL = ApplicationMenu::GetFavoriteSiloQuery();
|
||||
$oFilter = DBObjectSearch::FromOQL($sOQL);
|
||||
$oBlock = new DisplayBlock($oFilter, 'list', false);
|
||||
|
||||
$oP->add('<div class="page_header"><h1><img style="vertical-align:middle" src="../images/preferences.png"/> '.Dict::S('UI:Preferences')."</h1></div>\n");
|
||||
$oP->add('<div id="user_prefs" style="max-width:800px; min-width:400px;">');
|
||||
$oP->add('<fieldset><legend>'.Dict::S('UI:FavoriteOrganizations').'</legend>');
|
||||
$oP->p(Dict::S('UI:FavoriteOrganizations+'));
|
||||
$oP->add('<form method="post">');
|
||||
$oBlock->Display($oP, 1, array('menu' => false, 'selection_mode' => true, 'selection_type' => 'multiple', 'cssCount'=> '.selectedCount'));
|
||||
$oBlock->Display($oP, 1, array('menu' => false, 'selection_mode' => true, 'selection_type' => 'multiple', 'cssCount'=> '.selectedCount', 'table_id' => 'user_prefs'));
|
||||
$oP->add($oAppContext->GetForForm());
|
||||
$oP->add('<input type="hidden" name="operation" value="apply"/>');
|
||||
$oP->add('</fieldset>');
|
||||
$sURL = utils::GetAbsoluteUrlAppRoot().'pages/UI.php';
|
||||
$sURL = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?'.$oAppContext->GetForLink();
|
||||
$oP->add('<p><input type="button" onClick="window.location.href=\''.$sURL.'\'" value="'.Dict::S('UI:Button:Cancel').'"/>');
|
||||
$oP->add(' ');
|
||||
$oP->add('<input type="submit" value="'.Dict::S('UI:Button:Apply').'"/></p>');
|
||||
$oP->add('</form>');
|
||||
$oP->add('</div>');
|
||||
$oP->add('</fieldset>');
|
||||
|
||||
$aFavoriteOrgs = appUserPreferences::GetPref('favorite_orgs', null);
|
||||
if ($aFavoriteOrgs == null)
|
||||
@@ -73,10 +78,11 @@ function DisplayPreferences($oP)
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckAll('#user_prefs .listResults :checkbox:not(:disabled)', true);
|
||||
$('#user_prefs table.listResults').trigger('check_all');
|
||||
}
|
||||
EOF
|
||||
);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -109,7 +115,81 @@ EOF
|
||||
}
|
||||
EOF
|
||||
);
|
||||
}}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// User Language selection
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$oP->add('<fieldset><legend>'.Dict::S('UI:FavoriteLanguage').'</legend>');
|
||||
$oP->add('<form method="post">');
|
||||
$aLanguages = Dict::GetLanguages();
|
||||
$aSortedlang = array();
|
||||
foreach($aLanguages as $sCode => $aLang)
|
||||
{
|
||||
$aSortedlang[$aLang['description']] = $sCode;
|
||||
}
|
||||
ksort($aSortedlang);
|
||||
$oP->add('<p>'.Dict::S('UI:Favorites:SelectYourLanguage').' <select name="language">');
|
||||
foreach($aSortedlang as $sCode)
|
||||
{
|
||||
$sSelected = ($sCode == Dict::GetUserLanguage()) ? 'selected' : '';
|
||||
$oP->add('<option value="'.$sCode.'" '.$sSelected.'/>'.$aLanguages[$sCode]['description'].' ('.$aLanguages[$sCode]['localized_description'].')</option>');
|
||||
}
|
||||
$oP->add('</select></p>');
|
||||
$oP->add('<input type="hidden" name="operation" value="apply_language"/>');
|
||||
$oP->add($oAppContext->GetForForm());
|
||||
$oP->add('<p><input type="button" onClick="window.location.href=\''.$sURL.'\'" value="'.Dict::S('UI:Button:Cancel').'"/>');
|
||||
$oP->add(' ');
|
||||
$oP->add('<input type="submit" value="'.Dict::S('UI:Button:Apply').'"/></p>');
|
||||
$oP->add('</form>');
|
||||
$oP->add('</fieldset>');
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Other (miscellaneous) settings
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$oP->add('<fieldset><legend>'.Dict::S('UI:FavoriteOtherSettings').'</legend>');
|
||||
$oP->add('<form method="post" onsubmit="return ValidateOtherSettings()">');
|
||||
$iDefaultPageSize = appUserPreferences::GetPref('default_page_size', MetaModel::GetConfig()->GetMinDisplayLimit());
|
||||
$oP->add('<p>'.Dict::Format('UI:Favorites:Default_X_ItemsPerPage', '<input id="default_page_size" name="default_page_size" type="text" size="3" value="'.$iDefaultPageSize.'"/><span id="v_default_page_size"></span>').'</p>');
|
||||
$oP->add('<input type="hidden" name="operation" value="apply_others"/>');
|
||||
$oP->add($oAppContext->GetForForm());
|
||||
$oP->add('<p><input type="button" onClick="window.location.href=\''.$sURL.'\'" value="'.Dict::S('UI:Button:Cancel').'"/>');
|
||||
$oP->add(' ');
|
||||
$oP->add('<input id="other_submit" type="submit" value="'.Dict::S('UI:Button:Apply').'"/></p>');
|
||||
$oP->add('</form>');
|
||||
$oP->add('</fieldset>');
|
||||
|
||||
$oP->add_script(
|
||||
<<<EOF
|
||||
function ValidateOtherSettings()
|
||||
{
|
||||
var sPageLength = $('#default_page_size').val();
|
||||
var iPageLength = parseInt(sPageLength , 10);
|
||||
if (/^[0-9]+$/.test(sPageLength) && (iPageLength > 0))
|
||||
{
|
||||
$('#v_default_page_size').html('');
|
||||
$('#other_submit').removeAttr('disabled');
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#v_default_page_size').html('<img src="../images/validation_error.png"/>');
|
||||
$('#other_submit').attr('disabled', 'disabled');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
);
|
||||
|
||||
$oP->add('</div>');
|
||||
$oP->add_ready_script("$('#fav_page_length').bind('keyup change', function(){ ValidateOtherSettings(); })");
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -148,6 +228,30 @@ try
|
||||
DisplayPreferences($oPage);
|
||||
break;
|
||||
|
||||
case 'apply_language':
|
||||
$sLangCode = utils::ReadParam('language', 'EN US');
|
||||
$oUser = UserRights::GetUserObject();
|
||||
$oUser->Set('language', $sLangCode);
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$sUserString = CMDBChange::GetCurrentUserName();
|
||||
$oMyChange->Set("userinfo", $sUserString);
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oUser->DBUpdateTracked($oMyChange);
|
||||
// Redirect to force a reload/display of the page with the new language
|
||||
$oAppContext = new ApplicationContext();
|
||||
$sURL = utils::GetAbsoluteUrlAppRoot().'pages/preferences.php?'.$oAppContext->GetForLink();
|
||||
$oPage->add_header('Location: '.$sURL);
|
||||
break;
|
||||
case 'apply_others':
|
||||
$iDefaultPageSize = (int)utils::ReadParam('default_page_size', -1);
|
||||
if ($iDefaultPageSize > 0)
|
||||
{
|
||||
appUserPreferences::SetPref('default_page_size', $iDefaultPageSize);
|
||||
}
|
||||
DisplayPreferences($oPage);
|
||||
break;
|
||||
|
||||
case 'display':
|
||||
default:
|
||||
DisplayPreferences($oPage);
|
||||
|
||||
Reference in New Issue
Block a user