Commit 140a8678 by nilu

S42972327 # Matchd / Talentology - No Plan [Enhancement] #Allow Backend User to…

S42972327 # Matchd / Talentology - No Plan [Enhancement] #Allow Backend User to Move Hiring Teams between Customers
parent f04825cc
package performa.form;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.logging.LoggingArea;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import oneit.utils.MultiException;
import performa.orm.Company;
import performa.orm.HiringTeam;
public class ChangeCompanyFP extends SaveFP
{
private static final LoggingArea LOG = LoggingArea.createLoggingArea("ChangeCompanyFP");
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{
HttpServletRequest request = submission.getRequest();
HiringTeam hiringTeam = (HiringTeam) request.getAttribute("HiringTeam");
if(hiringTeam.isFalse(hiringTeam.getExistingCustomer()))
{
BusinessObjectParser.assertFieldCondition(hiringTeam.getCompanyName() != null, hiringTeam, HiringTeam.FIELD_CompanyName, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(hiringTeam.getCompanyTimeZone() != null, hiringTeam, HiringTeam.FIELD_CompanyTimeZone, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(hiringTeam.getCompanyType() != null, hiringTeam, HiringTeam.FIELD_CompanyType, "mandatory", exceptions, true, request);
}
super.validate(process, submission, exceptions, params);
}
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
ObjectTransaction objTran = process.getTransaction();
HttpServletRequest request = submission.getRequest();
HiringTeam hiringTeam = (HiringTeam) request.getAttribute("HiringTeam");
LogMgr.log(LOG, LogLevel.PROCESSING1, "Changing company of hiring team : ", hiringTeam);
if(hiringTeam.isFalse(hiringTeam.getExistingCustomer()))
{
Company company = Company.createCompany(objTran);
company.setCompanyName(hiringTeam.getCompanyName());
company.setHiringTeamType(hiringTeam.getCompanyType());
company.setTimeZone(hiringTeam.getCompanyTimeZone());
company.setAddedByUser(hiringTeam.getAddedByUser());
hiringTeam.setCompany(company);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Added new company : ", company);
}
return super.processForm(process, submission, params);
}
}
\ No newline at end of file
...@@ -32,8 +32,6 @@ public class Company extends BaseCompany ...@@ -32,8 +32,6 @@ public class Company extends BaseCompany
@Override @Override
protected void postInitNewObj() throws BusinessException protected void postInitNewObj() throws BusinessException
{ {
addToHiringTeams(HiringTeam.createHiringTeam(getTransaction()));
super.postInitNewObj(); super.postInitNewObj();
} }
......
...@@ -12,10 +12,14 @@ ...@@ -12,10 +12,14 @@
<MULTIPLEREFERENCE name="BillingTeams" type="HiringTeam" backreferenceName="BilledByTeam" /> <MULTIPLEREFERENCE name="BillingTeams" type="HiringTeam" backreferenceName="BilledByTeam" />
<MULTIPLEREFERENCE name="DiversityQuestions" type="HTDiversityQuestion" backreferenceName="HiringTeam" /> <MULTIPLEREFERENCE name="DiversityQuestions" type="HTDiversityQuestion" backreferenceName="HiringTeam" />
<TRANSIENT name="ExistingCustomer" type="Boolean" defaultValue="Boolean.TRUE"/>
<TRANSIENT name="IsLogoDeleted" type="Boolean" defaultValue="Boolean.FALSE"/> <TRANSIENT name="IsLogoDeleted" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="CouponCode" type="String" length="20"/> <TRANSIENT name="CouponCode" type="String" length="20"/>
<TRANSIENT name="StripeBrand" type="String" /> <TRANSIENT name="StripeBrand" type="String" />
<TRANSIENT name="StripeLast4" type="String" /> <TRANSIENT name="StripeLast4" type="String" />
<TRANSIENT name="CompanyName" type="String" />
<TRANSIENT name="CompanyType" type="HiringTeamType" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="CompanyTimeZone" type="TimeZone" attribHelper="EnumeratedAttributeHelper"/>
<TABLE name="tl_hiring_team" tablePrefix="object"> <TABLE name="tl_hiring_team" tablePrefix="object">
......
package performa.search;
import oneit.objstore.BaseBusinessClass;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.rdbms.filters.ILikeFilter;
import oneit.servlets.jsp.ORMTextSearcher;
import performa.orm.Company;
public class CompanySearcher implements ORMTextSearcher
{
public static CompanySearcher INSTANCE = new CompanySearcher();
@Override
public BaseBusinessClass[] search(ObjectTransaction ot, String searchTerm)
{
return Company.SearchByAll().andCompanyName(new ILikeFilter(searchTerm, "%", "%")).search(ot);
}
}
\ No newline at end of file
...@@ -104,9 +104,11 @@ public class PerformaOAuthCallbackDecorator implements ServletDecorator, Initial ...@@ -104,9 +104,11 @@ public class PerformaOAuthCallbackDecorator implements ServletDecorator, Initial
company.setAddedByUser(companyUser); company.setAddedByUser(companyUser);
companyUser.setCompany(company); companyUser.setCompany(company);
HiringTeam hiringTeam = company.getHiringTeamsAt(0); HiringTeam hiringTeam = HiringTeam.createHiringTeam(transaction);
hiringTeam.setAddedByUser(companyUser); hiringTeam.setAddedByUser(companyUser);
hiringTeam.setHiringTeamName(""); hiringTeam.setHiringTeamName("");
company.addToHiringTeams(hiringTeam);
companyUser.setDefaultHiringTeam(hiringTeam); companyUser.setDefaultHiringTeam(hiringTeam);
CompanyUserHiringTeamLink link = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(transaction); CompanyUserHiringTeamLink link = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(transaction);
......
...@@ -14,6 +14,11 @@ ...@@ -14,6 +14,11 @@
Boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Company", Company.REFERENCE_Company); Boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Company", Company.REFERENCE_Company);
Company company = (Company) process.getAttribute("Company"); Company company = (Company) process.getAttribute("Company");
if(toRedirect)
{
company.addToHiringTeams(HiringTeam.createHiringTeam(objTran));
}
SecUser secUser = null; SecUser secUser = null;
CompanyUser companyUser = company.getAddedByUser(); CompanyUser companyUser = company.getAddedByUser();
......
...@@ -13,7 +13,12 @@ ...@@ -13,7 +13,12 @@
ObjectTransaction objTran = process.getTransaction (); ObjectTransaction objTran = process.getTransaction ();
Boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Company", Company.REFERENCE_Company); Boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Company", Company.REFERENCE_Company);
Company company = (Company) process.getAttribute("Company"); Company company = (Company) process.getAttribute("Company");
if(toRedirect)
{
company.addToHiringTeams(HiringTeam.createHiringTeam(objTran));
}
SecUser secUser = null; SecUser secUser = null;
CompanyUser companyUser = company.getAddedByUser(); CompanyUser companyUser = company.getAddedByUser();
......
...@@ -12,12 +12,16 @@ ...@@ -12,12 +12,16 @@
<FORM name="*.createPlan" factory="Participant" class="performa.form.CreatePlanFP"/> <FORM name="*.createPlan" factory="Participant" class="performa.form.CreatePlanFP"/>
</NODE> </NODE>
<NODE name="createArticle_jsp::TL" factory="Participant"> <NODE name="customers_jsp" factory="Participant">
<INHERITS factory="Named" nodename="CoreORMAdmin"/>
<FORM name="*.assume" factory="Participant" class="performa.form.AssumeHTAdminFP"> <FORM name="*.assume" factory="Participant" class="performa.form.AssumeHTAdminFP">
<NODE name="loginFP" factory="Named" nodename="CMSLoginFP"/> <NODE name="loginFP" factory="Named" nodename="CMSLoginFP"/>
</FORM> </FORM>
<FORM name="*.search" factory="Participant" class="oneit.servlets.orm.RunSearchExecutorFP"/> </NODE>
<DATA class="oneit.servlets.orm.RunSearchExecutorDF"/>
<NODE name="changeCompanyPopup_jsp" factory="Participant">
<INHERITS factory="Named" nodename="CoreORMAdmin"/>
<FORM name="*.changeCompany" factory="Participant" class="performa.form.ChangeCompanyFP"/>
</NODE> </NODE>
<NODE name="editMessageTemplate_jsp" factory="Participant"> <NODE name="editMessageTemplate_jsp" factory="Participant">
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<!-- <TOPMENU name="MENU.TEST_ANALYSIS" desc="Test Analysis" sortOrder="100" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" <!-- <TOPMENU name="MENU.TEST_ANALYSIS" desc="Test Analysis" sortOrder="100" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element"
link="/extensions/performa/testAnalysis.jsp"/> --> link="/extensions/performa/testAnalysis.jsp"/> -->
<CHILD name="Performa.Customers" desc="Customers" sortOrder="10" toplevel="ADMIN" priv="admin" link="/extensions/performa/customers.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
<CHILD name="Performa.SetupPlans" desc="Setup Plans" sortOrder="10" toplevel="ADMIN" priv="admin" link="/extensions/performa/setupPlans.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" /> <CHILD name="Performa.SetupPlans" desc="Setup Plans" sortOrder="10" toplevel="ADMIN" priv="admin" link="/extensions/performa/setupPlans.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
<CHILD name="Performa.MessageTemplate" desc="Message Template" sortOrder="20" toplevel="ADMIN" priv="admin" link="/extensions/performa/listMessageTemplate.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" /> <CHILD name="Performa.MessageTemplate" desc="Message Template" sortOrder="20" toplevel="ADMIN" priv="admin" link="/extensions/performa/listMessageTemplate.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
<CHILD name="Performa.NotificationTemplate" desc="Notification Template" sortOrder="30" toplevel="ADMIN" priv="admin" link="/extensions/performa/listNotificationTemplates.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" /> <CHILD name="Performa.NotificationTemplate" desc="Notification Template" sortOrder="30" toplevel="ADMIN" priv="admin" link="/extensions/performa/listNotificationTemplates.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
......
<%@ page extends="oneit.servlets.jsp.JSPInclude"%> <%@ page extends="oneit.servlets.jsp.FormJSP"%>
<%@ include file="/setuprequest.jsp"%> <%@ include file="/setuprequest.jsp"%>
<%@ include file="inc/stdimports.jsp"%> <%@ include file="inc/stdimports.jsp"%>
<%@ include file="/editor/stdimports.jsp"%> <%@ include file="/editor/stdimports.jsp"%>
<%@ page import="oneit.security.jsp.*" %> <%@ page import="oneit.servlets.jsp.ormtable.*" %>
<oneit:dynIncluded> <%! protected String getName (ServletConfig config) { return "customers_jsp"; } %>
<% <%
ORMProcessState process = (ORMProcessState) ProcessDecorator.getDefaultProcess(request); ORMProcessState process = (ORMProcessState) ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction (); ObjectTransaction objTran = process.getTransaction ();
String currentPage = request.getContextPath() + "/editor/home.jsp"; String currentPage = request.getContextPath() + "/extensions/performa/customers.jsp";
SecUser secUser = SecUser.getTXUser(objTran); SecUser secUser = SecUser.getTXUser(objTran);
UserSortOption userSortOpt = (UserSortOption) process.getAttribute("UserSortOption"); UserSortOption userSortOpt = (UserSortOption) process.getAttribute("UserSortOption");
SearchHiringTeam searchHT = (SearchHiringTeam) RunSearchExecutorFP.setupExecutor(request, SearchHiringTeam.REFERENCE_SearchHiringTeam, true); SearchHiringTeam searchHT = (SearchHiringTeam) RunSearchExecutorFP.setupExecutor(request, SearchHiringTeam.REFERENCE_SearchHiringTeam, true);
...@@ -45,22 +45,42 @@ ...@@ -45,22 +45,42 @@
request.setAttribute("oneit.pageFormDetails", CollectionUtils.mapEntry("name", "Customers").mapEntry("enctype", "multipart/form-data").toMap()); request.setAttribute("oneit.pageFormDetails", CollectionUtils.mapEntry("name", "Customers").mapEntry("enctype", "multipart/form-data").toMap());
request.setAttribute("oneit.pageHeaderTitle", "Customers"); request.setAttribute("oneit.pageHeaderTitle", "Customers");
%> %>
<%@include file="/editor/header.jsp"%>
<oneit:css> <oneit:css>
<oneit:css href="/css/common.css" /> <oneit:css href="/css/common.css" />
<oneit:css href="/css/jBox.css" />
</oneit:css> </oneit:css>
<oneit:script>
<oneit:script src="/scripts/jBox.js"/>
</oneit:script>
<style> <style>
.dashboard-content-area { .dashboard-content-area {
margin-top: 0px ; margin-top: 0px ;
width: 100%; width: 100%;
} }
.change-company-btn{
border: none;
background: none;
color: #4e5258;
}
</style> </style>
<script type="text/javascript"> <script type="text/javascript">
$(function(){ var Popup = null;
$(document).ready(function(){
setupRecalc ($("form"), {'recalcOnError':true});
$(".change-company-btn").prop('title', 'Change Customer');
});
$(function(){
$('.search-icon-btn').click(function () { $('.search-icon-btn').click(function () {
$('.search-real-btn').click(); $('.search-real-btn').click();
}); });
}); });
</script> </script>
<div class="dashboard-content-area second-part"> <div class="dashboard-content-area second-part">
<div class="jobs-list-shorting"> <div class="jobs-list-shorting">
...@@ -71,6 +91,7 @@ ...@@ -71,6 +91,7 @@
<span class="search-icon-btn"></span> <span class="search-icon-btn"></span>
</div> </div>
<oneit:button value="Search" name="search" cssClass="btn btn-primary search-real-btn hidden" /> <oneit:button value="Search" name="search" cssClass="btn btn-primary search-real-btn hidden" />
<oneit:button value=" " name="save" cssClass="btn" requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage).toMap() %>" id="save"/>
<div class="shorting-dropdown"> <div class="shorting-dropdown">
<span class="order-label">order by</span> <span class="order-label">order by</span>
<select class="form-control" onChange="location=this.value"> <select class="form-control" onChange="location=this.value">
...@@ -104,14 +125,24 @@ ...@@ -104,14 +125,24 @@
int openCount = openJobs != null ? openJobs.length : 0; int openCount = openJobs != null ? openJobs.length : 0;
int clientCount = hiringTeam.pipelineHiringTeam().toClients().uniqueVals().size(); int clientCount = hiringTeam.pipelineHiringTeam().toClients().uniqueVals().size();
%> %>
<div class="client-list" id="<%= hiringTeam.getID() %>"> <div class="client-list">
<div class="client-row" > <div class="client-row" >
<div class="client-name-cell jl-c" style="width:50%;"> <div class="client-name-cell jl-c" style="width:30%;">
<div class="client-name"> <div class="client-name">
<oneit:toString value="<%= hiringTeam.getHiringTeamName() %>" mode="EscapeHTML" /> <oneit:toString value="<%= hiringTeam.getHiringTeamName() %>" mode="EscapeHTML" />
</div> </div>
</div> </div>
</div> </div>
<div class="client-row company-details" >
<div class="client-name-cell jl-c" style="width:20%;">
<div class="client-name">
<%= hiringTeam.getCompany().getCompanyName() %>
<tagfile:popup actualJSP="<%= contextPath + "/extensions/performa/inc/changeCompanyPopup.jsp" %>" id="<%= hiringTeam.getID().toString() %>"
displayValue="..." cssClass="change-company-btn" bypassValidate="false"
procVars="<%= CollectionUtils.mapEntry("HiringTeam", hiringTeam).toMap() %>" width="800" height="450" popupAction="#save"/>
</div>
</div>
</div>
<div class="<%= "application-count jl-c " + (clientCount == 0 ? "opaque-jobcount" : "")%>"> <div class="<%= "application-count jl-c " + (clientCount == 0 ? "opaque-jobcount" : "")%>">
<oneit:toString value="<%= clientCount %>" mode="EscapeHTML" nullValue="0"/> <oneit:toString value="<%= clientCount %>" mode="EscapeHTML" nullValue="0"/>
<span class="grey-span">Clients</span> <span class="grey-span">Clients</span>
...@@ -130,11 +161,9 @@ ...@@ -130,11 +161,9 @@
.toMap()%>"/> .toMap()%>"/>
</div> </div>
</div> </div>
<% <%
} }
%> %>
</div> </div>
</div> </div>
</oneit:dynIncluded> <%@include file="/editor/footer.jsp"%>
\ No newline at end of file \ No newline at end of file
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<oneit:dynInclude page="/extensions/performa/customers.jsp" data="<%= CollectionUtils.EMPTY_MAP %>"/> <%
response.sendRedirect(request.getContextPath() + "/extensions/performa/customers.jsp");
%>
</oneit:dynIncluded> </oneit:dynIncluded>
\ No newline at end of file
<%@ page extends="oneit.servlets.jsp.FormJSP" %>
<%@ include file="/setuprequest.jsp" %>
<%@ include file="stdimports.jsp" %>
<%@ include file="/editor/stdimports.jsp" %>
<%! protected String getName (ServletConfig config) { return "changeCompanyPopup_jsp"; } %>
<%
ORMProcessState process = (ORMProcessState) ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction ();
HiringTeam hiringTeam = (HiringTeam) process.getAttribute("HiringTeam");
request.setAttribute("oneit.pageFormDetails", CollectionUtils.mapEntry("name", "changeCompanyPopup").mapEntry("enctype", "multipart/form-data").toMap());
request.setAttribute("oneit.pageHeaderTitle", "Change Customer Popup");
%>
<%@include file="/editor/header.jsp" %>
<script type="text/javascript">
$(document).ready(function(){
setupRecalc ($("form"), {'recalcOnError':true});
});
</script>
<oneit:layout_total widths="<%= new double[] {4, 8} %>" skin="bootstrap">
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="Hiring Team" /></oneit:layout_label>
<oneit:layout_field width="1"><oneit:toString value="<%= hiringTeam.getHiringTeamName() %>" mode="EscapeHTML"/></oneit:layout_field>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1">
<oneit:ormInput obj="<%= hiringTeam %>" type="radio" attributeName="ExistingCustomer" value="true"/> Existing Customer
</oneit:layout_label>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:recalcClass htmlTag="span" classScript="hiringTeam.isTrue(hiringTeam.getExistingCustomer()) ? 'show col-xs-offset-1' : 'hide'" hiringTeam="<%= hiringTeam %>">
<oneit:layout_label width="1"><oneit:label GUIName="Customer" /></oneit:layout_label>
<oneit:layout_field width="1">
<tagfile:ormsingleasso_autocomplete obj="<%= hiringTeam %>" assocName="Company" cssClass="form-control" searcher="<%= CompanySearcher.INSTANCE %>" />
</oneit:layout_field>
</oneit:recalcClass>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1">
<oneit:ormInput obj="<%= hiringTeam %>" type="radio" attributeName="ExistingCustomer" value="false"/> New Customer
</oneit:layout_label>
</oneit:skin>
<oneit:recalcClass htmlTag="span" classScript="hiringTeam.isFalse(hiringTeam.getExistingCustomer()) ? 'show col-xs-offset-1' : 'hide'" hiringTeam="<%= hiringTeam %>">
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="Customer Name" /></oneit:layout_label>
<oneit:layout_field width="1">
<oneit:ormInput obj="<%= hiringTeam %>" type="text" attributeName="CompanyName" cssClass="form-control" />
</oneit:layout_field>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="Time Zone" /></oneit:layout_label>
<oneit:layout_field width="1">
<oneit:ormEnum obj="<%= hiringTeam %>" attributeName="CompanyTimeZone" cssClass="form-control"/>
</oneit:layout_field>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="What type of hiring team are you?" /></oneit:layout_label>
</oneit:skin>
<%
FormTag jobForm = FormTag.getActiveFormTag(request);
FormBuilder formBuilder = jobForm.getFormBuilder();
String optionKey = WebUtils.getInputKey(request, hiringTeam, HiringTeam.FIELD_CompanyType);
String formValue = formBuilder.fieldValue (optionKey, hiringTeam.getCompanyType() == null ? "" : hiringTeam.getCompanyType().getName());
for(HiringTeamType hiringTeamType : HiringTeamType.getHiringTeamTypeArray())
{
boolean isSelected = CollectionUtils.equals(formValue, hiringTeamType.getName());
String hiringTeamTypeId = String.valueOf(hiringTeam.getID().longID()) + "_hiringteamtype_" + hiringTeamType.getName();
String selected = isSelected ? "checked" : "";
String activeClass = isSelected ? "active" : "";
%>
<oneit:skin tagName="layout_row">
<oneit:layout_field width="2">
<input type="radio" name="<%= optionKey %>" id="<%= hiringTeamTypeId %>" class="element_rating_radio" value="<%= hiringTeamType.getName() %>" <%= selected%>>
<label for="<%= hiringTeamTypeId %>">
<oneit:toString value="<%= hiringTeamType %>" mode="EscapeHTML"/>
</label>
</oneit:layout_field>
</oneit:skin>
<%
}
%>
</oneit:recalcClass>
<oneit:skin tagName="layout_row">
<oneit:layout_field width="2">
<oneit:button value="Save" cssClass="btn btn-primary pull-right" name="changeCompany"
requestAttribs="<%= CollectionUtils.mapEntry("HiringTeam", hiringTeam)
.toMap() %>"/>
</oneit:layout_field>
</oneit:skin>
</oneit:layout_total>
<%@include file="/editor/footer.jsp" %>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment