package com.idega.business.text;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import com.idega.block.web2.business.JQueryPlugin;
import com.idega.block.web2.business.Web2Business;
import com.idega.builder.business.BuilderLogicWrapper;
import com.idega.core.accesscontrol.business.StandardRoles;
import com.idega.core.component.business.ICObjectBusiness;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.util.CoreConstants;
import com.idega.util.PresentationUtil;
import com.idega.util.StringUtil;
import com.idega.util.expression.ELUtil;
@Scope("singleton")
@Service(InlineEditableComponent.SPRING_BEAN_IDENTIFIER)
public class InlineEditableComponentImpl implements InlineEditableComponent {
private static final long serialVersionUID = -749409164128200690L;
private static final Logger LOGGER = Logger.getLogger(InlineEditableComponentImpl.class.getName());
@Autowired
private BuilderLogicWrapper builderLogic;
public void makeInlineEditable(IWContext iwc, PresentationObject component) {
if (!iwc.hasRole(StandardRoles.ROLE_KEY_EDITOR)) {
return;
}
String instanceId = null;
try {
instanceId = getBuilderLogic().getBuilderService(iwc).getInstanceId(component);
} catch(Exception e) {
LOGGER.log(Level.SEVERE, "Error getting unique ID for component: " + component, e);
}
if (StringUtil.isEmpty(instanceId) || !instanceId.startsWith(ICObjectBusiness.UUID_PREFIX)) {
return;
}
Web2Business web2 = ELUtil.getInstance().getBean(Web2Business.SPRING_BEAN_IDENTIFIER);
PresentationUtil.addJavaScriptSourcesLinesToHeader(iwc, Arrays.asList(
web2.getBundleURIToJQueryLib(),
web2.getBundleURIToJQueryPlugin(JQueryPlugin.EDITABLE),
iwc.getIWMainApplication().getBundle(CoreConstants.CORE_IW_BUNDLE_IDENTIFIER).getVirtualPathWithFileNameString("javascript/AdminCore.js")
));
component.setStyleClass(InlineEditableComponent.class.getSimpleName());
}
public BuilderLogicWrapper getBuilderLogic() {
return builderLogic;
}
public void setBuilderLogic(BuilderLogicWrapper builderLogic) {
this.builderLogic = builderLogic;
}
}