Jump to:

791 Posts in 369 Topics by 303 members

Widgets

SilverStripe Forums » Widgets » New Widget - Upload Widget - Please Help

Discuss SilverStripe Widgets.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 4556 Views
  • grilldan
    Avatar
    Community Member
    135 Posts

    New Widget - Upload Widget - Please Help Link to this post

    Hello. I have been trying to make a widget that has an upload form. The widget would be used to upload images/pdf's to the selected folder (the admin will choose which folder to upload to when they add the widget to the page.)

    I got the widget to display the form, and everything looks good. The error I get is when I try to submit it. For some reason, I cant get the upload to work.

    GalleryUpload.php

    <?php
    class GalleryUpload extends Widget {
       static $db = array(
                "Location" => "varchar", //location of folder to upload files to
                "Redirect" => "varchar" //landing page after user uploads image
                      );   
                
       static $defaults = array(
          "Location" => "assets/galleries/",
          "Redirect" => "thank-you-page/"
       );
       
       static $title = "Gallery Upload";
       static $cmsTitle = "Gallery Upload";
       static $description = "Display an upload box for visitors to upload files";
       
       function getCMSFields() {
             return new FieldSet(
                            new TextField("Location", "Set the location for files to be saved to"),
                            new TextField("Redirect", "Landing page for users, after they upload a file")
                            );
       }
       
       function Form() {
          $controller = new GalleryUpload_Controller($this);
          return $controller->Form();
       }   
       
       function DescriptionSegment() {
          if(!class_exists("GalleryPage")) {
             return _t("LatestPicturesWidget.NOCLASS","You don't have the Gallery module installed, which is required by this widget.");
          }
          return parent::DescriptionSegment();
       }   
       
    }

    class GalleryUpload_Controller extends Controller {
       protected $widget;
       
       function __construct($widget = null) {
          if($widget) $this->widget = $widget;
       }
       
       function widget() {
          if($this->widget) return $this->widget;
          else if(is_numeric($this->urlParams['ID'])) return $this->widget = DataObject::get_by_id('Widget', $this->urlParams['ID']);
          else user_error('No widget selected', E_USER_ERROR);
       }
       
       function Link() {
          if($this->widget()) return $this->class . '/' . $this->widget()->ID;
          else return $this->class . '/';
       }
       
       function Form() {
        return new Form($this, "Form", new FieldSet(
           new SimpleImageField (
              $name = "FileTypeID",
              $title = "Upload your image"
           )
        ), new FieldSet(
       
        // List the action buttons here - doform executes the function 'doform' below
           new FormAction("doForm", "Submit")
       
        // List the required fields here
        ), new RequiredFields(
           "FileTypeID"
        ));
       }
       
       function doForm($data, $form) {
        $file = new File();
        $file->loadUploaded($_FILES['FileTypeID']);
       
        // Redirect to a page thanking people for registering
        Director::redirect($this->Redirect);
       }
    }
    ?>

  • Jedateach
    Avatar
    Forum Moderator
    227 Posts

    Re: New Widget - Upload Widget - Please Help Link to this post

    Hey Grillian, the docs have been updated for widget forms. Check out the new code for a soultion that should work.

    http://doc.silverstripe.org/doku.php?id=widgets:forms

  • grilldan
    Avatar
    Community Member
    135 Posts

    Re: New Widget - Upload Widget - Please Help Link to this post

    Thanks!

  • webcook
    Avatar
    Community Member
    20 Posts

    Re: New Widget - Upload Widget - Please Help Link to this post

    Hi Jez,

    Am new for silverstripe.

    this is new widget coding. Using this widget upload one image.. i used same coding but it does not show the browser button to upload the image.

    I used this help document also. But i cant able to upload the image.It doest not show the browser button.

    http://doc.silverstripe.org/doku.php?id=widgets:forms&s=widget%20form

    Please give some advice...

    <?php
    class MyUpload extends Widget {
    static $db = array(
    "Location" => "varchar", //location of folder to upload files to
    "Redirect" => "varchar" //landing page after user uploads image
    );

    static $defaults = array(
    "Location" => "assets/Uploads/",
    "Redirect" => "thank-you-page/"
    );

    static $title = "Gallery Upload";
    static $cmsTitle = "Gallery Upload";
    static $description = "Display an upload box for visitors to upload files";

    function getCMSFields() {
    return new FieldSet(
    new TextField("Location", "Set the location for files to be saved to"),
    new TextField("Redirect", "Landing page for users, after they upload a file")
    );
    }

    function Form() {
    $controller = new MyUpload_Controller($this);
    return $controller->Form();
    }

    function DescriptionSegment() {
    if(!class_exists("GalleryPage")) {
    return _t("LatestPicturesWidget.NOCLASS","You don't have the Gallery module installed, which is required by this widget.");
    }
    return parent::DescriptionSegment();
    }

    }

    class MyUpload_Controller extends Controller {
    protected $widget;

    function __construct($widget = null) {
    if($widget) $this->widget = $widget;
    }

    function widget() {
    if($this->widget) return $this->widget;
    else if(is_numeric($this->urlParams['ID'])) return $this->widget = DataObject::get_by_id('Widget', $this->urlParams['ID']);
    else user_error('No widget selected', E_USER_ERROR);
    }

    function Link() {
    if($this->widget()) return $this->class . '/' . $this->widget()->ID;
    else return $this->class . '/';
    }

    function Form() {
    return new Form($this, "Form", new FieldSet(
    new ImageField (
    $name = "FileTypeID",
    $title = "Upload your image"
    )
    ), new FieldSet(

    // List the action buttons here - doform executes the function 'doform' below
    new FormAction("doForm", "Submit")

    // List the required fields here
    ), new RequiredFields(
    "FileTypeID"
    ));
    }

    function doForm($data, $form) {
    $file = new File();
    $file->loadUploaded($_FILES['FileTypeID']);

    // Redirect to a page thanking people for registering
    Director::redirect($this->Redirect);
    }
    }
    ?>

    4556 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.