You have written

onSelectFrom instead of onSelectedFrom

secondly you have specified @Event which is unnecessary if you are using
onEventFromComponent syntax

regards
Taha


On Wed, Apr 6, 2011 at 10:42 AM, Amr Mohamed Mahmoud Hassanien <
amr.hassan...@dmi.ae> wrote:

>
> =======================================================The first file
> Edit.Java====================================================================
>
> /**
>  * Article Edit page
>  *
>  * @author <a href="mailto:isid...@awraqpublishing.com";>Ismail O. M.
> Sidiya</a>
>  * @version 1.0
>  */
> @Secured(Role.ROLE_USER)
> public class ArticleEdit
> {
>  @Inject
>  private Logger logger;
>
>  @Inject
>  private UserManager userManager;
>
>  @Inject
>  private SiteManager siteManager;
>
>  @Inject
>  private ArticleManager articleManager;
>
>  @Inject
>  private SectionManager sectionManager;
>
>  @Inject
>  private ImageManager imageManager;
>
>  @Inject
>  private ImageConverter imageConverter;
>
>  @SuppressWarnings("unused")
>  @Inject
>  private PropertyAccess propertyAccess;
>
>  @SuppressWarnings("unused")
>  @Inject
>  private ComponentResources componentResources;
>
>
>  @Inject
>  private PageRenderLinkSource pageRenderLinkSource;
>
>  @Inject
>  private Messages messages;
>
>  @InjectPage
>  private ArticleList articleList;
>
>  @InjectComponent
>  private Form form;
>
>  @Persist()
>  @Property
>  private String id;
>
>  @Persist
>  @Property
>  @Validate("required")
>  private String name;
>
>  @Persist
>  @Property
>  private Section section;
>
>  @Persist
>  @Property
>  @Validate("required")
>  private Date date;
>
>  @Persist
>  @Property
>  @Validate("required")
>  private WorkflowStatus publishStatus;
>
>  @Persist
>  @Property
>  private Date publishDate;
>
>  @Persist
>  @Property
>  private Date expiryDate;
>
>  @Persist
>  @Property
>  private String authorName;
>
>  @Persist
>  @Property
>  private String city;
>
>  @Persist
>  @Property
>  private String source;
>
>  @Persist
>  @Property
>  @Validate("required")
>  private String title;
>
>  @Persist
>  @Property
>  private String shortTitle;
>
>  @Persist
>  @Property
>  private String subTitle;
>
>  @Persist
>  @Property
>  private String lead;
>
>  @Persist
>  @Property
>  private String body;
>
>  @Persist
>  @Property
>  private String caption;
>
>  @Persist
>  @Property
>  private List<Image> tempImages;
>
>
>  @SuppressWarnings("unused")
>  @Property
>  private SelectModel sectionModel;
>
>  @SuppressWarnings("unused")
>  @Property
>  private ValueEncoder<Section> sectionEncoder;
>
>  private List<String> authorNames;
>  private List<String> cities;
>  private List<String> sources;
>
>  @Persist
>  private boolean showsamePage;
>
>
>  //Helper variables
>  @Property
>  private UploadedFile file;
>  @SuppressWarnings("unused")
>  @Property
>  private Image image;
>  @SuppressWarnings("unused")
>  @Property
>  private int index;
>  // end Helper variables
>
>  /**
>   * @return
>   */
>  public WorkflowStatus getPublishStatusDraft()
>  {
>    return WorkflowStatus.DRAFT;
>  }
>
>  /**
>   * @return
>   */
>  public WorkflowStatus getPublishStatusPublic()
>  {
>    return WorkflowStatus.PUBLIC;
>  }
>
>  void onPrepare()
>  {
>                if(!showsamePage){
>                        Article article = null;
>                        try {
>                                article = articleManager.get(id);
>                        } catch (Exception ex) {
>                                logger.warn("Invalid article id", ex);
>                        }
>
>                        if (article != null) {
>                                name = article.getName();
>                                Page page = article.getPage();
>                                if (page instanceof Section) {
>                                        section = (Section) page;
>                                }
>                                date = article.getDate();
>                                publishStatus = article.getPublishStatus();
>                                publishDate = article.getPublishDate();
>                                expiryDate = article.getExpiryDate();
>                                authorName = article.getAuthorName();
>                                city = article.getCity();
>                                source = article.getSource();
>                                title = article.getTitle();
>                                shortTitle = article.getShortTitle();
>                                subTitle = article.getSubTitle();
>                                lead = article.getLead();
>                                body = article.getBody();
>                                tempImages = article.getImages();
>                        }
>                }
>
>                User user = userManager.getCurrentUser();
>                List<Section> sections =
> sectionManager.getSiteSections(user.getSite());
>
>                // sectionModel =
>                // new PropertyAccessSelectionModel<Section>(sections,
> propertyAccess,
>                // "name");
>                sectionModel = new SectionSelectionModel(sections, messages
>                                .get("padding.select-option-tree"));
>                sectionEncoder = new
> PersistableValueEncoder<Section>(sectionManager);
>  }
>
>  void onValidateForm()
>  {
>    Article article = null;
>    try {
>      article = articleManager.get(id);
>    }
>    catch (Exception ex) {
>      logger.warn("Invalid article id", ex);
>    }
>    if (article == null) {
>      form.recordError("id-error");
>    }
>  }
>
>
>        private Object cancel() {
>                // clean presisted images
>                tempImages = null;
>                return articleList;
>        }
>
>        private Object upload() {
>                // on upload make sure that the image is presiste in
> tempImages
>                // and echo the other fields
>                Article article = null;
>                try {
>                        article = articleManager.get(id);
>                } catch (Exception ex) {
>                        logger.warn("Invalid article id", ex);
>                }
>
>                if (article == null) {
>                        form.recordError(messages.get("id-error"));
>                        return null;
>                }
>                File contentFile = null;
>                try {
>                        File diskFile = UploadUtils.toDiskFile(file);
>                        contentFile = imageConverter.convert(diskFile);
>                        if (contentFile == null || !contentFile.exists()) {
>                                contentFile = diskFile;
>                        }
>                } catch (IOException ex) {
>                        logger.warn("Invalid image", ex);
>                }
>
>                Image newImage = null;
>                try {
>                        if (contentFile != null && contentFile.exists()) {
>                                newImage = new Image(file.getFileName(),
> file.getContentType(),
>                                                caption, contentFile);
>                                tempImages.add(newImage);
>                        }
>                } catch (IOException ex) {
>                        logger.warn("Invalid image", ex);
>                }
>                return this;
>        }
>
>        private Object submit() {
>                Article article = null;
>                try {
>                        article = articleManager.get(id);
>                } catch (Exception ex) {
>                        logger.warn("Invalid article id", ex);
>                }
>
>                if (article == null) {
>                        form.recordError(messages.get("id-error"));
>                        return null;
>                }
>
>                // Section oldSection = article.getSection();
>                // if (!ObjectUtils.equals(oldSection, section)) {
>                // if (oldSection != null) {
>                // oldSection.getArticles().remove(article);
>                // }
>                // }
>
>                article.setName(name);
>                article.setPage(section);
>                article.setDate(date);
>                article.setPublishStatus(publishStatus);
>                article.setPublishDate(publishDate);
>                article.setExpiryDate(expiryDate);
>                article.setAuthorName(authorName);
>                article.setCity(city);
>                article.setSource(source);
>                article.setTitle(title);
>                article.setShortTitle(shortTitle);
>                article.setSubTitle(subTitle);
>                article.setLead(lead);
>                article.setBody(body);
>
>                File contentFile = null;
>                try {
>                        File diskFile = UploadUtils.toDiskFile(file);
>                        contentFile = imageConverter.convert(diskFile);
>                        if (contentFile == null || !contentFile.exists()) {
>                                contentFile = diskFile;
>                        }
>                } catch (IOException ex) {
>                        logger.warn("Invalid image", ex);
>                }
>
>                Image newImage = null;
>                try {
>                        if (contentFile != null && contentFile.exists()) {
>                                newImage = new Image(file.getFileName(),
> file.getContentType(),
>                                                caption, contentFile);
>                                newImage = imageManager.save(newImage);
>                        }
>                } catch (IOException ex) {
>                        logger.warn("Invalid image", ex);
>                }
>
>                if (newImage != null) {
>                        if (!CollectionUtils.isEmpty(article.getImages())) {
>                                article.getImages().remove(0);
>                                article = articleManager.save(article);
>                        }
>                        article.addImage(newImage);
>                }
>                article = articleManager.save(article);
>                if (!StringUtils.isEmpty(caption)) {
>                        Image image = article.getFisrtImage();
>                        if (image != null) {
>                                image = imageManager.get(image.getId());
>                                image.setCaption(caption);
>                                imageManager.save(image);
>                        }
>                }
>
>                updateSite();
>
>                articleList.getLayout().writeMessage(
>                                messages.format("article-updated",
> article.getName()));
>
>                return articleList;
>        }
>
>        /**
>         * Remove image by index
>         *
>         * @param id
>         * @param articleid
>         * @return
>         */
>        Object onActionFromRemoveImage(int index) {
>                tempImages.remove(index);
>                return null;
>        }
>
>
>
>
>  @OnEvent(component="upload")
>  Object onSelectFromUpload(){
>          showsamePage = true;
>         return upload();
>  }
>
>  @OnEvent(component="cancel")
>  Object onSelectFromCancel(){
>          showsamePage = false;
>         return cancel();
>  }
>
>  @OnEvent(component="submit")
>  Object onSelectFromSubmit(){
>          showsamePage = false;
>         return submit();
>  }
>
>  @OnEvent(component="submitTop")
>  Object onSelectFromSubmitTop(){
>          return onSelectFromSubmit();
>  }
>
>  @OnEvent(component="cancelTop")
>  Object onSelectFromCancelTop(){
>          return onSelectFromCancel();
>  }
>
>  public int getTempImageSize(){
>          return tempImages.size()-1;
>  }
>
> }
> ===================================================End of
> Edit.Java======================================================================
> ===================================================The template
> file=====================================================================
> <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
>      xmlns:p="tapestry:parameter"
>      t:type="layout"
>      t:id="layout"
>      t:title="message:page.title">
>
>  <div class="table">
>
>    <t:form t:id="form"
>            t:context="id">
>      <t:errors/>
>         <fieldset class="button">
>        <input t:type="submit" value="${message:submit-label}"
> t:id="submitTop"/>
>        <input t:type="submit" value="${message:cancel-label}"
> t:id="cancelTop"/>
>      </fieldset>
>      <fieldset class="panel">
>        <fieldset class="field name required">
>          <t:label t:for="name"/>
>          <t:textfield t:id="name"
>                       t:value="name"
>                       t:validate="required"
>                       size="32"
>                       maxlength="128"
>                       class="medium"/>
>        </fieldset>
>        <fieldset class="field section">
>          <t:label t:for="section"/>
>          <t:select t:id="section"
>                    t:model="sectionModel"
>                    t:encoder="sectionEncoder"
>                    t:value="section"
>                    class="large"/>
>        </fieldset>
>        <fieldset class="field date required">
>          <t:label t:for="date"/>
>          <input t:type="dmi/datetimefield"
>                 t:id="date"
>                 t:value="date"
>                 t:validate="required"
>                 datePattern="yyyy-MM-dd HH:mm"
>                 timePicker="true"
>                 timePickerAdjacent="true"
>                 use24hrs="false"
>                 size="16"
>                 maxlength="16"
>                 class="small"/>
>          <!--t:datefield t:id="date"
>                       t:value="date"
>                       t:validate="required"
>                       size="16"
>                       maxlength="16"
>                       class="small"/-->
>        </fieldset>
>      </fieldset>
>     <!-- <fieldset class="panel">
>        <fieldset class="field publishStatus">
>          <t:label t:for="publishStatus"/>
>          <t:radiogroup t:id="publishStatus"
>                        t:label="message:publishStatus-label"
>                        t:value="publishStatus">
>            <fieldset class="radio">
>              <t:radio t:id="publishStatusDraft"
>                       t:label="message:publishStatus.draft-label"
>                       t:value="publishStatusDraft"/>
>              <t:label t:for="publishStatusDraft"/>
>              <t:radio t:id="publishStatusPublic"
>                       t:label="message:publishStatus.public-label"
>                       t:value="publishStatusPublic"/>
>              <t:label t:for="publishStatusPublic"/>
>            </fieldset>
>          </t:radiogroup>
>        </fieldset>
>
>        <fieldset class="field date publishDate">
>          <t:label t:for="publishDate"/>
>          <input t:type="dmi/datetimefield"
>                 t:id="publishDate"
>                 t:value="publishDate"
>                 datePattern="yyyy-MM-dd HH:mm"
>                 timePicker="true"
>                 timePickerAdjacent="true"
>                 use24hrs="false"
>                 size="16"
>                 maxlength="16"
>                 class="small"/>
>        </fieldset>
>
>        <fieldset class="field date expiryDate">
>          <t:label t:for="expiryDate"/>
>          <input t:type="dmi/datetimefield"
>                 t:id="expiryDate"
>                 t:value="expiryDate"
>                 datePattern="yyyy-MM-dd HH:mm"
>                 timePicker="true"
>                 timePickerAdjacent="true"
>                 use24hrs="false"
>                 size="16"
>                 maxlength="16"
>                 class="small"/>
>        </fieldset>
>      </fieldset> -->
>      <fieldset class="panel">
>        <fieldset class="field authorName">
>          <t:label t:for="authorName"/>
>          <t:textfield t:id="authorName"
>                       t:value="authorName"
>                       t:mixins="autocomplete"
>                       maxlength="128"
>                       class="medium"/>
>        </fieldset>
>        <fieldset class="field city">
>          <t:label t:for="city"/>
>          <t:textfield t:id="city"
>                       t:value="city"
>                       t:mixins="autocomplete"
>                       maxlength="128"
>                       class="medium"/>
>        </fieldset>
>        <fieldset class="field source">
>          <t:label t:for="source"/>
>          <t:textfield t:id="source"
>                       t:value="source"
>                       t:mixins="autocomplete"
>                       maxlength="128"
>                       class="medium"/>
>        </fieldset>
>      </fieldset>
>      <fieldset class="panel">
>        <fieldset class="field title required">
>          <t:label t:for="title"/>
>          <t:textfield t:id="title"
>                       t:value="title"
>                       t:validate="required"
>                       maxlength="256"
>                       class="large"/>
>        </fieldset>
>      </fieldset>
>      <fieldset class="panel">
>       <!-- <fieldset class="field shortTitle">
>          <t:label t:for="shortTitle"/>
>          <t:textfield t:id="shortTitle"
>                       t:value="shortTitle"
>                       maxlength="256"
>                       class="large"/>
>        </fieldset> -->
>        <fieldset class="field subTitle">
>          <t:label t:for="subTitle"/>
>          <t:textfield t:id="subTitle"
>                       t:value="subTitle"
>                       maxlength="256"
>                       class="large"/>
>        </fieldset>
>      </fieldset>
>      <fieldset class="panel">
>        <fieldset class="field lead">
>          <t:label t:for="lead"/>
>          <t:textarea t:id="lead"
>                      t:value="lead"
>                      rows="3"
>                      class="large"/>
>        </fieldset>
>      </fieldset>
>      <fieldset class="panel">
>        <fieldset class="field editor body">
>          <t:label t:for="body"/>
>          <textarea t:type="ck/editor"
>                    t:id="body"
>                    t:value="body"
>
>  customConfiguration="asset:../../components/FCKConfig.js"
>                    width="800px"
>                    height="400px"
>                    toolbarSet="Default"/>
>          <!--textarea t:type="easyck/ckeditor"
>                    t:id="body"
>                    t:value="body"
>                    height="400px"
>                    toolbarSet="Basic"/-->
>          <!--t:textarea t:id="body"
>                      t:value="body"
>                      rows="10"
>                      class="large"/-->
>        </fieldset>
>      </fieldset>
>      <fieldset class="panel image">
>        <label>${message:image-label}</label>
>        <fieldset class="file file">
>          <t:label t:for="file"/>
>          <input t:type="upload"
>                 t:id="file"
>                 class="large"/>
>           <input t:type="submit" value="${message:upload-label}"
> t:id="upload"/>
>           <t:if test="tempImages">
>                <t:loop source="tempImages" value="image">
>                <t:count start="0" end="${tempImageSize}" value="index">
>                <div class="image">
>                        <t:pagelink t:page="image/view" t:context="image.id"
> title="${image.caption}" rel="lightbox"><t:imageproxy
> image="image"/></t:pagelink>
>                        <span class="caption">${image.caption}</span>
>                </div>
>                                <t:actionlink t:id="removeImage"
> t:context="[index]"
> class="remove">${message:removeImage-link}</t:actionlink>
>                        </t:count>
>            </t:loop>
>          </t:if>
>        </fieldset>
>        <fieldset class="field caption">
>          <t:label t:for="caption"/>
>          <t:textfield t:id="caption"
>                       t:value="caption"
>                       maxlength="256"
>                       class="large"/>
>        </fieldset>
>      </fieldset>
>
>      <fieldset class="button">
>         <input t:type="submit" value="${message:submit-label}"
> t:id="submit"/>
>        <input t:type="submit" value="${message:cancel-label}"
> t:id="cancel"/>
>       </fieldset>
>    </t:form>
>
>  </div>
>
> </html>
> -----Original Message-----
> From: Taha Hafeez [mailto:tawus.tapes...@gmail.com]
> Sent: 05 أبريل, 2011 05:30 م
> To: Tapestry users
> Subject: Re: a form that have an upload, submit button
>
>  attachment, where ?
>
> Just paste the template/class inline...
>
> regards
> Taha
>
>
> 2011/4/5 Amr Mohamed Mahmoud Hassanien <amr.hassan...@dmi.ae>
>
> > Hi again Taha,
> >
> > I spent more time as I told you to see if I did something wrong, and I
> > tried all the options on
> >
> http://mail-archives.apache.org/mod_mbox/tapestry-users/200703.mbox/browseralso,
> and nothing worked.
> >
> > Please find the files attached... your help is much appericated
> >
> > Thanks
> > Amr
> >
> > -----Original Message-----
> > From: Taha Hafeez [mailto:tawus.tapes...@gmail.com]
> > Sent: 05 أبريل, 2011 11:09 ص
> > To: Tapestry users
> > Subject: Re: a form that have an upload, submit button
> >
> > Can you share the full code/template of the page ?
> >
> > regards
> > Taha
> >
> >
> > On Tue, Apr 5, 2011 at 12:30 PM, Amr Mohamed Mahmoud Hassanien <
> > amr.hassan...@dmi.ae> wrote:
> >
> > > Hello All,
> > >
> > >                   I have followed the example in
> > > http://wiki.apache.org/tapestry/Tapestry5HowToUseForms to make
> > > multiple submit buttons in a page and it doesn't work very well.
> > >                 Actually my case is a little bit different where in
> > > the same form I have an upload button which looks like that:
> > >
> > > <input t:type="submit" value="${message:upload-label}"
> > > t:id="upload"/>
> > >
> > > And handlers as follows:
> > >
> > > void onSelectedFromUpload(){
> > >        this.submissionType = SubmissionType.UPLOAD;  }
> > >
> > > public Object onSuccess() {
> > >            switch (submissionType) {
> > >            case SUBMIT:
> > >                  return submit();
> > >            case UPLOAD:
> > >                  return upload();
> > >            case CANCEL:
> > >                  return cancel();
> > >            default:
> > >                  return submit();
> > >            }
> > >
> > >      }
> > >
> > > I put breakpoints in both methods and start debugging and no
> > > breakpoint got hit.
> > >
> > >
> > > I am expecting that on clicking the Upload button, the form will be
> > > Submitted in a "multipart/form-data" post. Please not that I have
> > > two other submit buttons as follows:
> > >
> > >
> > >        <input t:type="submit" value="${message:submit-label}"
> > > t:id="submit"/>
> > >
> > >        <input t:type="submit" value="${message:cancel-label}"
> > > t:id="cancel"/>
> > >
> > >
> > >
> > > What I am doing is that on clicking Upload, I get the file uploaded
> > > and save it temporary in a persistent List(in the session) ,and on
> > > Submit I permanently save it and on cancel I just discard the
> > > uploaded
> > files.
> > >
> > >
> > >
> > > Any idea why the breakpoints have not got hit?
> > >
> > > Do you think that this scenario is possible to be implemented? I
> > > just suspect that having more that submit button , will send
> > > "multipart/form-data" post on clicking at any of them.
> > >
> > >
> > >
> > > Regards,
> > >
> > > Amr
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > ####################################################################
> > > ## ##########################################
> > > DISCLAIMER:
> > > This message is for the named person's use only. It may contain
> > > confidential information, proprietary in nature or legally
> > > privileged information. All trade secret, know how, formulas,
> > > researches, database, software, codes diagrams, documentations,
> > > attachments, voice, concepts and visual content are strictly
> > > protected by United Arab Emirates Laws and Dubai Media Incorporated
> > > codes which will have the right to take any legal action if you fail
> > > in doing the hereunder steps. If you receive this message in error,
> > > please immediately DELETE it and all copies of it from your system,
> > > DESTROY any hard copies of it and destroy any soft and backup copy
> > > of it saved in any kind of form under you possession and NOTIFY the
> sender.
> > > You must not, directly or indirectly, use, disclose, distribute,
> > > print, or copy any part of this message (email) if you are not the
> > > intended recipient.
> > >
> > > ####################################################################
> > > ## ##########################################
> > >
> >
> >
> > ######################################################################
> > ##########################################
> > DISCLAIMER:
> > This message is for the named person's use only. It may contain
> > confidential information, proprietary in nature or legally privileged
> > information. All trade secret, know how, formulas, researches,
> > database, software, codes diagrams, documentations, attachments,
> > voice, concepts and visual content are strictly protected by United
> > Arab Emirates Laws and Dubai Media Incorporated codes which will have
> > the right to take any legal action if you fail in doing the hereunder
> > steps. If you receive this message in error, please immediately DELETE
> > it and all copies of it from your system, DESTROY any hard copies of
> > it and destroy any soft and backup copy of it saved in any kind of
> > form under you possession and NOTIFY the sender.
> > You must not, directly or indirectly, use, disclose, distribute,
> > print, or copy any part of this message (email) if you are not the
> > intended recipient.
> >
> > ######################################################################
> > ##########################################
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > For additional commands, e-mail: users-h...@tapestry.apache.org
> >
>
>
> ################################################################################################################
> DISCLAIMER:
> This message is for the named person's use only. It may contain
> confidential information, proprietary
> in nature or legally privileged information. All trade secret, know how,
> formulas, researches, database,
> software, codes diagrams, documentations, attachments, voice, concepts and
> visual content are strictly
> protected by United Arab Emirates Laws and Dubai Media Incorporated codes
> which will have the right to
> take any legal action if you fail in doing the hereunder steps. If you
> receive this message in error,
> please immediately DELETE it and all copies of it from your system, DESTROY
> any hard copies of it and
> destroy any soft and backup copy of it saved in any kind of form under you
> possession and NOTIFY the sender.
> You must not, directly or indirectly, use, disclose, distribute, print, or
> copy any part of this message (email)
> if you are not the intended recipient.
>
> ################################################################################################################
>

Reply via email to