Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 134 → Rev 135

/impl/conf/language/MessageResourcesAnnouncements.properties
17,11 → 17,14
announcement.linkAnnouncement=URL
announcement.internalLinkAnnouncement=URL interno do sistema
announcement.target.roles=Pessoas a quem destina
announcement.created.success=Anúncio criado com sucesso
announcement.edited.success=Anúncio alterado com sucesso
announcement.created.success=Anúncio criado com sucesso: <a href="{0}/loadAnnouncement.do?id={1}&dispatch=load">{2}</a>
announcement.edited.success=Anúncio alterado com sucesso: <a href="{0}/loadAnnouncement.do?id={1}&dispatch=load">{2}</a>
announcement.deleted.success=Anúncio apagado com sucesso
announcement.deleted.fail=Não foi possivel apagar o anuncio
announcement.status=Válido
announcement.internal=Dominio
announcement.internal.yes=Interno
announcement.internal.no=Público
 
 
announcements.type.news=Notícias
/impl/conf/language/MessageResources.properties
229,6 → 229,7
remove=Remover
yes=Sim
no=Não
edit=Editar
 
#Login
login.first.time.username=Username
/impl/conf/berserk/sd.xml
132,6 → 132,7
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="Admins"/>-->
<chain name="InternalAnnouncement"/>
<chain name="TargetRolesAnnouncement"/>
</filterChains>
</service>
/impl/conf/berserk/fd.xml
24,6 → 24,12
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>InternalObject</name>
<implementationClass>pt.estgp.estgweb.filters.filters.InternalObject</implementationClass>
<description>Checks if the requested object is internal and if user is authenticated</description>
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>OwnerUsersClass</name>
<implementationClass>pt.estgp.estgweb.filters.filters.OwnerUsersClass</implementationClass>
<description>Checks if the requester contains certain roles</description>
/impl/conf/berserk/fcd.xml
54,6 → 54,13
and referenceClass Name already in 2º filter paramenter
-->
<filterChain>
<name>InternalAnnouncement</name>
<expression>InternalObject("serializable","pt.estgp.estgweb.domain.Announcement")</expression>
<description>Check if the object is internal</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>TargetRolesAnnouncement</name>
<expression>TargetRoleUsersClass("serializable","pt.estgp.estgweb.domain.Announcement") || OwnerUsersClass("serializable","pt.estgp.estgweb.domain.Announcement")</expression>
<description>Owner of an object Control Chain</description>
/impl/src/java/pt/estgp/estgweb/services/announcements/AnnouncementsCommonServices.java
19,31 → 19,29
 
import jomm.dao.impl.AbstractDao;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
* <p/>
* <p/>
* Created at 17/Out/2003 , 23:45:24
* @date 25/Apr/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class AnnouncementsCommonServices implements IService, IModuleCommonServices {
public class AnnouncementsCommonServices implements IService, IModuleCommonServices
{
 
private static final Logger logger = Logger.getLogger(AnnouncementsCommonServices.class);
 
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession)
{
return 0; // todo To change body of implemented methods use File | Settings | File Templates.
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) {
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
DefaultSearchResults searchResults = new DefaultSearchResults();
searchResults.setModule(ModuleEnum.Announcements);
List<String> roles;
if (userSession == null || userSession.getUser() == null || ((UserImpl) userSession.getUser()).getRolesList() == null || ((UserImpl) userSession.getUser()).getRolesList().size() == 0) {
if (userSession == null || userSession.getUser() == null || ((UserImpl) userSession.getUser()).getRolesList() == null || ((UserImpl) userSession.getUser()).getRolesList().size() == 0)
{
roles = new ArrayList<String>();
roles.add(Globals.ALL_ROLE);
}
51,11 → 49,13
roles = ((UserImpl) userSession.getUser()).getRolesList();
 
searchResults.setTotalResults(DaoFactory.getAnnouncementDaoImpl().countAnnouncements(search, searchType, roles, null));
if (searchResults.getTotalResults() > 0) {
if (searchResults.getTotalResults() > 0)
{
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().searchAnnouncements(search, searchType, maxResults, page, roles, null);
if (announcements == null)
return searchResults;
for (Announcement a : announcements) {
for (Announcement a : announcements)
{
DefaultResult defaultResult = new DefaultResult();
defaultResult.setTitle(a.getTitle());
defaultResult.setSubTitle("announcements.type." + a.getType());
68,21 → 68,25
return searchResults;
}
 
public int countToDo(UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
public int countToDo(UserSession userSession)
{
return 0; //todo To change body of implemented methods use File | Settings | File Templates.
}
 
public IToDoCat getToDo(UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
public IToDoCat getToDo(UserSession userSession)
{
return null; //todo To change body of implemented methods use File | Settings | File Templates.
}
 
public static void main(String[] args) {
public static void main(String[] args)
{
AbstractDao.getCurrentSession().beginTransaction();
UserSession sess = new UserSessionImpl();
sess.setUser(new UserImpl());
sess.getUser().setRoles("all");
ISearchResults searchResults = new AnnouncementsCommonServices().search("teste", SearchTypeEnum.AllWords, 0, 10, sess);
for (IResult result : searchResults.getResults()) {
for (IResult result : searchResults.getResults())
{
System.out.println("title:" + result.getTitle());
System.out.println("subTitle:" + result.getSubTitle());
System.out.println("text:" + result.getText());
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadTopFlashNewsIterateService.java
16,11 → 16,10
import java.util.ArrayList;
 
/**
* Created by IntelliJ IDEA.
* User: Fabio
* Date: 28/Mar/2008
* Time: 11:42:28
* To change this template use File | Settings | File Templates.
* @author Jorge Machado
* @date 28/Mar/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class LoadTopFlashNewsIterateService implements IService
{
37,18 → 36,20
iterator = 0;
 
int size = DaoFactory.getAnnouncementDaoImpl().countAnnouncements(1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS,null);
iterator = iterator % size;
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS,subTarget);
iterator++;
((UserSessionImpl)sess).put(flashNewsIterator,iterator);
if(size != 0)
{
iterator = iterator % size;
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS,subTarget);
iterator++;
((UserSessionImpl)sess).put(flashNewsIterator,iterator);
 
if(announcements == null)
return null;
logger.info("Loading announcement top flash iterator");
if(announcements.size() > 0)
{
AnnouncementView announcementView = new AnnouncementView(announcements.get(0));
return announcementView;
if(announcements == null)
return null;
logger.info("Loading announcement top flash iterator");
if(announcements.size() > 0)
{
return new AnnouncementView(announcements.get(0));
}
}
return null;
}
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java
1,6 → 1,7
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.Globals;
 
import java.io.Serializable;
import java.util.Date;
90,4 → 91,19
{
return this;
}
 
public boolean isSuperUser()
{
return super.isSuperuser() || hasRole(Globals.SUPER_USER_ROLE);
}
 
public boolean isAdmin()
{
return hasRole(Globals.ADMIN_ROLE);
}
 
public boolean isSuperUserOrAdmin()
{
return isSuperUser() || isAdmin();
}
}
/impl/src/java/pt/estgp/estgweb/domain/AnnouncementImpl.java
1,6 → 1,7
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum;
 
import java.util.Date;
import java.util.List;
19,6 → 20,13
return super.getOwner();
}
 
public String getStyle()
{
if(super.getStyle() == null)
setStyle(AnnouncementStyleEnum.imgEmbeddedLeft.getMessageKey());
return super.getStyle();
}
 
public Serializable getSerializable()
{
return getId();
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java
35,6 → 35,7
private Date expireDate;
private Integer counter;
private boolean status;
private boolean internal;
private long ownerID;
private String style;
private String internalUrlServer;
66,6 → 67,7
this.internalUrlPath = announcement.getInternalUrlPath();
this.style = announcement.getStyle();
this.internalUrlInclude = announcement.isInternalUrlInclude();
this.internal = announcement.isInternal();
}
 
public void persistViewInObject(Announcement announcement)
86,9 → 88,18
announcement.setInternalUrlPath(internalUrlPath);
announcement.setStyle(style);
announcement.setInternalUrlInclude(internalUrlInclude);
announcement.setInternal(internal);
}
 
 
public boolean isInternal() {
return internal;
}
 
public void setInternal(boolean internal) {
this.internal = internal;
}
 
public boolean isInternalUrlInclude() {
return internalUrlInclude;
}
/impl/src/java/pt/estgp/estgweb/domain/IInternal.java
New file
0,0 → 1,11
package pt.estgp.estgweb.domain;
 
/**
* @author Jorge Machado
* @date 15/Mai/2008
* @see pt.estgp.estgweb.domain
*/
public interface IInternal
{
public boolean isInternal();
}
/impl/src/java/pt/estgp/estgweb/domain/DomainObject.java
14,7 → 14,7
* @time 10:56:46
* @see pt.estgp.estgweb.domain
*/
public abstract class DomainObject implements IOwned, IContextTimerObject, ITargetRoles
public abstract class DomainObject implements IOwned, IContextTimerObject, ITargetRoles, IInternal
{
private static final Date MIN_DATE = new Date(0);
private static final Date MAX_DATE = new Date(Integer.MAX_VALUE);
120,4 → 120,9
roles.add(ALL_ROLE);
return roles;
}
 
public boolean isInternal()
{
return true;
}
}
/impl/src/java/pt/estgp/estgweb/filters/filters/InternalObject.java
New file
0,0 → 1,31
package pt.estgp.estgweb.filters.filters;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.IInternal;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters;
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
 
public class InternalObject extends LoadControlFilter
{
private static final Logger logger = Logger.getLogger(InternalObject.class);
 
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
IInternal iInternal = (IInternal) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters());
 
if(iInternal.isInternal() && userSession.getUser() == null)
{
logger.info("try access restricted area:" + request.getRequester());
throw new NeedAuthenticationException();
}
}
}
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java
28,32 → 28,34
 
/**
* @author Jorge Machado
* @author Fabio Velez
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class AnnouncementsController extends AddRolesController {
public class AnnouncementsController extends AddRolesController
{
 
private static final Logger logger = Logger.getLogger(AnnouncementsController.class);
 
private static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
 
public ActionForward save(ActionMapping mapping,
ActionForm form ,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
Image i2=null;
Image i=null;
Image i2 = null;
Image i = null;
AnnouncementsForm announcementForm = (AnnouncementsForm) form;
AnnouncementView view = announcementForm.getAnnouncementView();
String finalUrl="";
if(!announcementForm.getUrl().equals(""))
String finalUrl = "";
if (!announcementForm.getUrl().equals(""))
{
finalUrl=announcementForm.getUrlProtocol()+announcementForm.getUrl();
finalUrl = announcementForm.getUrlProtocol() + announcementForm.getUrl();
view.setUrl(finalUrl);
}
else
61,16 → 63,16
view.setUrl(null);
}
 
if(announcementForm.getBigImage().getFileSize()!= 0)
if (announcementForm.getBigImage().getFileSize() != 0)
{
FormFile bigImage = announcementForm.getBigImage();
InputStream stream = bigImage.getInputStream();
ByteArrayOutputStream b = new ByteArrayOutputStream();
int readedBytes;
byte[] buf = new byte[1024];
while((readedBytes = stream.read(buf)) > 0)
while ((readedBytes = stream.read(buf)) > 0)
{
b.write(buf,0,readedBytes);
b.write(buf, 0, readedBytes);
}
b.close();
i = DomainObjectFactory.createImageImpl();
83,16 → 85,16
 
}
 
if(announcementForm.getSmallImage().getFileSize()!= 0)
if (announcementForm.getSmallImage().getFileSize() != 0)
{
FormFile smallImage = announcementForm.getSmallImage();
InputStream stream2 = smallImage.getInputStream();
ByteArrayOutputStream b2 = new ByteArrayOutputStream();
int readedBytes2;
byte[] buf2 = new byte[1024];
while((readedBytes2 = stream2.read(buf2)) > 0)
while ((readedBytes2 = stream2.read(buf2)) > 0)
{
b2.write(buf2,0,readedBytes2);
b2.write(buf2, 0, readedBytes2);
}
b2.close();
i2 = DomainObjectFactory.createImageImpl();
106,30 → 108,30
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{view,i, i2};
Object[] args = new Object[]{view, i, i2};
boolean newAnnouncement = true;
if(view.getId() > 0)
if (view.getId() > 0)
newAnnouncement = false;
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"CreateAnnouncement",args,names);
if(newAnnouncement)
addMessage(request,"announcement.created.success","" + aV.getId());
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "CreateAnnouncement", args, names);
if (newAnnouncement)
addMessage(request, "announcement.created.success", request.getContextPath(), "" + aV.getId(), view.getTitle());
else
addMessage(request,"announcement.edited.success","" + aV.getId());
addMessage(request, "announcement.edited.success", request.getContextPath(), "" + aV.getId(), view.getTitle());
return mapping.findForward("success");
}
catch(FilterChainFailedException e)
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e,e);
logger.error(e, e);
throw e;
}
}
 
public ActionForward edit(ActionMapping mapping,
ActionForm form ,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
140,7 → 142,7
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{new Long(request.getParameter("id"))};
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"LoadEditAnnouncement",args,names);
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadEditAnnouncement", args, names);
AnnouncementsForm announcementsForm = (AnnouncementsForm) form;
announcementsForm.setAnnouncementView(aV);
announcementsForm.setStartDate(DatesUtils.getStringFromDate(aV.getStartDate()));
150,13 → 152,13
sess.serialize(request);
return mapping.getInputForward();
}
catch(FilterChainFailedException e)
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e,e);
logger.error(e, e);
throw e;
}
}
198,7 → 200,7
}
 
public ActionForward list(ActionMapping mapping,
ActionForm form ,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
208,23 → 210,23
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request),"LoadTargetMaxAnnouncements",args,names);
request.setAttribute("Announcements",announcementViews);
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request), "LoadTargetMaxAnnouncements", args, names);
request.setAttribute("Announcements", announcementViews);
return mapping.findForward("success");
}
catch(FilterChainFailedException e)
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e,e);
logger.error(e, e);
throw e;
}
}
 
public ActionForward load(ActionMapping mapping,
ActionForm form ,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
235,17 → 237,17
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{new Long(id)};
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"LoadAnnouncementView",args,names);
request.setAttribute("Announcement",announcementView);
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadAnnouncementView", args, names);
request.setAttribute("Announcement", announcementView);
return mapping.findForward("load");
}
catch(FilterChainFailedException e)
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e,e);
logger.error(e, e);
throw e;
}
}
/impl/src/hbm/pt/estgp/estgweb/domain/Announcement.hbm.xml
27,6 → 27,7
<property name="internalUrlInclude" type="boolean"/>
<property name="style" type="string"/>
<property name="status" type="boolean" />
<property name="internal" type="boolean" />
<property name="counter" type="integer" />
<many-to-one name="bigImage" column="bigImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all" />
<many-to-one name="smallImage" column="smallImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/>
/impl/src/web/admin/announcements/submitAnnouncement.jsp
29,6 → 29,17
</html:select>
</td>
</tr>
<tr>
<th>
<bean:message key="announcement.internal"/>
</th>
<td>
<html:select property="announcementView.internal">
<html:option value="true"><bean:message key="announcement.internal.yes"/></html:option>
<html:option value="false"><bean:message key="announcement.internal.no"/></html:option>
</html:select>
</td>
</tr>
</estgweb:isAdmin>
<tr>
<th>
155,8 → 166,8
<html:option value="announcement.style.img.left"><bean:message key="announcement.style.img.left"/></html:option>
<html:option value="announcement.style.img.right"><bean:message key="announcement.style.img.right"/></html:option>
<html:option value="announcement.style.img.top"><bean:message key="announcement.style.img.top"/></html:option>
<html:option value="announcement.style.img.top"><bean:message key="announcement.style.img.embedded.left"/></html:option>
<html:option value="announcement.style.img.top"><bean:message key="announcement.style.img.embedded.right"/></html:option>
<html:option value="announcement.style.img.embedded.left"><bean:message key="announcement.style.img.embedded.left"/></html:option>
<html:option value="announcement.style.img.embedded.right"><bean:message key="announcement.style.img.embedded.right"/></html:option>
</html:select>
</td>
</tr>
/impl/src/web/public/announcements/loadAnnouncement.jsp
1,27 → 1,29
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="org.apache.struts.util.RequestUtils" %>
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %>
<%@ page import="pt.estgp.estgweb.domain.UserSessionImpl" %>
<%@ page import="pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum" %>
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %>
<%@ page import="pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
<jsp:useBean id="Announcement" type="pt.estgp.estgweb.domain.views.AnnouncementView" scope="request"/>
<% UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request);%>
<html:link href="http://www.sapo.pt"></html:link>
<div class="seccao">
<h2>${Announcement.title}
<% if(userSession.getUser()!=null){
if((userSession.getUser().getId()==Announcement.getOwnerID())||(userSession.getUser().getRoles().contains("all"))||(userSession.getUser().getRoles().contains("admin")))
{%>
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=edit">Editar</html:link>
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=delete">Apagar</html:link>
<%}
}%>
</h2>
<h2>${Announcement.title}
<%
if (userSession.getUser() != null && (Announcement.isOwnedBy(userSession.getUser()) || ((UserImpl) userSession.getUser()).isSuperUserOrAdmin()))
{
%>
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=edit"> <bean:message key="edit"/> </html:link>
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=delete">Apagar</html:link>
<%
}
%>
</h2>
<%
AnnouncementStyleEnum styleEnum = Announcement.getStyleEnum();
if (styleEnum == AnnouncementStyleEnum.imgEmbeddedLeft || styleEnum == AnnouncementStyleEnum.imgEmbeddedRight) {
String align = "left";