/**
  * list folders and assets
  * @param sfWebRequest $request
  */
 public function executeList(sfWebRequest $request)
 {
     $folder = sfAssetFolderPeer::retrieveByPath($request->getParameter('dir'));
     if (!$folder) {
         if ($this->getUser()->getFlash('sfAsset_folder_not_found')) {
             throw new sfException('You must create a root folder. Use the `php symfony asset:create-root` command for that.');
         } else {
             if ($popup = $request->getParameter('popup')) {
                 $this->getUser()->setAttribute('popup', $popup, 'sf_admin/sf_asset/navigation');
             }
             $this->getUser()->setFlash('sfAsset_folder_not_found', true);
             $this->redirect('@sf_asset_library_list');
         }
     }
     $this->filterform = new sfAssetFormFilter();
     $this->folderform = new sfAssetFolderForm(null, array('parent_id' => $folder->getId()));
     $this->fileform = new sfAssetForm(null, array('parent_id' => $folder->getId()));
     $this->renameform = new sfAssetFolderRenameForm($folder);
     $this->moveform = new sfAssetFolderMoveForm($folder);
     $this->dirs = $folder->getChildren();
     $this->files = $folder->getSortedFiles($this->dirs, $this->processSort($request));
     $this->nbFiles = count($this->files);
     $this->totalSize = sfAssetFolderPeer::countFilesSize($this->files);
     $this->nbDirs = count($this->dirs);
     $this->folder = $folder;
     $this->removeLayoutIfPopup($request);
 }
 /**
  * list folders and assets
  * @param sfWebRequest $request
  */
 public function executeList(sfWebRequest $request)
 {
     $folder = sfAssetFolderPeer::retrieveByPath($request->getParameter('dir'));
     if (!$folder) {
         if ($this->getUser()->getFlash('sfAsset_folder_not_found')) {
             throw new sfException('You must create a root folder. Use the `php symfony asset:create-root` command for that.');
         } else {
             if ($popup = $request->getParameter('popup')) {
                 $this->getUser()->setAttribute('popup', $popup, 'sf_admin/sf_asset/navigation');
             }
             $this->getUser()->setFlash('sfAsset_folder_not_found', true);
             $this->redirect('@sf_asset_library_list');
         }
     }
     $this->filterform = new sfAssetFormFilter();
     $this->folderform = new sfAssetFolderForm(null, array('parent_id' => $folder->getId()));
     $this->fileform = new sfAssetForm(null, array('parent_id' => $folder->getId()));
     $this->renameform = new sfAssetFolderRenameForm($folder);
     $this->moveform = new sfAssetFolderMoveForm($folder);
     $dirs = $folder->getChildren();
     $c = new Criteria();
     $c->add(sfAssetPeer::FOLDER_ID, $folder->getId());
     $this->processSort($request);
     $sortOrder = $this->getUser()->getAttribute('sort', 'name', 'sf_admin/sf_asset/sort');
     switch ($sortOrder) {
         case 'date':
             $dirs = sfAssetFolderPeer::sortByDate($dirs);
             $c->addDescendingOrderByColumn(sfAssetPeer::CREATED_AT);
             break;
         default:
             $dirs = sfAssetFolderPeer::sortByName($dirs);
             $c->addAscendingOrderByColumn(sfAssetPeer::FILENAME);
             break;
     }
     $this->files = sfAssetPeer::doSelect($c);
     $this->nb_files = count($this->files);
     if ($this->nb_files) {
         $total_size = 0;
         foreach ($this->files as $file) {
             $total_size += $file->getFilesize();
         }
         $this->total_size = $total_size;
     }
     $this->dirs = $dirs;
     $this->nb_dirs = count($dirs);
     $this->folder = $folder;
     $this->removeLayoutIfPopup($request);
     return sfView::SUCCESS;
 }
예제 #3
0
<?php

$app = "frontend";
include dirname(__FILE__) . '/../../../../test/bootstrap/functional.php';
$browser = new sfTestBrowser();
$browser->initialize();
$con = Propel::getConnection();
$con->begin();
try {
    // run the test
    $t = new lime_test(13, new lime_output_color());
    $t->diag('sfAssetFolderPeer');
    $sfAssetFolder = sfAssetFolderPeer::retrieveByPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media'));
    $t->ok($sfAssetFolder->isRoot(), 'retrieveByPath() retrieves root from app_sfAssetsLibrary_upload_dir string');
    $sfAssetFolder = sfAssetFolderPeer::retrieveByPath();
    $t->ok($sfAssetFolder->isRoot(), 'retrieveByPath() retrieves root from empty string');
    $sfAssetFolder = sfAssetFolderPeer::createFromPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media') . '/simple');
    $t->isa_ok($sfAssetFolder, 'sfAssetFolder', 'createFromPath() creates a sfAssetFolder from simple string');
    $t->isa_ok($sfAssetFolder->getParent(), 'sfAssetFolder', 'createFromPath() from simple string has a parent');
    $t->ok($sfAssetFolder->getParent()->isRoot(), 'createFromPath() creates a root child from simple string');
    $sfAssetFolder2 = sfAssetFolderPeer::createFromPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media') . '/simple/subfolder');
    $t->isa_ok($sfAssetFolder2, 'sfAssetFolder', 'createFromPath() creates a sfAssetFolder from simple string');
    $t->is($sfAssetFolder2->getParent()->getId(), $sfAssetFolder->getId(), 'createFromPath() from simple string parent is correct');
    $sfAssetFolder = sfAssetFolderPeer::createFromPath(sfConfig::get('app_sfAssetsLibrary_upload_dir', 'media') . '/second/subfolder');
    $t->ok($sfAssetFolder instanceof sfAssetFolder, 'createFromPath() creates a sfAssetFolder from simple string');
    $t->ok($sfAssetFolder->getParent() instanceof sfAssetFolder, 'createFromPath() from composed string has a parent');
    $t->ok($sfAssetFolder->getParent()->getParent()->isRoot(), 'createFromPath() creates a root child from composed string');
    $sfAssetFolder = sfAssetFolderPeer::createFromPath('third/subfolder');
    $t->ok($sfAssetFolder instanceof sfAssetFolder, 'createFromPath() creates a sfAssetFolder from simple string');
    $t->ok($sfAssetFolder->getParent() instanceof sfAssetFolder, 'createFromPath() from composed string has a parent');
    $t->ok($sfAssetFolder->getParent()->getParent()->isRoot(), 'createFromPath() creates a root child from composed string');
예제 #4
0
 public function executeMoveAsset()
 {
     $this->forward404Unless($this->getRequest()->getMethod() == sfRequest::POST);
     $sf_asset = sfAssetPeer::retrieveByPk($this->getRequestParameter('id'));
     $this->forward404Unless($sf_asset);
     $folder = sfAssetFolderPeer::retrieveByPath($this->getRequestParameter('new_folder'));
     $this->forward404Unless($folder);
     if ($folder->getId() != $sf_asset->getFolderId()) {
         try {
             $sf_asset->move($folder);
             $sf_asset->save();
             $this->setFlash('notice', 'The file has been moved');
         } catch (sfAssetException $e) {
             $this->setFlash('warning_message', $e->getMessage());
             $this->setFlash('warning_params', $e->getMessageParams());
         }
     } else {
         $this->setFlash('warning', 'The target folder is the same as the original folder. The asset has not been moved.');
     }
     return $this->redirect('sfAsset/edit?id=' . $sf_asset->getId());
 }
<?php

include dirname(__FILE__) . '/../bootstrap/functional.php';
$subdir1 = sfAssetFolderPeer::retrieveByPath('TESTsubdir1', '/');
$subdir2 = sfAssetFolderPeer::retrieveByPath('TESTsubdir2', '/');
$browser = new sfTestFunctional(new sfBrowser());
$browser->setTester('propel', 'sfTesterPropel');
$browser->info('assets list')->get('/sfAsset/dir/media')->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'list')->end()->with('response')->begin()->isStatusCode(200)->checkElement('div#sf_asset_bar p:first-child', '/media/')->checkElement('div#sf_asset_bar p:nth-child(2)', '/2 subfolders/')->checkElement('div#sf_asset_bar p:nth-child(3)', '/3 files, 3 KiB/')->checkElement('div#sf_asset_container div.assetImage', 5)->checkElement('div#sf_asset_container div.assetImage img[src$="folder.png"]', 2)->checkElement('div#sf_asset_container div.assetImage img[src$="asset1.png"]', 1)->checkElement('div#sf_asset_container div.assetImage:nth-child(4)', '/asset1/')->checkElement('div#sf_asset_container div.assetImage:nth-child(5)', '/asset2/')->checkElement('div#sf_asset_container div.assetImage:nth-child(6)', '/asset3/')->end()->info('sorting options')->click('Sort by date')->with('response')->begin()->checkElement('div#sf_asset_container div.assetImage:nth-child(4)', '/asset3/')->checkElement('div#sf_asset_container div.assetImage:nth-child(5)', '/asset2/')->checkElement('div#sf_asset_container div.assetImage:nth-child(6)', '/asset1/')->end()->click('Sort by name')->with('response')->begin()->checkElement('div#sf_asset_container div.assetImage:nth-child(4)', '/asset1/')->checkElement('div#sf_asset_container div.assetImage:nth-child(5)', '/asset2/')->checkElement('div#sf_asset_container div.assetImage:nth-child(6)', '/asset3/')->end()->info('enter first subfolder')->click('a[href*="media/TESTsubdir1"]')->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'list')->end()->with('response')->begin()->isStatusCode(200)->checkElement('div#sf_asset_bar p:first-child', '/TESTsubdir1/')->checkElement('div#sf_asset_container div.assetImage', 2)->checkElement('div#sf_asset_container div.assetComment', '/\\.\\./')->end()->info('return to list')->click('a[href$="media"]')->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'list')->end()->info('add new asset')->click('a[href*="media/TESTsubdir1"]')->click('input[value="Add"]', array('sf_asset' => array('file' => '')))->with('form')->begin()->hasErrors(1)->isError('file', 'required')->end()->get('/sfAsset/dir/media/TESTsubdir1')->click('input[value="Add"]', array('sf_asset' => array('file' => dirname(__FILE__) . '/../data/demo.png')))->with('form')->hasErrors(false)->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'addQuick')->end()->with('response')->isRedirected()->followRedirect()->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'edit')->end()->with('response')->begin()->isStatusCode(200)->checkElement('div#sf_asset_container div.content', '/demo\\.png/')->end()->with('propel')->check('sfAsset', array('folder_id' => $subdir1->getId(), 'filename' => 'demo.png', 'description' => 'demo.png', 'type' => 'image', 'filesize' => 4))->info('edit asset')->click('input.sf_admin_action_save', array('sf_asset' => array('description' => 'this is a demo image', 'author' => 'Massimiliano Arione', 'copyright' => '2010')))->with('form')->hasErrors(false)->with('response')->isRedirected()->followRedirect()->with('response')->begin()->checkElement('div.save-ok', '/Your modifications have been saved/')->end()->with('propel')->check('sfAsset', array('folder_id' => $subdir1->getId(), 'filename' => 'demo.png', 'description' => 'this is a demo image', 'author' => 'Massimiliano Arione', 'type' => 'image', 'filesize' => 4))->info('create a new folder')->click('TESTsubdir1')->click('input[value="Create"]', array('sf_asset_folder' => array('name' => '')))->with('form')->begin()->hasErrors(1)->isError('name', 'required')->end()->get('/sfAsset/dir/media/TESTsubdir1')->click('input[value="Create"]', array('sf_asset_folder' => array('name' => 'invalid name!')))->with('form')->begin()->hasErrors(1)->isError('name', 'invalid')->end()->get('/sfAsset/dir/media/TESTsubdir1')->click('input[value="Create"]', array('sf_asset_folder' => array('name' => 'thumbnail')))->with('form')->begin()->hasErrors(1)->isError('name', 'invalid')->end()->get('/sfAsset/dir/media/TESTsubdir1')->click('input[value="Create"]', array('sf_asset_folder' => array('name' => 'foobar')))->with('form')->hasErrors(false)->with('propel')->check('sfAssetFolder', array('tree_left' => 3, 'tree_right' => 4, 'name' => 'foobar', 'relative_path' => 'media/TESTsubdir1/foobar'))->info('rename folder')->with('response')->isRedirected()->followRedirect()->click('input[value="Rename"]', array('sf_asset_folder' => array('name' => 'invalid name!')))->with('form')->begin()->hasErrors(1)->isError('name', 'invalid')->end()->get('/sfAsset/dir/media/TESTsubdir1/foobar')->click('input[value="Rename"]', array('sf_asset_folder' => array('name' => 'thumbnail')))->with('form')->begin()->hasErrors(1)->isError('name', 'invalid')->end()->get('/sfAsset/dir/media/TESTsubdir1/foobar')->click('input[value="Rename"]', array('sf_asset_folder' => array('name' => 'barfoo')))->with('form')->hasErrors(false)->with('propel')->check('sfAssetFolder', array('tree_left' => 3, 'tree_right' => 4, 'name' => 'barfoo', 'relative_path' => 'media/TESTsubdir1/barfoo'))->info('delete folder')->with('response')->isRedirected()->followRedirect()->click('Delete folder', array(), array('method' => 'delete', '_with_csrf' => true))->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'deleteFolder')->end()->with('propel')->check('sfAssetFolder', array('tree_left' => 3, 'tree_right' => 4, 'name' => 'barfoo', 'relative_path' => 'media/TESTsubdir1/barfoo'), false)->with('response')->isRedirected()->followRedirect()->with('response')->begin()->checkElement('div.save-ok', '/The folder has been deleted/')->end()->info('move folder')->click('input[value="Move"]', array('sf_asset_folder' => array('parent_folder' => $subdir2->getId())))->with('form')->hasErrors(false)->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'moveFolder')->end()->with('propel')->check('sfAssetFolder', array('tree_left' => 3, 'tree_right' => 4, 'name' => 'TESTsubdir1', 'relative_path' => 'media/TESTsubdir2/TESTsubdir1'))->with('response')->isRedirected()->followRedirect()->with('response')->begin()->checkElement('div.save-ok', '/The folder has been moved/')->end()->info('move asset')->click('a[title="demo.png"]')->click('input[value="Move"]', array('sf_asset' => array('parent_folder' => $subdir2->getId())))->with('form')->hasErrors(false)->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'moveAsset')->end()->with('response')->isRedirected()->followRedirect()->with('response')->begin()->checkElement('div.save-ok', '/The file has been moved/')->end()->with('propel')->check('sfAsset', array('folder_id' => $subdir2->getId(), 'filename' => 'demo.png', 'description' => 'this is a demo image', 'type' => 'image', 'filesize' => 4))->info('rename asset')->click('input[value="Rename"]', array('sf_asset' => array('filename' => 'demorenamed.png')))->with('form')->hasErrors(false)->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'renameAsset')->end()->with('response')->isRedirected()->followRedirect()->with('response')->begin()->checkElement('div.save-ok', '/The file has been renamed/')->end()->with('propel')->check('sfAsset', array('folder_id' => $subdir2->getId(), 'filename' => 'demorenamed.png', 'description' => 'this is a demo image', 'type' => 'image'))->info('replace asset')->click('input[value="Replace"]', array('sf_asset' => array('file' => dirname(__FILE__) . '/../data/propel.gif')))->with('form')->hasErrors(false)->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'replaceAsset')->end()->with('response')->isRedirected()->followRedirect()->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'edit')->end()->with('response')->begin()->checkElement('div.save-ok', '/The file has been replaced/')->end()->with('propel')->check('sfAsset', array('folder_id' => $subdir2->getId(), 'filename' => 'demorenamed.png', 'description' => 'this is a demo image', 'type' => 'image'))->info('delete asset')->click('Delete', array(), array('method' => 'delete', '_with_csrf' => true))->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'deleteAsset')->end()->with('propel')->check('sfAsset', array('folder_id' => $subdir2->getId(), 'filename' => 'propel.gif', 'type' => 'image'), false)->with('response')->isRedirected()->followRedirect()->with('response')->begin()->checkElement('div.save-ok', '/The file has been deleted/')->end()->info('mass upload')->click('media')->click('Mass upload')->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'massUpload')->end()->with('response')->begin()->isValid(true)->end()->click('Upload', array('sf_asset' => array('folder_id' => $subdir1->getId(), 'file_1' => dirname(__FILE__) . '/../data/demo2.png', 'file_2' => dirname(__FILE__) . '/../data/propel2.gif')))->with('form')->hasErrors(false)->with('propel')->begin()->check('sfAsset', array('folder_id' => $subdir1->getId(), 'filename' => 'demo2.png', 'type' => 'image'))->check('sfAsset', array('folder_id' => $subdir1->getId(), 'filename' => 'propel2.gif', 'type' => 'image'))->end()->info('search')->get('/sfAsset/dir/media')->click('input[value="Search"]')->with('form')->begin()->hasErrors(false)->end()->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'search')->end()->with('response')->begin()->checkElement('div.search_result', 7)->end()->click('input[value="Search"]', array('sf_asset_filters' => array('filename' => array('text' => 'asset1'))))->with('form')->begin()->hasErrors(false)->end()->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'search')->end()->with('response')->begin()->checkElement('div.search_result', 3)->end()->info('delete folder with subfolder')->get('/sfAsset/dir/media')->click('input[value="Create"]', array('sf_asset_folder' => array('name' => 'sub')))->with('response')->isRedirected()->followRedirect()->click('input[value="Create"]', array('sf_asset_folder' => array('name' => 'sub2')))->with('response')->isRedirected()->followRedirect()->info('create sub folder')->get('/sfAsset/dir/media/sub')->info('delete folder with sub folder')->click('Delete folder', array(), array('method' => 'delete', '_with_csrf' => true))->with('request')->begin()->isParameter('module', 'sfAsset')->isParameter('action', 'deleteFolder')->end()->with('response')->isRedirected()->followRedirect()->with('response')->begin()->checkElement('div.save-ok', '/The folder has been deleted/')->end();
// TODO more tests...