iTop Newsroom implementation - painfully merged manually...

This commit is contained in:
Denis Flaven
2018-11-21 19:36:51 +01:00
parent a659de9c9b
commit 5ccfa24b27
20 changed files with 1118 additions and 95 deletions

View File

@@ -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.'">&nbsp;'.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('&nbsp;&nbsp;');
$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');