///////////////////////////////////////////////////////////////////////////// // // Project ProjectForge Community Edition // www.projectforge.org // // Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de) // // ProjectForge is dual-licensed. // // This community edition is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as published // by the Free Software Foundation; version 3 of the License. // // This community edition is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General // Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, see http://www.gnu.org/licenses/. // ///////////////////////////////////////////////////////////////////////////// package org.projectforge.web.address; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Date; import org.apache.log4j.Logger; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; import org.projectforge.address.AddressDO; import org.projectforge.address.AddressDao; import org.projectforge.address.PersonalAddressDO; import org.projectforge.address.PersonalAddressDao; import org.projectforge.common.DateHelper; import org.projectforge.core.ConfigXml; import org.projectforge.web.wicket.AbstractEditPage; import org.projectforge.web.wicket.AbstractSecuredBasePage; import org.projectforge.web.wicket.DownloadUtils; import org.projectforge.web.wicket.EditPage; import org.projectforge.web.wicket.components.ContentMenuEntryPanel; @EditPage(defaultReturnPage = AddressListPage.class) public class AddressEditPage extends AbstractEditPage<AddressDO, AddressEditForm, AddressDao> { private static final long serialVersionUID = 7091721062661400435L; private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(AddressEditPage.class); @SpringBean(name = "addressDao") private AddressDao addressDao; @SpringBean(name = "personalAddressDao") private PersonalAddressDao personalAddressDao; @SuppressWarnings("serial") public AddressEditPage(final PageParameters parameters) { super(parameters, "address"); init(); if (isNew() == false) { ContentMenuEntryPanel menu = new ContentMenuEntryPanel(getNewContentMenuChildId(), new Link<Void>(ContentMenuEntryPanel.LINK_ID) { @Override public void onClick() { final Integer addressId = form.getData().getId(); final PageParameters params = new PageParameters(); params.add(AbstractEditPage.PARAMETER_KEY_ID, addressId); final AddressViewPage addressViewPage = new AddressViewPage(params); setResponsePage(addressViewPage); }; }, getString("printView")); addContentMenuEntry(menu); final ContentMenuEntryPanel singleIcalExport = new ContentMenuEntryPanel(getNewContentMenuChildId(), new Link<Void>(ContentMenuEntryPanel.LINK_ID) { @Override public void onClick() { final AddressDO address = form.getData(); final String filename = "ProjectForge-" + address.getFullName() + "_" + DateHelper.getDateAsFilenameSuffix(new Date()) + ".vcf"; final StringWriter writer = new StringWriter(); addressDao.exportVCard(new PrintWriter(writer), address); DownloadUtils.setUTF8CharacterEncoding(getResponse()); DownloadUtils.setDownloadTarget(writer.toString().getBytes(), filename); }; }, getString("address.book.vCardSingleExport")); addContentMenuEntry(singleIcalExport); if (ConfigXml.getInstance().isTelephoneSystemUrlConfigured() == true) { menu = new ContentMenuEntryPanel(getNewContentMenuChildId(), new Link<Void>(ContentMenuEntryPanel.LINK_ID) { @Override public void onClick() { final Integer addressId = form.getData().getId(); final PageParameters params = new PageParameters(); params.add(PhoneCallPage.PARAMETER_KEY_ADDRESS_ID, addressId); setResponsePage(new PhoneCallPage(params)); }; }, getString("address.directCall.call")); addContentMenuEntry(menu); } } } @Override public AbstractSecuredBasePage afterSaveOrUpdate() { final AddressDO address = addressDao.getOrLoad(getData().getId()); final PersonalAddressDO personalAddress = form.addressEditSupport.personalAddress; personalAddress.setAddress(address); personalAddressDao.setOwner(personalAddress, getUserId()); // Set current logged in user as owner. personalAddressDao.saveOrUpdate(personalAddress); return null; } /** * @see org.projectforge.web.wicket.AbstractEditPage#cloneData() */ @Override protected void cloneData() { super.cloneData(); final PersonalAddressDO personalAddress = form.addressEditSupport.personalAddress; personalAddress.setId(null); personalAddress.setDeleted(false); } @Override protected AddressDao getBaseDao() { return addressDao; } @Override protected AddressEditForm newEditForm(final AbstractEditPage< ? , ? , ? > parentPage, final AddressDO data) { return new AddressEditForm(this, data); } @Override protected Logger getLogger() { return log; } }