DocForumEditorFields.java

package sk.iway.iwcm.components.forum.jpa;

import javax.servlet.http.HttpServletRequest;

import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.datatable.BaseEditorFields;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;

@Getter
@Setter
public class DocForumEditorFields extends BaseEditorFields {

    //Column for stutus icons
    @DataTableColumn(inputType = DataTableColumnType.SELECT, title = "webpages.icons.title",
        hiddenEditor = true, hidden = false, visible = true, sortAfter = "id", className = "allow-html", orderable = false
    )
    private String statusIcons;

    public void fromDocForum(DocForumEntity entity, HttpServletRequest request, Prop prop) {
        StringBuilder iconsHtml = new StringBuilder();

        String link = "/showdoc.do?docid="+entity.getDocId();
        if (entity.getDocDetails()!=null) link = entity.getDocDetails().getVirtualPath();

        //If entity is deleted or non active (marked as red)
        if(entity.getDeleted()) addRowClass("is-not-public");
        else if(!entity.getConfirmed()) addRowClass("is-not-public");

        //If it's message board, add param so link wil open it
        if(entity.getId()!=null && entity.getParentId()!=null && entity.getParentId().intValue()>0) link = Tools.addParameterToUrl(link, "pId", String.valueOf(entity.getParentId()));

        //Icon to open page
        iconsHtml.append("<a href=\"" + link + "\" target=\"_blank\" class=\"preview-page-link\" title=\"" + prop.getText("history.showPage") + "\"><i class=\"ti ti-eye\"></i></a> ");

        //Add icon about confirm status
        if(entity.getConfirmed()) {
            iconsHtml.append("<i class=\"ti ti-circle-check\" style=\"color: #00be9f;width: 1.25em;\"></i>");
        } else {
            iconsHtml.append("<i class=\"ti ti-circle-x\" style=\"color: #ff4b58;width: 1.25em;\"></i>");
        }

        //Add icon about active status
        if(!entity.getActive()) 
            //active = false in document_forum table, this one forum is locked
            iconsHtml.append("<i class=\"ti ti-lock\" style=\"color: #000000;width: 1.25em;\"></i>");
        else if(entity.getForumGroupEntity() != null)
                if(!entity.getForumGroupEntity().getActive())
                    //active = false in forum tabel, mean all forum's under specific DocId are locked
                    //!! BEWARE, is whole forum group is locked (active = false), it doesn't necesary mean that forum is set as locked and can have active = true  
                    iconsHtml.append("<i class=\"ti ti-lock\" style=\"color: #000000;width: 1.25em;\"></i>");

        //If page is soft deleted, add icon to recover page
        if(entity.getDeleted()) {
            link = "javascript:recoverForum(" + entity.getId() + ");";
            iconsHtml.append("<a href=\"" + link + "\" title=\"" + prop.getText("components.banner.recover") + "\"><i class=\"ti ti-trash\" style=\"color: #fabd00;width: 1.25em;\"></i></a> ");
        }

        iconsHtml.append( getStatusIconsHtml() );
        statusIcons = iconsHtml.toString();
    }
}