/kickup/trunk/src/ak/kickup/core/mail/Messages.java |
---|
File deleted |
/kickup/trunk/src/ak/kickup/core/RegistrationMail.txt |
---|
File deleted |
/kickup/trunk/src/ak/kickup/core/action/ParticipantAction.java |
---|
27,9 → 27,6 |
import ak.kickup.core.model.ParticipantManager; |
import ak.kickup.core.model.Event; |
import ak.kickup.core.model.EventManager; |
import ak.kickup.core.model.ParticipantAct; |
import ak.kickup.core.model.EventAct; |
import ak.kickup.core.form.ParticipantActBean; |
public final class ParticipantAction |
extends Action |
47,9 → 44,6 |
Event event = (eventId == null) |
? null : EventManager.getInstance().get(eventId, true); |
request.setAttribute("event", event); |
if("submit".equals(mapping.getParameter()) || "update".equals(mapping.getParameter())) |
initLists(request, event); |
} |
if("update".equals(mapping.getParameter())) { |
90,18 → 84,7 |
showForm.set("emailPublic", Boolean.TRUE); |
// acts |
List acts = new ArrayList(event.getActCollection()); |
ParticipantActBean[] a = new ParticipantActBean[acts.size()]; |
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR); |
for(int i = 0; i < acts.size(); i++) { |
EventAct act = (EventAct)acts.get(i); |
a[i] = new ParticipantActBean(act.getAct(), null); |
} |
showForm.set("acts", a); |
request.setAttribute("event", event); |
initLists(request, event); |
return mapping.findForward("default"); |
} |
else if("login".equals(mapping.getParameter())) { |
120,18 → 103,6 |
throw new UserException("ak.kickup.core.participant.edit.ident.wrong"); |
} |
// acts |
List acts = new ArrayList(event.getActCollection()); |
ParticipantActBean[] a = new ParticipantActBean[acts.size()]; |
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR); |
for(int i = 0; i < acts.size(); i++) { |
EventAct act = (EventAct)acts.get(i); |
a[i] = new ParticipantActBean(act.getAct(), |
participant.getAct(act.getAct().getId())); |
} |
showForm.set("acts", a); |
// others |
showForm.set("emailPublic", participant.getEmailPublic()); |
showForm.set("name", participant.getName()); |
showForm.set("phone", participant.getPhone()); |
146,7 → 117,6 |
showForm.set("comment", participant.getComment()); |
request.setAttribute("participant", participant); |
initLists(request, event); |
return mapping.findForward("default"); |
} |
else if("unregister".equals(mapping.getParameter())) { |
183,43 → 153,11 |
"ak.kickup.core.participant.edit.registration.unavailable"); |
} |
// acts |
ParticipantActBean[] acts = (ParticipantActBean[])theForm.get("acts"); |
for(int i = 0; i < acts.length; i++) { |
// get bean |
Long actId = StringConverter.parseLong(acts[i].getActId()); |
EventAct act = event.getAct(actId); |
ParticipantAct participantAct = participant.getAct(actId); |
if(acts[i].getSelected() == null || !acts[i].getSelected().booleanValue()) { |
if(participantAct != null) participant.removeAct(participantAct); |
} |
else { |
if(participantAct == null) { |
participantAct = ParticipantManager.getInstance().createAct(); |
participantAct.setParticipant(participant); |
participantAct.setAct(act.getAct()); |
participant.addAct(participantAct); |
} |
participantAct.setComment(acts[i].getComment()); |
} |
} |
// bind |
participant.setIdent(ParticipantManager.getInstance().generateIdent()); |
participant.setEvent(event); |
String email = (String)theForm.get("email"); |
if(ParticipantManager.getInstance().emailExists(participant, email)) { |
request.setAttribute("event", event); |
initLists(request, event); |
throw new UserException("ak.kickup.core.participant.email.nonunique"); |
} |
participant.setEmail(email); |
// others |
participant.setNick((String)theForm.get("nick")); |
participant.setEmail((String)theForm.get("email")); |
participant.setEmailPublic((Boolean)theForm.get("emailPublic")); |
participant.setName((String)theForm.get("name")); |
participant.setPhone((String)theForm.get("phone")); |
235,7 → 173,7 |
ParticipantManager.getInstance().save(participant); |
Messages.sendRegistrationMessage(participant, request.getRemoteAddr()); |
// FIXME: send email here |
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl()); |
return null; |
253,29 → 191,6 |
throw new ModelSecurityException(); |
} |
// acts |
ParticipantActBean[] acts = (ParticipantActBean[])theForm.get("acts"); |
for(int i = 0; i < acts.length; i++) { |
// get bean |
Long actId = StringConverter.parseLong(acts[i].getActId()); |
EventAct act = event.getAct(actId); |
ParticipantAct participantAct = participant.getAct(actId); |
if(acts[i].getSelected() == null || !acts[i].getSelected().booleanValue()) { |
if(participantAct != null) participant.removeAct(participantAct); |
} |
else { |
if(participantAct == null) { |
participantAct = ParticipantManager.getInstance().createAct(); |
participantAct.setParticipant(participant); |
participantAct.setAct(act.getAct()); |
participant.addAct(participantAct); |
} |
participantAct.setComment(acts[i].getComment()); |
} |
} |
// others |
participant.setEmailPublic((Boolean)theForm.get("emailPublic")); |
participant.setName((String)theForm.get("name")); |
participant.setPhone((String)theForm.get("phone")); |
298,12 → 213,4 |
throw new Exception("unknown mapping parameter"); |
} |
} |
private void initLists(HttpServletRequest request, Event event) |
throws Exception |
{ |
List acts = new ArrayList(event.getActCollection()); |
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR); |
request.setAttribute("actList", new ObjectList(acts)); |
} |
} |
/kickup/trunk/src/ak/kickup/core/action/AdminEventAction.java |
---|
92,7 → 92,7 |
Collections.sort(acts, ActManager.NAME_COMPARATOR); |
for(int i = 0; i < acts.size(); i++) { |
Act act = (Act)acts.get(i); |
a[i] = new EventActBean(act, event.getAct(act.getId())); |
a[i] = new EventActBean(act, (event == null) ? null : event.getAct(act.getId())); |
} |
showForm.set("acts", a); |
/kickup/trunk/src/ak/kickup/core/action/AdminParticipantAction.java |
---|
26,9 → 26,6 |
import ak.kickup.core.model.ParticipantManager; |
import ak.kickup.core.model.Event; |
import ak.kickup.core.model.EventManager; |
import ak.kickup.core.model.ParticipantAct; |
import ak.kickup.core.model.EventAct; |
import ak.kickup.core.form.ParticipantActBean; |
public final class AdminParticipantAction |
extends Action |
41,22 → 38,17 |
if("submit".equals(mapping.getParameter())) { |
DynaActionForm theForm = (DynaActionForm)form; |
Long eventId = StringConverter.parseLong(theForm.get("event")); |
if(eventId != null) { |
Event event = EventManager.getInstance().get(eventId, false); |
Long participantId = StringConverter.parseLong(theForm.get("id")); |
Participant participant; |
if(participantId == null) { |
participant = ParticipantManager.getInstance().create(); |
} |
else { |
participant = ParticipantManager.getInstance().get(participantId); |
} |
request.setAttribute("event", event); |
request.setAttribute("participant", participant); |
initLists(request, event); |
// FIXME: if a list is changed between "edit" and "submit" then indicies are wrong |
Event event = EventManager.getInstance().get(eventId, false); |
Long participantId = StringConverter.parseLong(theForm.get("id")); |
Participant participant; |
if(participantId == null) { |
participant = ParticipantManager.getInstance().create(); |
} |
else { |
participant = ParticipantManager.getInstance().get(participantId); |
} |
request.setAttribute("event", event); |
request.setAttribute("participant", participant); |
} |
} |
106,18 → 98,6 |
showForm.set("privateComment", participant.getPrivateComment()); |
} |
// acts |
List acts = new ArrayList(event.getActCollection()); |
ParticipantActBean[] a = new ParticipantActBean[acts.size()]; |
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR); |
for(int i = 0; i < acts.size(); i++) { |
EventAct act = (EventAct)acts.get(i); |
a[i] = new ParticipantActBean(act.getAct(), |
participant.getAct(act.getAct().getId())); |
} |
showForm.set("acts", a); |
initLists(request, event); |
request.setAttribute("event", event); |
request.setAttribute("participant", participant); |
return mapping.findForward("default"); |
135,59 → 115,21 |
DynaActionForm theForm = (DynaActionForm)form; |
Long participantId = StringConverter.parseLong(theForm.get("id")); |
Participant participant; |
Event event; |
boolean newParticipant; |
// get instance |
if(participantId == null) { |
Long eventId = StringConverter.parseLong(theForm.get("event")); |
event = EventManager.getInstance().get(eventId, false); |
Long eventId = StringConverter.parseLong(theForm.get("event")); |
Event event = EventManager.getInstance().get(eventId, false); |
participant = ParticipantManager.getInstance().create(); |
participant.setIdent(ParticipantManager.getInstance().generateIdent()); |
participant.setEvent(event); |
newParticipant = true; |
} |
else { |
participant = ParticipantManager.getInstance().get(participantId); |
event = participant.getEvent(); |
newParticipant = false; |
} |
// acts |
ParticipantActBean[] acts = (ParticipantActBean[])theForm.get("acts"); |
for(int i = 0; i < acts.length; i++) { |
// get bean |
Long actId = StringConverter.parseLong(acts[i].getActId()); |
EventAct act = event.getAct(actId); |
ParticipantAct participantAct = participant.getAct(actId); |
if(acts[i].getSelected() == null || !acts[i].getSelected().booleanValue()) { |
if(participantAct != null) participant.removeAct(participantAct); |
} |
else { |
if(participantAct == null) { |
participantAct = ParticipantManager.getInstance().createAct(); |
participantAct.setParticipant(participant); |
participantAct.setAct(act.getAct()); |
participant.addAct(participantAct); |
} |
participantAct.setComment(acts[i].getComment()); |
} |
} |
String email = (String)theForm.get("email"); |
if(ParticipantManager.getInstance().emailExists(participant, email)) { |
request.setAttribute("event", event); |
request.setAttribute("participant", participant); |
initLists(request, event); |
throw new UserException("ak.kickup.core.participant.email.nonunique.admin"); |
} |
participant.setEmail(email); |
// others |
participant.setNick((String)theForm.get("nick")); |
participant.setEmail((String)theForm.get("email")); |
participant.setEmailPublic((Boolean)theForm.get("emailPublic")); |
participant.setName((String)theForm.get("name")); |
participant.setPhone((String)theForm.get("phone")); |
204,9 → 146,6 |
participant.setPrivateComment((String)theForm.get("privateComment")); |
ParticipantManager.getInstance().save(participant); |
if(newParticipant) |
Messages.sendRegistrationMessage(participant, null); |
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl()); |
return null; |
} |
214,12 → 153,4 |
throw new Exception("unknown mapping parameter"); |
} |
} |
private void initLists(HttpServletRequest request, Event event) |
throws Exception |
{ |
List acts = new ArrayList(event.getActCollection()); |
Collections.sort(acts, EventManager.ACT_NAME_COMPARATOR); |
request.setAttribute("actList", new ObjectList(acts)); |
} |
} |
/kickup/trunk/src/ak/kickup/core/CoreResources.properties |
---|
2,8 → 2,6 |
ak.kickup.core.act.name.nonunique=Мероприятие с таким названием уже существует |
ak.kickup.core.apartment.name.nonunique=Гостиница с таким названием уже существует |
ak.kickup.core.event.name.nonunique=Пьянка с таким названием уже существует |
ak.kickup.core.participant.email.nonunique=Этот e-mail уже зарегистрирован на эту пьянку. Если вы забыли свой номер - обратитесь к организаторам. |
ak.kickup.core.participant.email.nonunique.admin=Этот e-mail уже зарегистрирован на эту пьянку |
ak.kickup.core.access.denied=Сюда нельзя! |
ak.kickup.core.event.edit.id.wrong=Неизвестная пьянка, выбирайти из списка |
ak.kickup.core.event.edit.name.required=Название обязательно |
33,8 → 31,5 |
ak.kickup.core.participant.edit.ident.wrong=Неизвестный номер |
ak.kickup.core.participant.edit.registration.unavailable=Время регистрации прошло |
ak.kickup.core.participant.edit.unregistration.unavailable=Время отмены регистрации прошло |
ak.kickup.core.mail.send.error=Не могу отправить вам e-mail. Проверьте свой адрес и обратитесь к организаторам. |
ak.kickup.core.mail.read.error=Не могу отправить вам e-mail. Ошибка в системе. |
ak.kickup.core.mail.subject=Регистрация на {0} |
org.apache.struts.taglib.bean.format.sql.timestamp=dd.MM.yyyy HH:mm:ss.SSS |
/kickup/trunk/src/ak/kickup/core/model/ParticipantAct.java |
---|
File deleted |
/kickup/trunk/src/ak/kickup/core/model/ParticipantManager.java |
---|
27,8 → 27,6 |
try { |
HibernateUtil.getConfiguration().addResource( |
"ak/kickup/core/model/Participant.hbm.xml"); |
HibernateUtil.getConfiguration().addResource( |
"ak/kickup/core/model/ParticipantAct.hbm.xml"); |
participantManager = new ParticipantManager(); |
} |
84,30 → 82,6 |
} |
} |
public boolean emailExists(Participant participant, String email) |
throws ModelException |
{ |
try { |
if(participant.getId() == null) |
return ((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from Participant where email=? and event=?", |
new Object[] { email, participant.getEvent() }, |
new Type[] { Hibernate.STRING, Hibernate.entity(Event.class) } ) |
.next()).intValue() > 0; |
else |
return ((Integer)HibernateUtil.currentSession().iterate( |
"select count(*) from Participant p where email=? and event=? and p!=?", |
new Object[] { email, participant.getEvent(), participant }, |
new Type[] { Hibernate.STRING, Hibernate.entity(Event.class), |
Hibernate.entity(Participant.class) } ) |
.next()).intValue() > 0; |
} |
catch(HibernateException ex) |
{ |
throw new ModelException(ex); |
} |
} |
public String generateIdent() |
throws ModelException |
{ |
198,12 → 172,6 |
} |
} |
public ParticipantAct createAct() |
throws ModelException |
{ |
return new ParticipantAct(); |
} |
public static final Comparator NICK_COMPARATOR = new NickComparator(); |
private static class NickComparator |
/kickup/trunk/src/ak/kickup/core/model/Participant.java |
---|
1,11 → 1,6 |
package ak.kickup.core.model; |
import java.util.Date; |
import java.util.Map; |
import java.util.HashMap; |
import java.util.Collections; |
import java.util.Collection; |
import java.util.Iterator; |
import ak.kickup.util.ModelException; |
import ak.kickup.util.ModelSecurityException; |
34,8 → 29,6 |
private Boolean payed; |
private String comment; |
private String privateComment; |
private Collection acts; // Collection(ParticipantAct) |
private Map actsMap = new HashMap(); // Map(Long id -> ParticipantAct) |
protected Participant() |
{ |
293,56 → 286,6 |
this.privateComment = privateComment; |
} |
/** |
* @return Collection(ParticipantAct) |
* |
* @hibernate.bag inverse="true" cascade="all-delete-orphan" lazy="true" |
* @hibernate.collection-key column="participant" |
* @hibernate.collection-one-to-many class="ak.kickup.core.model.ParticipantAct" |
*/ |
protected Collection getActs() |
{ |
return acts; |
} |
public Collection getActCollection() |
{ |
return Collections.unmodifiableCollection(acts); |
} |
/** |
* @param destinations Collection(ParticipantAct) |
*/ |
protected void setActs(Collection acts) |
{ |
this.acts = acts; |
actsMap.clear(); |
if(acts != null) { |
for(Iterator i = acts.iterator(); i.hasNext(); ) { |
ParticipantAct a = (ParticipantAct)i.next(); |
actsMap.put(a.getAct().getId(), a); |
} |
} |
} |
public ParticipantAct getAct(Long actId) |
{ |
return (ParticipantAct)actsMap.get(actId); |
} |
public void addAct(ParticipantAct act) |
{ |
acts.add(act); |
actsMap.put(act.getAct().getId(), act); |
} |
public void removeAct(ParticipantAct act) |
{ |
acts.remove(act); |
actsMap.remove(act.getAct().getId()); |
} |
public boolean equals(Object o) |
{ |
if(o == null || !(o instanceof Participant)) return false; |
/kickup/trunk/src/ak/kickup/core/form/ParticipantActBean.java |
---|
File deleted |
/kickup/trunk/webapp/WEB-INF/struts-config.xml |
---|
30,10 → 30,8 |
<form-property name="account" type="java.lang.String" /> |
<form-property name="enabled" type="java.lang.Boolean" /> |
<form-property name="comment" type="java.lang.String" /> |
<form-property name="acts" type="ak.kickup.core.form.EventActBean[]" |
size="1" /> |
<form-property name="apartments" type="ak.kickup.core.form.EventApartmentBean[]" |
size="1" /> |
<form-property name="acts" type="ak.kickup.core.form.EventActBean[]" size="1" /> |
<form-property name="apartments" type="ak.kickup.core.form.EventApartmentBean[]" size="1" /> |
</form-bean> |
<form-bean |
108,8 → 106,6 |
<form-property name="payed" type="java.lang.Boolean" /> |
<form-property name="comment" type="java.lang.String" /> |
<form-property name="privateComment" type="java.lang.String" /> |
<form-property name="acts" type="ak.kickup.core.form.ParticipantActBean[]" |
size="1" /> |
</form-bean> |
<form-bean |
130,8 → 126,6 |
<form-property name="freeSleep" type="java.lang.String" /> |
<form-property name="sleepComment" type="java.lang.String" /> |
<form-property name="comment" type="java.lang.String" /> |
<form-property name="acts" type="ak.kickup.core.form.ParticipantActBean[]" |
size="1" /> |
</form-bean> |
<form-bean |
151,8 → 145,6 |
<form-property name="freeSleep" type="java.lang.String" /> |
<form-property name="sleepComment" type="java.lang.String" /> |
<form-property name="comment" type="java.lang.String" /> |
<form-property name="acts" type="ak.kickup.core.form.ParticipantActBean[]" |
size="1" /> |
</form-bean> |
</form-beans> |
/kickup/trunk/webapp/WEB-INF/lib/activation.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/kickup/trunk/webapp/WEB-INF/lib/smtp.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/kickup/trunk/webapp/WEB-INF/lib/mailapi.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/kickup/trunk/webapp/participant/register.jsp |
---|
34,87 → 34,66 |
<table border=1> |
<tr> |
<th>Ник на форуме</th> |
<td colspan=2><html:text property="nick" /></td> |
<td><html:text property="nick" /></td> |
</tr> |
<tr> |
<th>Ваш e-mail</th> |
<td colspan=2><html:text property="email" /></td> |
<td><html:text property="email" /></td> |
</tr> |
<tr> |
<th>Разрешить показ e-mail'а</th> |
<td colspan=2><html:checkbox property="emailPublic" /></td> |
<td colspan=3><html:checkbox property="emailPublic" /></td> |
</tr> |
<tr> |
<th>Сколько вас</th> |
<td colspan=2><html:text property="persons" /></td> |
<td><html:text property="persons" /></td> |
</tr> |
<tr> |
<th>Выезд из PLZ</th> |
<td colspan=2><html:text property="fromZip" /></td> |
<td><html:text property="fromZip" /></td> |
</tr> |
<tr> |
<th>Выезд из города</th> |
<td colspan=2><html:text property="fromCity" /></td> |
<td><html:text property="fromCity" /></td> |
</tr> |
<tr> |
<th>Время отправления</th> |
<td colspan=2><html:text property="departure" /></td> |
<td><html:text property="departure" /></td> |
</tr> |
<tr> |
<th>Свободных мест в машине</th> |
<td colspan=2><html:text property="freeTransport" /></td> |
<td><html:text property="freeTransport" /></td> |
</tr> |
<tr> |
<th>Условия транспортировки</th> |
<td colspan=2><html:textarea property="transportComment" /></td> |
<td><html:textarea property="transportComment" /></td> |
</tr> |
<tr> |
<th>Свободных спальных мест</th> |
<td colspan=2><html:text property="freeSleep" /></td> |
<td><html:text property="freeSleep" /></td> |
</tr> |
<tr> |
<th>Условия ночевки</th> |
<td colspan=2><html:textarea property="sleepComment" /></td> |
<td><html:textarea property="sleepComment" /></td> |
</tr> |
<tr> |
<th>Ваше имя</th> |
<td colspan=2><html:text property="name" /></td> |
<td><html:text property="name" /></td> |
</tr> |
<tr> |
<th>Телефон</th> |
<td colspan=2><html:text property="phone" /></td> |
<td><html:text property="phone" /></td> |
</tr> |
<tr> |
<th>Дополнительная информация</th> |
<td colspan=2><html:textarea property="comment" /></td> |
<td><html:textarea property="comment" /></td> |
</tr> |
<logic:notEmpty name="actList" property="objects"> |
<tr> |
<th colspan=3>В чем желаете поучаствовать</th> |
</tr> |
<tr> |
<td>Название</td> |
<td>Включить</td> |
<td>Дополнительно</td> |
</tr> |
<logic:iterate name="ParticipantRegisterForm" property="acts" id="acts" indexId="iid"> |
<tr> |
<th> |
<bean:write name="actList" property='<%= "objects[" + iid + "].act.name" %>' /> |
<html:hidden name="acts" property="actId" indexed="true" /> |
</th> |
<td><html:checkbox name="acts" property="selected" indexed="true" /></td> |
<td><html:text name="acts" property="comment" indexed="true" /></td> |
</tr> |
</logic:iterate> |
</logic:notEmpty> |
<tr> |
<td colspan=3> |
<td colspan=2> |
<html:submit>Зарегистрироваться</html:submit> |
<backpath:notEmpty><backpath:backlink>Отменить</backpath:backlink></backpath:notEmpty> |
</td> |
/kickup/trunk/webapp/participant/edit.jsp |
---|
35,91 → 35,70 |
<table border=1> |
<tr> |
<th>Ваш номер</th> |
<td colspan=2><bean:write name="participant" property="ident" /></td> |
<td><bean:write name="participant" property="ident" /></td> |
</tr> |
<tr> |
<th>Ник на форуме</th> |
<td colspan=2><bean:write name="participant" property="nick" /></td> |
<td><bean:write name="participant" property="nick" /></td> |
</tr> |
<tr> |
<th>Ваш e-mail</th> |
<td colspan=2><bean:write name="participant" property="email" /></td> |
<td><bean:write name="participant" property="email" /></td> |
</tr> |
<tr> |
<th>Разрешить показ e-mail'а</th> |
<td colspan=2><html:checkbox property="emailPublic" /></td> |
<td colspan=3><html:checkbox property="emailPublic" /></td> |
</tr> |
<tr> |
<th>Сколько вас</th> |
<td colspan=2><html:text property="persons" /></td> |
<td><html:text property="persons" /></td> |
</tr> |
<tr> |
<th>Выезд из PLZ</th> |
<td colspan=2><html:text property="fromZip" /></td> |
<td><html:text property="fromZip" /></td> |
</tr> |
<tr> |
<th>Выезд из города</th> |
<td colspan=2><html:text property="fromCity" /></td> |
<td><html:text property="fromCity" /></td> |
</tr> |
<tr> |
<th>Время отправления</th> |
<td colspan=2><html:text property="departure" /></td> |
<td><html:text property="departure" /></td> |
</tr> |
<tr> |
<th>Свободных мест в машине</th> |
<td colspan=2><html:text property="freeTransport" /></td> |
<td><html:text property="freeTransport" /></td> |
</tr> |
<tr> |
<th>Условия транспортировки</th> |
<td colspan=2><html:textarea property="transportComment" /></td> |
<td><html:textarea property="transportComment" /></td> |
</tr> |
<tr> |
<th>Свободных спальных мест</th> |
<td colspan=2><html:text property="freeSleep" /></td> |
<td><html:text property="freeSleep" /></td> |
</tr> |
<tr> |
<th>Условия ночевки</th> |
<td colspan=2><html:textarea property="sleepComment" /></td> |
<td><html:textarea property="sleepComment" /></td> |
</tr> |
<tr> |
<th>Ваше имя</th> |
<td colspan=2><html:text property="name" /></td> |
<td><html:text property="name" /></td> |
</tr> |
<tr> |
<th>Телефон</th> |
<td colspan=2><html:text property="phone" /></td> |
<td><html:text property="phone" /></td> |
</tr> |
<tr> |
<th>Дополнительная информация</th> |
<td colspan=2><html:textarea property="comment" /></td> |
<td><html:textarea property="comment" /></td> |
</tr> |
<logic:notEmpty name="actList" property="objects"> |
<tr> |
<th colspan=3>В чем желаете поучаствовать</th> |
</tr> |
<tr> |
<td>Название</td> |
<td>Включить</td> |
<td>Дополнительно</td> |
</tr> |
<logic:iterate name="ParticipantRegisterEditForm" property="acts" id="acts" indexId="iid"> |
<tr> |
<th> |
<bean:write name="actList" property='<%= "objects[" + iid + "].act.name" %>' /> |
<html:hidden name="acts" property="actId" indexed="true" /> |
</th> |
<td><html:checkbox name="acts" property="selected" indexed="true" /></td> |
<td><html:text name="acts" property="comment" indexed="true" /></td> |
</tr> |
</logic:iterate> |
</logic:notEmpty> |
<tr> |
<td colspan=3> |
<td colspan=2> |
<html:submit>Сохранить</html:submit> |
<backpath:notEmpty><backpath:backlink>Отменить</backpath:backlink></backpath:notEmpty> |
</td> |
/kickup/trunk/webapp/admin/participant/edit.jsp |
---|
35,15 → 35,15 |
<table border=1> |
<tr> |
<th>Кодовый номер</th> |
<td colspan=3><bean:write name="participant" property="ident" /> </td> |
<td><bean:write name="participant" property="ident" /> </td> |
</tr> |
<tr> |
<th>Ник</th> |
<td colspan=3><html:text property="nick" /></td> |
<td><html:text property="nick" /></td> |
</tr> |
<tr> |
<th>e-mail</th> |
<td colspan=3><html:text property="email" /></td> |
<td><html:text property="email" /></td> |
</tr> |
<tr> |
<th>Показ e-mail разрешен</th> |
51,47 → 51,47 |
</tr> |
<tr> |
<th>Имя</th> |
<td colspan=3><html:text property="name" /></td> |
<td><html:text property="name" /></td> |
</tr> |
<tr> |
<th>Телефон</th> |
<td colspan=3><html:text property="phone" /></td> |
<td><html:text property="phone" /></td> |
</tr> |
<tr> |
<th>Количество человек</th> |
<td colspan=3><html:text property="persons" /></td> |
<td><html:text property="persons" /></td> |
</tr> |
<tr> |
<th>Выезд из PLZ</th> |
<td colspan=3><html:text property="fromZip" /></td> |
<td><html:text property="fromZip" /></td> |
</tr> |
<tr> |
<th>Выезд из города</th> |
<td colspan=3><html:text property="fromCity" /></td> |
<td><html:text property="fromCity" /></td> |
</tr> |
<tr> |
<th>Время отправления</th> |
<td colspan=3><html:text property="departure" /></td> |
<td><html:text property="departure" /></td> |
</tr> |
<tr> |
<th>Свободных мест в машине</th> |
<td colspan=3><html:text property="freeTransport" /></td> |
<td><html:text property="freeTransport" /></td> |
</tr> |
<tr> |
<th>Условия транспортировки</th> |
<td colspan=3><html:textarea property="transportComment" /></td> |
<td><html:textarea property="transportComment" /></td> |
</tr> |
<tr> |
<th>Свободных спальных мест</th> |
<td colspan=3><html:text property="freeSleep" /></td> |
<td><html:text property="freeSleep" /></td> |
</tr> |
<tr> |
<th>Условия ночевки</th> |
<td colspan=3><html:textarea property="sleepComment" /></td> |
<td><html:textarea property="sleepComment" /></td> |
</tr> |
<tr> |
<th>Дополнительная информация</th> |
<td colspan=3><html:textarea property="comment" /></td> |
<td><html:textarea property="comment" /></td> |
</tr> |
<tr> |
<th>Оплачено</th> |
99,34 → 99,10 |
</tr> |
<tr> |
<th>Комментарии организаторов</th> |
<td colspan=3><html:textarea property="privateComment" /></td> |
<td><html:textarea property="privateComment" /></td> |
</tr> |
<logic:notEmpty name="actList" property="objects"> |
<tr> |
<th colspan=4>Участвует в</th> |
</tr> |
<tr> |
<td>Название</td> |
<td>Включить</td> |
<td>Дополнительно</td> |
<td> </td> |
</tr> |
<logic:iterate name="ParticipantEditForm" property="acts" id="acts" indexId="iid"> |
<tr> |
<th> |
<bean:write name="actList" property='<%= "objects[" + iid + "].act.name" %>' /> |
<html:hidden name="acts" property="actId" indexed="true" /> |
</th> |
<td><html:checkbox name="acts" property="selected" indexed="true" /></td> |
<td><html:text name="acts" property="comment" indexed="true" /></td> |
<td> </td> |
</tr> |
</logic:iterate> |
</logic:notEmpty> |
<tr> |
<td colspan=4> |
<td colspan=2> |
<html:submit>Сохранить</html:submit> |
<backpath:notEmpty><backpath:backlink>Отменить</backpath:backlink></backpath:notEmpty> |
</td> |
/kickup/trunk/sql/00.tables.sql |
---|
153,13 → 153,15 |
constraint participants_email unique(email) |
); |
/* |
create table participant_acts |
( |
id integer not null, |
participant integer not null, |
act integer not null, |
comment text, |
mod_stamp timestamp, |
participant integer not null, |
event integer not null, |
act integer not null, |
comment text, |
mod_stamp timestamp, |
constraint participant_acts_prim primary key (participant, act) |
constraint participant_acts_prim primary key (participant, event, act) |
); |
*/ |
/kickup/trunk/build.xml |
---|
79,10 → 79,6 |
dir="${classes}" |
includes="**/*.xml" |
/> |
<fileset |
dir="${src}" |
includes="**/*.txt" |
/> |
</copy> |
<copy todir="${app.web-inf}" flatten="yes"> |