*/ class Mage_Adminhtml_Cms_Wysiwyg_ImagesController extends Mage_Adminhtml_Controller_Action { /** * Init storage * * @return Mage_Adminhtml_Cms_Page_Wysiwyg_ImagesController */ protected function _initAction() { $this->getStorage(); return $this; } public function indexAction() { $storeId = (int) $this->getRequest()->getParam('store'); try { Mage::helper('cms/wysiwyg_images')->getCurrentPath(); } catch (Exception $e) { $this->_getSession()->addError($e->getMessage()); } $this->_initAction()->loadLayout('overlay_popup'); $block = $this->getLayout()->getBlock('wysiwyg_images.js'); if ($block) { $block->setStoreId($storeId); } $this->renderLayout(); } public function treeJsonAction() { try { $this->_initAction(); $this->getResponse()->setBody( $this->getLayout()->createBlock('adminhtml/cms_wysiwyg_images_tree') ->getTreeJson() ); } catch (Exception $e) { $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array())); } } public function contentsAction() { try { $this->_initAction()->_saveSessionCurrentPath(); $this->loadLayout('empty'); $this->renderLayout(); } catch (Exception $e) { $result = array('error' => true, 'message' => $e->getMessage()); $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); } } public function newFolderAction() { try { $this->_initAction(); $name = $this->getRequest()->getPost('name'); $path = $this->getStorage()->getSession()->getCurrentPath(); $result = $this->getStorage()->createDirectory($name, $path); } catch (Exception $e) { $result = array('error' => true, 'message' => $e->getMessage()); } $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); } public function deleteFolderAction() { try { $path = $this->getStorage()->getSession()->getCurrentPath(); $this->getStorage()->deleteDirectory($path); } catch (Exception $e) { $result = array('error' => true, 'message' => $e->getMessage()); $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); } } /** * Delete file from media storage * * @return void */ public function deleteFilesAction() { try { if (!$this->getRequest()->isPost()) { throw new Exception ('Wrong request.'); } $files = Mage::helper('core')->jsonDecode($this->getRequest()->getParam('files')); /** @var $helper Mage_Cms_Helper_Wysiwyg_Images */ $helper = Mage::helper('cms/wysiwyg_images'); $path = $this->getStorage()->getSession()->getCurrentPath(); foreach ($files as $file) { $file = $helper->idDecode($file); $_filePath = realpath($path . DS . $file); if (strpos($_filePath, realpath($path)) === 0 && strpos($_filePath, realpath($helper->getStorageRoot())) === 0 ) { $this->getStorage()->deleteFile($path . DS . $file); } } } catch (Exception $e) { $result = array('error' => true, 'message' => $e->getMessage()); $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); } } /** * Files upload processing */ public function uploadAction() { try { $result = array(); $this->_initAction(); $targetPath = $this->getStorage()->getSession()->getCurrentPath(); $result = $this->getStorage()->uploadFile($targetPath, $this->getRequest()->getParam('type')); } catch (Exception $e) { $result = array('error' => $e->getMessage(), 'errorcode' => $e->getCode()); } $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); } /** * Fire when select image */ public function onInsertAction() { $helper = Mage::helper('cms/wysiwyg_images'); $storeId = $this->getRequest()->getParam('store'); $filename = $this->getRequest()->getParam('filename'); $filename = $helper->idDecode($filename); $asIs = $this->getRequest()->getParam('as_is'); Mage::helper('catalog')->setStoreId($storeId); $helper->setStoreId($storeId); $image = $helper->getImageHtmlDeclaration($filename, $asIs); $this->getResponse()->setBody($image); } /** * Generate image thumbnail on the fly */ public function thumbnailAction() { $file = $this->getRequest()->getParam('file'); $file = Mage::helper('cms/wysiwyg_images')->idDecode($file); $thumb = $this->getStorage()->resizeOnTheFly($file); if ($thumb !== false) { $image = Varien_Image_Adapter::factory('GD2'); $image->open($thumb); $image->display(); } else { // todo: genearte some placeholder } } /** * Register storage model and return it * * @return Mage_Cms_Model_Wysiwyg_Images_Storage */ public function getStorage() { if (!Mage::registry('storage')) { $storage = Mage::getModel('cms/wysiwyg_images_storage'); Mage::register('storage', $storage); } return Mage::registry('storage'); } /** * Save current path in session * * @return Mage_Adminhtml_Cms_Page_Wysiwyg_ImagesController */ protected function _saveSessionCurrentPath() { $this->getStorage() ->getSession() ->setCurrentPath(Mage::helper('cms/wysiwyg_images')->getCurrentPath()); return $this; } /** * Check current user permission on resource and privilege * * @return bool */ protected function _isAllowed() { return Mage::getSingleton('admin/session')->isAllowed('cms/media_gallery'); } }