mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 02:58:43 +02:00
iTop Newsroom implementation - painfully merged manually...
This commit is contained in:
@@ -296,6 +296,79 @@ EOF
|
||||
);
|
||||
} // if count > 0
|
||||
|
||||
$oP->add('</fieldset>');
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Newsroom
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$iCountProviders = 0;
|
||||
$oUser = UserRights::GetUserObject();
|
||||
$aProviders = MetaModel::EnumPlugins('iNewsroomProvider');
|
||||
foreach($aProviders as $oProvider)
|
||||
{
|
||||
if ($oProvider->IsApplicable($oUser))
|
||||
{
|
||||
$iCountProviders++;
|
||||
}
|
||||
}
|
||||
|
||||
$bNewsroomEnabled = (MetaModel::GetConfig()->Get('newsroom_enabled') !== false);
|
||||
if ($bNewsroomEnabled && ($iCountProviders > 0))
|
||||
{
|
||||
$oP->add('<fieldset><legend>'.Dict::S('UI:Newsroom:Preferences').'</legend>');
|
||||
|
||||
$oP->add('<form method="post">');
|
||||
$iNewsroomDisplaySize = (int)appUserPreferences::GetPref('newsroom_display_size', 7);
|
||||
|
||||
if ($iNewsroomDisplaySize < 1) $iNewsroomDisplaySize = 1;
|
||||
if ($iNewsroomDisplaySize > 20) $iNewsroomDisplaySize = 20;
|
||||
$sInput = '<input min="1" max="20" id="newsroom_display_size" type="number" size="2" name="newsroom_display_size" value="'.$iNewsroomDisplaySize.'">';
|
||||
$sIcon = '<img src="../images/newsroom_menu.png" style="vertical-align:middle">';
|
||||
$oP->p(Dict::Format('UI:Newsroom:DisplayAtMost_X_Messages', $sInput, $sIcon));
|
||||
|
||||
/**
|
||||
* @var iNewsroomProvider[] $aProviders
|
||||
*/
|
||||
$aProviderParams = array();
|
||||
$iCountProviders = 0;
|
||||
$sAppRootUrl = utils::GetAbsoluteUrlAppRoot();
|
||||
foreach($aProviders as $oProvider)
|
||||
{
|
||||
if ($oProvider->IsApplicable($oUser))
|
||||
{
|
||||
$sUrl = $oProvider->GetPreferencesUrl();
|
||||
$sProviderClass = get_class($oProvider);
|
||||
$sPreferencesLink = '';
|
||||
if ($sUrl !== null)
|
||||
{
|
||||
if(substr($sUrl, 0, strlen($sAppRootUrl)) === $sAppRootUrl)
|
||||
{
|
||||
$sTarget = ''; // Internal link, open in the same window
|
||||
}
|
||||
else
|
||||
{
|
||||
$sTarget = ' target="_blank"'; // External link, open in new window
|
||||
}
|
||||
$sPreferencesLink = ' - <a class=".newsroom-configuration-link" href="'.$sUrl.'"'.$sTarget.'>'.Dict::S('UI:Newsroom:ConfigurationLink').'</a>';
|
||||
}
|
||||
$sChecked = appUserPreferences::GetPref('newsroom_provider_'.$sProviderClass, true) ? ' checked="" ' : '';
|
||||
$oP->p('<input type="checkbox" id="newsroom_provider_'.$sProviderClass.'" value="on"'.$sChecked.'name="newsroom_provider_'.$sProviderClass.'"><label for="newsroom_provider_'.$sProviderClass.'"> '.Dict::Format('UI:Newsroom:DisplayMessagesFor_Provider', $oProvider->GetLabel()).'</label> '.$sPreferencesLink);
|
||||
}
|
||||
}
|
||||
|
||||
$oP->p('<button style="float:right" onclick="$(\'.itop-newsroom_menu\').newsroom_menu(\'clearCache\');">'.htmlentities(Dict::S('UI:Newsroom:ResetCache')).'</button>');
|
||||
$oP->add('<input type="hidden" name="operation" value="apply_newsroom_preferences"/>');
|
||||
$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>');
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Footer
|
||||
@@ -365,6 +438,53 @@ try
|
||||
DisplayPreferences($oPage);
|
||||
break;
|
||||
|
||||
case 'apply_newsroom_preferences':
|
||||
$iCountProviders = 0;
|
||||
$oUser = UserRights::GetUserObject();
|
||||
$aProviders = MetaModel::EnumPlugins('iNewsroomProvider');
|
||||
foreach($aProviders as $oProvider)
|
||||
{
|
||||
if ($oProvider->IsApplicable($oUser))
|
||||
{
|
||||
$iCountProviders++;
|
||||
}
|
||||
}
|
||||
$bNewsroomEnabled = (MetaModel::GetConfig()->Get('newsroom_enabled') !== false);
|
||||
if ($bNewsroomEnabled && ($iCountProviders > 0))
|
||||
{
|
||||
$iNewsroomDisplaySize = (int)utils::ReadParam('newsroom_display_size', 7);
|
||||
if ($iNewsroomDisplaySize < 1) $iNewsroomDisplaySize = 1;
|
||||
if ($iNewsroomDisplaySize > 20) $iNewsroomDisplaySize = 20;
|
||||
$iCurrentDisplaySize = (int)appUserPreferences::GetPref('newsroom_display_size', $iNewsroomDisplaySize);
|
||||
if ($iCurrentDisplaySize != $iNewsroomDisplaySize)
|
||||
{
|
||||
// Save the preference only if it differs from the current (or default) value
|
||||
appUserPreferences::SetPref('newsroom_display_size', $iNewsroomDisplaySize);
|
||||
}
|
||||
}
|
||||
$bProvidersModified = false;
|
||||
foreach($aProviders as $oProvider)
|
||||
{
|
||||
if ($oProvider->IsApplicable($oUser))
|
||||
{
|
||||
$sProviderClass = get_class($oProvider);
|
||||
$bProviderEnabled = (utils::ReadParam('newsroom_provider_'.$sProviderClass, 'off') == 'on');
|
||||
$bCurrentValue = appUserPreferences::GetPref('newsroom_provider_'.$sProviderClass, true);
|
||||
if ($bCurrentValue != $bProviderEnabled)
|
||||
{
|
||||
// Save the preference only if it differs from the current value
|
||||
$bProvidersModified = true;
|
||||
appUserPreferences::SetPref('newsroom_provider_'.$sProviderClass, $bProviderEnabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($bProvidersModified)
|
||||
{
|
||||
$oPage->add_ready_script('$(".itop-newsroom_menu").newsroom_menu("clearCache");');
|
||||
}
|
||||
DisplayPreferences($oPage);
|
||||
break;
|
||||
|
||||
case 'display':
|
||||
default:
|
||||
$oPage->SetBreadCrumbEntry('ui-tool-preferences', Dict::S('UI:Preferences'), Dict::S('UI:Preferences'), '', utils::GetAbsoluteUrlAppRoot().'images/wrench.png');
|
||||
|
||||
Reference in New Issue
Block a user