/** * Short description of method initElements * * @access public * @author Somsack Sipasseuth, <*****@*****.**> * @return mixed */ public function initElements() { $versioned = $this->versionedFile->isVersioned(); $freeFilePath = isset($this->options['freeFilePath']) ? (bool) $this->options['freeFilePath'] : false; /* * 1. BUILD FORM */ // File Content $contentGroup = array(); function return_bytes($val) { $val = trim($val); $last = strtolower($val[strlen($val) - 1]); switch ($last) { // Le modifieur 'G' est disponible depuis PHP 5.1.0 case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val; } $browseElt = tao_helpers_form_FormFactory::getElement("file_import", "AsyncFile"); $browseElt->addValidator(tao_helpers_form_FormFactory::getValidator('FileSize', array('max' => return_bytes(ini_get('post_max_size'))))); //make the content compulsory if it does not exist already if (!$versioned) { $browseElt->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty')); $browseElt->setDescription(__("Upload the file to version")); } else { $browseElt->setDescription(__("Upload a new content")); } $this->form->addElement($browseElt); array_push($contentGroup, $browseElt->getName()); $commitMessageElt = tao_helpers_form_FormFactory::getElement("commit_message", "Textarea"); $commitMessageElt->setDescription(__("Commit message : ")); $this->form->addElement($commitMessageElt); array_push($contentGroup, $commitMessageElt->getName()); // if the file is already versioned add a way to download it if ($versioned) { $downloadUrl = $this->getDownloadUrl($this->versionedFile); $downloadFileElt = tao_helpers_form_FormFactory::getElement("file_download", 'Free'); $downloadFileElt->setValue("<a href='{$downloadUrl}' class='blink' target='_blank'><img src='" . TAOBASE_WWW . "img/document-save.png' alt='Download versioned file' class='icon' /> " . __('Download content') . "</a>"); $this->form->addElement($downloadFileElt); array_push($contentGroup, $downloadFileElt->getName()); $deleteFileElt0 = tao_helpers_form_FormFactory::getElement("file_delete0", 'Free'); $deleteFileElt0->setValue("<a id='delete-versioned-file' href='#' class='blink' target='_blank'><img src='" . TAOBASE_WWW . "img/edit-delete.png' alt='Delete versioned file' class='icon' /> " . __('Remove content') . "</a>"); $this->form->addElement($deleteFileElt0); array_push($contentGroup, $deleteFileElt0->getName()); $deleteFileElt = tao_helpers_form_FormFactory::getElement("file_delete", 'Hidden'); $deleteFileElt->setValue(0); $this->form->addElement($deleteFileElt); array_push($contentGroup, $deleteFileElt->getName()); } $this->form->createGroup('file', 'Content', $contentGroup); //File Meta $fileNameElt = tao_helpers_form_FormFactory::getElement(tao_helpers_Uri::encode(PROPERTY_FILE_FILENAME), $versioned ? 'Label' : 'Textbox'); $fileNameElt->setDescription(__("File name")); if (!$versioned) { $fileNameElt->addValidator(tao_helpers_form_FormFactory::getValidator('FileName')); } $this->form->addElement($fileNameElt); //file path element to be added or not: $filePathElt = tao_helpers_form_FormFactory::getElement(tao_helpers_Uri::encode(PROPERTY_FILE_FILEPATH), $freeFilePath ? 'Textbox' : 'Hidden'); $filePathElt->setDescription(__("File path")); $this->form->addElement($filePathElt); $repositoryEltOptions = array(); foreach (helpers_FileSource::getFileSources() as $fileSystem) { $repositoryEltOptions[tao_helpers_Uri::encode($fileSystem->getUri())] = $fileSystem->getLabel(); } $fileRepositoryElt = tao_helpers_form_FormFactory::getElement(tao_helpers_Uri::encode(PROPERTY_FILE_FILESYSTEM), $versioned ? 'Label' : 'Radiobox'); $fileRepositoryElt->setDescription(__("File repository")); if (!$versioned) { $fileRepositoryElt->setOptions($repositoryEltOptions); } $fileRepositoryElt->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty')); $this->form->addElement($fileRepositoryElt); $this->form->createGroup('meta', 'Description', array($fileNameElt->getName(), $filePathElt->getName(), $fileRepositoryElt->getName())); // File Revision if ($versioned) { $fileVersionOptions = array(); $history = $this->versionedFile->gethistory(); $countHistory = count($history); foreach ($history as $i => $revision) { $date = new DateTime($revision['date']); $fileVersionOptions[$countHistory - $i] = $countHistory - $i . '. ' . $revision['msg'] . ' [' . $revision['author'] . ' / ' . $date->format('Y-m-d H:i:s') . '] '; } $fileRevisionElt = tao_helpers_form_FormFactory::getElement('file_version', 'Radiobox'); $fileRevisionElt->setDescription(__("File revision")); $fileRevisionElt->setOptions($fileVersionOptions); $fileRevisionElt->setValue($countHistory); $this->form->addElement($fileRevisionElt); $this->form->createGroup('revision', 'Version', array($fileRevisionElt->getName())); } /* * 2. HIDDEN FIELDS */ //add an hidden elt for the property uri (Property associated to the owner instance) $propertyUriElt = tao_helpers_form_FormFactory::getElement("propertyUri", "Hidden"); $propertyUriElt->setValue(tao_helpers_Uri::encode($this->property->getUri())); $this->form->addElement($propertyUriElt); //add an hidden elt for the instance Uri //usefull to render the revert action $instanceUriElt = tao_helpers_form_FormFactory::getElement('uri', 'Hidden'); $instanceUriElt->setValue(tao_helpers_Uri::encode($this->ownerInstance->getUri())); $this->form->addElement($instanceUriElt); /* * 3. FILL THE FORM */ if ($versioned) { $fileNameValue = $this->versionedFile->getOnePropertyValue(new core_kernel_classes_Property(PROPERTY_FILE_FILENAME)); if (!empty($fileNameValue)) { $fileNameElt->setValue((string) $fileNameValue); } $filePathValue = $this->versionedFile->getOnePropertyValue(new core_kernel_classes_Property(PROPERTY_FILE_FILEPATH)); if (!empty($filePathValue)) { $filePathElt->setValue((string) $filePathValue); } $repositoryValue = $this->versionedFile->getOnePropertyValue(new core_kernel_classes_Property(PROPERTY_FILE_FILESYSTEM)); if (!empty($repositoryValue)) { $fileRepositoryElt->setValue($repositoryValue->getUri()); } $history = $this->versionedFile->gethistory(); $versionElt = $this->form->getElement('file_version'); $versionElt->setValue(count($history)); } else { if (!$freeFilePath) { $filePathElt->setValue($this->getDefaultFilePath()); } else { $filePathElt->setValue('/'); } $defaultRepo = $this->getDefaultRepository(); if (!is_null($defaultRepo)) { $fileRepositoryElt->setValue($defaultRepo->getUri()); } } }
/** * please use helpers_FileSource::getFileSources() * * @access public * @author Joel Bout, <*****@*****.**> * @deprecated * @return array */ public static function getAvailableRepositories() { $returnValue = array(); $returnValue = helpers_FileSource::getFileSources(); return (array) $returnValue; }