use of org.apereo.portal.layout.om.IStylesheetUserPreferences in project uPortal by Jasig.
the class StylesheetUserPreferencesServiceImpl method setStylesheetParameter.
@Transactional
@Override
public String setStylesheetParameter(HttpServletRequest request, PreferencesScope prefScope, String name, String value) {
logger.trace("Setting stylesheet parameter {} with scope {} to {}.", name, prefScope, value);
final StylesheetPreferencesKey stylesheetPreferencesKey = this.getStylesheetPreferencesKey(request, prefScope);
final IStylesheetDescriptor stylesheetDescriptor = stylesheetPreferencesKey.stylesheetDescriptor;
final IStylesheetParameterDescriptor stylesheetParameterDescriptor = stylesheetDescriptor.getStylesheetParameterDescriptor(name);
if (stylesheetParameterDescriptor == null) {
logger.warn("Attempted to set stylesheet parameter {}={} but no such stylesheet parameter is defined in stylesheet descriptor {}. It will be ignored", new Object[] { name, value, stylesheetDescriptor.getName() });
return null;
}
if (this.compareValues(value, stylesheetParameterDescriptor.getDefaultValue())) {
return this.removeStylesheetParameter(request, prefScope, name);
}
final Scope scope = this.getWriteScope(request, prefScope, stylesheetPreferencesKey, stylesheetParameterDescriptor);
switch(scope) {
case PERSISTENT:
{
IStylesheetUserPreferences stylesheetUserPreferences = this.getStylesheetUserPreferences(request, stylesheetPreferencesKey);
if (stylesheetUserPreferences == null) {
stylesheetUserPreferences = this.stylesheetUserPreferencesDao.createStylesheetUserPreferences(stylesheetDescriptor, stylesheetPreferencesKey.person, stylesheetPreferencesKey.userProfile);
this.clearStylesheetUserPreferencesCache(request, stylesheetPreferencesKey);
}
final String oldValue = stylesheetUserPreferences.setStylesheetParameter(name, value);
this.stylesheetUserPreferencesDao.storeStylesheetUserPreferences(stylesheetUserPreferences);
return oldValue;
}
default:
{
return this.putDataValue(request, stylesheetPreferencesKey, scope, STYLESHEET_PARAMETERS_KEY, name, value);
}
}
}
use of org.apereo.portal.layout.om.IStylesheetUserPreferences in project uPortal by Jasig.
the class StylesheetUserPreferencesServiceImpl method removeStylesheetParameter.
@Transactional
@Override
public String removeStylesheetParameter(HttpServletRequest request, PreferencesScope prefScope, String name) {
final StylesheetPreferencesKey stylesheetPreferencesKey = this.getStylesheetPreferencesKey(request, prefScope);
final IStylesheetDescriptor stylesheetDescriptor = stylesheetPreferencesKey.stylesheetDescriptor;
final IStylesheetParameterDescriptor stylesheetParameterDescriptor = stylesheetDescriptor.getStylesheetParameterDescriptor(name);
if (stylesheetParameterDescriptor == null) {
logger.warn("Attempted to remove stylesheet parameter {} but no such stylesheet parameter is defined in stylesheet descriptor {}. It will be ignored", new Object[] { name, stylesheetDescriptor.getName() });
return null;
}
final Scope scope = this.getWriteScope(request, prefScope, stylesheetPreferencesKey, stylesheetParameterDescriptor);
switch(scope) {
case PERSISTENT:
{
final IStylesheetUserPreferences stylesheetUserPreferences = this.getStylesheetUserPreferences(request, stylesheetPreferencesKey);
if (stylesheetUserPreferences == null) {
return null;
}
final String oldValue = stylesheetUserPreferences.removeStylesheetParameter(name);
this.stylesheetUserPreferencesDao.storeStylesheetUserPreferences(stylesheetUserPreferences);
return oldValue;
}
default:
{
return removeDataValue(request, stylesheetPreferencesKey, scope, STYLESHEET_PARAMETERS_KEY, name);
}
}
}
use of org.apereo.portal.layout.om.IStylesheetUserPreferences in project uPortal by Jasig.
the class RDBMDistributedLayoutStore method createDistributedUserLayout.
private DistributedUserLayout createDistributedUserLayout(final IPerson person, final IUserProfile profile, final Document ILF, final Set<String> fragmentNames) {
final int structureStylesheetId = profile.getStructureStylesheetId();
final IStylesheetUserPreferences distributedStructureStylesheetUserPreferences = this.loadDistributedStylesheetUserPreferences(person, profile, structureStylesheetId, fragmentNames);
final int themeStylesheetId = profile.getThemeStylesheetId();
final IStylesheetUserPreferences distributedThemeStylesheetUserPreferences = this.loadDistributedStylesheetUserPreferences(person, profile, themeStylesheetId, fragmentNames);
return new DistributedUserLayout(ILF, fragmentNames, distributedStructureStylesheetUserPreferences, distributedThemeStylesheetUserPreferences);
}
use of org.apereo.portal.layout.om.IStylesheetUserPreferences in project uPortal by Jasig.
the class RDBMDistributedLayoutStore method addStylesheetUserPreferencesAttributes.
private void addStylesheetUserPreferencesAttributes(IPerson person, IUserProfile profile, org.dom4j.Document layoutDoc, int stylesheetId, String attributeType) {
final IStylesheetDescriptor structureStylesheetDescriptor = this.stylesheetDescriptorDao.getStylesheetDescriptor(stylesheetId);
final IStylesheetUserPreferences ssup = this.stylesheetUserPreferencesDao.getStylesheetUserPreferences(structureStylesheetDescriptor, person, profile);
if (ssup != null) {
final Collection<String> allLayoutAttributeNodeIds = ssup.getAllLayoutAttributeNodeIds();
for (final String nodeId : allLayoutAttributeNodeIds) {
final MapPopulator<String, String> layoutAttributesPopulator = new MapPopulator<String, String>();
ssup.populateLayoutAttributes(nodeId, layoutAttributesPopulator);
final Map<String, String> layoutAttributes = layoutAttributesPopulator.getMap();
final org.dom4j.Element element = layoutDoc.elementByID(nodeId);
if (element == null) {
logger.warn("No node with id '{}' found in layout for: {}. Stylesheet user preference layout attributes will be ignored: {}", nodeId, person.getUserName(), layoutAttributes);
continue;
}
for (final Entry<String, String> attributeEntry : layoutAttributes.entrySet()) {
final String name = attributeEntry.getKey();
final String value = attributeEntry.getValue();
logger.debug("Adding structure folder attribute: name={}, value={}", name, value);
final org.dom4j.Element structAttrElement = this.fac.createElement(attributeType + "-attribute");
final org.dom4j.Element nameAttribute = structAttrElement.addElement("name");
nameAttribute.setText(name);
final org.dom4j.Element valueAttribute = structAttrElement.addElement("value");
valueAttribute.setText(value);
element.elements().add(0, structAttrElement);
}
}
} else {
logger.debug("no StylesheetUserPreferences found for {}, {}", person, profile);
}
}
use of org.apereo.portal.layout.om.IStylesheetUserPreferences in project uPortal by Jasig.
the class StylesheetUserPreferencesServiceImplTest method testThemeStylesheetUserPreferences.
/** @throws Exception */
@Test
public void testThemeStylesheetUserPreferences() throws Exception {
//Setup mocks
final HttpServletRequest request = new MockHttpServletRequest();
//initialize the session
request.getSession();
final IStylesheetDescriptorDao stylesheetDescriptorDao = mock(IStylesheetDescriptorDao.class);
final IUserInstanceManager userInstanceManager = mock(IUserInstanceManager.class);
final IStylesheetUserPreferencesDao stylesheetUserPreferencesDao = mock(IStylesheetUserPreferencesDao.class);
final IFragmentDefinitionUtils fragmentUtils = mock(IFragmentDefinitionUtils.class);
final IUserInstance userInstance = mock(IUserInstance.class);
when(userInstanceManager.getUserInstance(request)).thenReturn(userInstance);
final IPerson person = mock(IPerson.class);
when(userInstance.getPerson()).thenReturn(person);
final IUserPreferencesManager preferencesManager = mock(IUserPreferencesManager.class);
when(userInstance.getPreferencesManager()).thenReturn(preferencesManager);
final IUserProfile userProfile = mock(IUserProfile.class);
when(preferencesManager.getUserProfile()).thenReturn(userProfile);
final IUserLayoutManager userLayoutManager = mock(IUserLayoutManager.class);
when(preferencesManager.getUserLayoutManager()).thenReturn(userLayoutManager);
final IUserLayout userLayout = mock(IUserLayout.class);
when(userLayoutManager.getUserLayout()).thenReturn(userLayout);
when(userProfile.getThemeStylesheetId()).thenReturn(1);
final IStylesheetDescriptor stylesheetDescriptor = mock(IStylesheetDescriptor.class);
when(stylesheetDescriptorDao.getStylesheetDescriptor(1)).thenReturn(stylesheetDescriptor);
final ILayoutAttributeDescriptor skinLayoutAttributeDescriptor = mock(ILayoutAttributeDescriptor.class);
when(stylesheetDescriptor.getLayoutAttributeDescriptor("minimized")).thenReturn(skinLayoutAttributeDescriptor);
when(skinLayoutAttributeDescriptor.getName()).thenReturn("minimized");
when(skinLayoutAttributeDescriptor.getScope()).thenReturn(Scope.REQUEST);
when(skinLayoutAttributeDescriptor.getTargetElementNames()).thenReturn(Collections.singleton("folder"));
final IOutputPropertyDescriptor mediaOutputPropertyDescriptor = mock(IOutputPropertyDescriptor.class);
when(stylesheetDescriptor.getOutputPropertyDescriptor("media")).thenReturn(mediaOutputPropertyDescriptor);
when(mediaOutputPropertyDescriptor.getName()).thenReturn("media");
when(mediaOutputPropertyDescriptor.getScope()).thenReturn(Scope.SESSION);
final IStylesheetParameterDescriptor skinStylesheetParameterDescriptor = mock(IStylesheetParameterDescriptor.class);
when(stylesheetDescriptor.getStylesheetParameterDescriptor("skin")).thenReturn(skinStylesheetParameterDescriptor);
when(skinStylesheetParameterDescriptor.getName()).thenReturn("media");
when(skinStylesheetParameterDescriptor.getScope()).thenReturn(Scope.PERSISTENT);
final IStylesheetUserPreferences persistentStylesheetUserPreferences = mock(IStylesheetUserPreferences.class);
when(stylesheetUserPreferencesDao.createStylesheetUserPreferences(stylesheetDescriptor, person, userProfile)).thenReturn(persistentStylesheetUserPreferences);
when(stylesheetUserPreferencesDao.getStylesheetUserPreferences(stylesheetDescriptor, person, userProfile)).thenReturn(persistentStylesheetUserPreferences);
when(persistentStylesheetUserPreferences.getStylesheetParameter("skin")).thenReturn(null).thenReturn("red");
//Create and initialize service bean
final StylesheetUserPreferencesServiceImpl stylesheetUserPreferencesService = new StylesheetUserPreferencesServiceImpl();
stylesheetUserPreferencesService.setStylesheetDescriptorDao(stylesheetDescriptorDao);
stylesheetUserPreferencesService.setUserInstanceManager(userInstanceManager);
stylesheetUserPreferencesService.setStylesheetUserPreferencesDao(stylesheetUserPreferencesDao);
stylesheetUserPreferencesService.setFragmentDefinitionUtils(fragmentUtils);
//Run test
String actual;
actual = stylesheetUserPreferencesService.getLayoutAttribute(request, PreferencesScope.THEME, "u1l1n1", "minimized");
assertNull(actual);
actual = stylesheetUserPreferencesService.setLayoutAttribute(request, PreferencesScope.THEME, "u1l1n1", "minimized", "true");
assertNull(actual);
actual = stylesheetUserPreferencesService.getLayoutAttribute(request, PreferencesScope.THEME, "u1l1n1", "minimized");
assertEquals("true", actual);
actual = stylesheetUserPreferencesService.getStylesheetParameter(request, PreferencesScope.THEME, "skin");
assertNull(actual);
actual = stylesheetUserPreferencesService.setStylesheetParameter(request, PreferencesScope.THEME, "skin", "red");
verify(persistentStylesheetUserPreferences).setStylesheetParameter("skin", "red");
assertNull(actual);
actual = stylesheetUserPreferencesService.getStylesheetParameter(request, PreferencesScope.THEME, "skin");
assertEquals("red", actual);
}
Aggregations