@RequestMapping(value = "/{siteId}/{pageId}/createLinkURL.form", method = RequestMethod.POST) protected ModelAndView createLinkURL( @PathVariable String siteId, @PathVariable String pageId, HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView modelAndView = null; try { AuthRequest ar = getLoggedInAuthRequest(request, response, "message.can.not.create.link.url"); NGPage ngp = registerRequiredProject(ar, siteId, pageId); ar.assertNotFrozen(ngp); String visibility = ar.reqParam("visibility"); String comment = ar.reqParam("comment"); String taskUrl = ar.reqParam("taskUrl"); String ftype = ar.reqParam("ftype"); AttachmentRecord attachment = ngp.createAttachment(); String proposedName = taskUrl; if (taskUrl.contains("/")) { proposedName = taskUrl.substring(taskUrl.lastIndexOf("/") + 1); } AttachmentHelper.setDisplayName(ngp, attachment, proposedName); attachment.setComment(comment); attachment.setModifiedBy(ar.getBestUserId()); attachment.setModifiedDate(ar.nowTime); attachment.setType(ftype); if (visibility.equals("PUB")) { attachment.setVisibility(1); } else { attachment.setVisibility(2); } HistoryRecord.createHistoryRecord( ngp, attachment.getId(), HistoryRecord.CONTEXT_TYPE_DOCUMENT, ar.nowTime, HistoryRecord.EVENT_DOC_ADDED, ar, "Created Link URL"); attachment.setStorageFileName(taskUrl); ngp.saveFile(ar, "Created Link URL"); modelAndView = createRedirectView(ar, "attachment.htm"); } catch (Exception ex) { throw new NGException( "nugen.operation.fail.project.create.link.url.to.project", new Object[] {pageId, siteId}, ex); } return modelAndView; }