Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS /

Auto-update image upload directory


Reply


3 Posts   541 Views

Avatar
alexanderhiam

Community Member, 2 Posts

3 December 2012 at 7:31am

Hi all,

I've hit a bit of a snag which I'm sure has a simple solution, but I can't for the life of me figure it out. I have a page with an image upload field, and I need the upload directory to be /[parent page->URLSegment]/[URLSegment]/. At the moment I'm doing this with UploadField->setFolderName() in getCMSFields(), but this of course only changes the upload directory when the page is saved. Ideally I want it to change as soon as the URLSegment changes, just like the URLSegment does when the Title is changed.

-Alex

Avatar
juergr

Community Member, 17 Posts

4 December 2012 at 11:36am

You should be able to do this in the 'onBeforeWrite()' functions of the different pages.

Have a look at this code:

   public function onBeforeWrite() {
      parent::onBeforeWrite();

      if($this->isChanged('Title')) {
         $this->URLSegment = $this->createUniqueURLSegement();
      }

      if($this->isChanged('URLSegment')) {
         $fields = $this->getChangedFields();
         $URLSegment = $fields['URLSegment'];
         $pdfFolder = Folder::find(self::$pdf_folder . '/' . $URLSegment['before']);
         if($pdfFolder) {
            $pdfFolder->setName($URLSegment['after']);
            $pdfFolder->write();
         }
         $imageFolder = Folder::find(self::$image_folder . '/' . $URLSegment['before']);
         if($imageFolder) {
            $imageFolder->setName($URLSegment['after']);
            $imageFolder->write();
         }
      }
   }

Here I do exactly what you want and it seems to work. Basicaly i have several AnnualProgramms with several events. So every time the title of an annualprogramm changes i change the URLSegment and remane all folders which are affected by the renaming.

Avatar
alexanderhiam

Community Member, 2 Posts

14 December 2012 at 6:35pm

Finally got a chance to try this out and it works perfectly, thanks!