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 /

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

Auto-update image upload directory


Go to End
Reply


3 Posts   755 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!