Example #1
0
 public function __construct(Curry_Backend_Page $backend, PageRevision $pageRevision, $langcode = "")
 {
     $this->pageRevision = $pageRevision;
     $this->langcode = $langcode;
     parent::__construct('PageModule', array('title' => 'Content', 'maxPerPage' => 0, 'columns' => array('name' => array('sortable' => false, 'action' => 'edit', 'callback' => function ($wrapper) {
         return $wrapper->getName();
     }), 'target' => array('sortable' => false, 'callback' => function ($wrapper) {
         return $wrapper->getTarget();
     }), 'type' => array('sortable' => false, 'escape' => false, 'callback' => function ($wrapper) {
         return Html::tag('span', array('title' => $wrapper->getClassName()), basename(str_replace('_', '/', $wrapper->getClassName())));
     })), 'addDefaultActions' => false, 'actions' => array('edit' => array('single' => true, 'class' => 'inline', 'action' => array($this, 'showEdit'))), 'sortable' => array($this, 'sortItems')));
     $user = User::getUser();
     $this->pagePermission = $backend->getPagePermission($pageRevision->getPage());
     if ($user->hasAccess('Curry_Backend_Template')) {
         $this->addColumn('template', array('sortable' => false, 'escape' => false, 'callback' => function ($wrapper) {
             if (!$wrapper->getTemplate()) {
                 return 'None';
             }
             $templateUrl = url('', array('module' => 'Curry_Backend_Template', 'view' => 'Edit', 'file' => $wrapper->getTemplate()));
             return Html::tag('a', array('href' => $templateUrl, 'title' => $wrapper->getTemplate()), basename($wrapper->getTemplate()));
         }));
     }
     if ($this->pagePermission[PageAccessPeer::PERM_MODULES]) {
         $this->addColumn('info', array('sortable' => false, 'escape' => false, 'callback' => array($this, 'getInfo'), 'order' => 1));
         $this->addAction('properties', array('single' => true, 'class' => 'dialog', 'action' => array($this, 'showProperties')));
         $this->addAction('inheritance', array('label' => 'Inheritance details', 'general' => true, 'class' => 'dialog', 'action' => array($this, 'showInheritance')));
     }
     if ($this->pagePermission[PageAccessPeer::PERM_CREATE_MODULE]) {
         $this->addAction('new', array('general' => true, 'label' => 'New content', 'class' => 'dialog', 'href' => (string) url('', array('module' => 'Curry_Backend_Page', 'page_id' => $this->pageRevision->getPageId(), 'view' => 'NewModule'))));
         $this->addAction('delete', array('single' => true, 'class' => 'inline modelview-delete', 'action' => array($this, 'showDelete')));
     }
 }
Example #2
0
 /**
  * Save new module.
  * 
  * @todo Set module position.
  *
  * @param PageRevision $pageRevision
  * @param array $values
  * @return PageModule
  */
 public static function saveNewModule(PageRevision $pageRevision, array $values)
 {
     $pageModule = new PageModule();
     $pageModule->setUid(Helper::getUniqueId());
     $pageModule->setPageId($pageRevision->getPageId());
     if (ctype_digit($values['module_class'])) {
         $module = ModuleQuery::create()->findPk($values['module_class']);
         $pageModule->setModuleClass($module->getModuleClass());
         $pageModule->setName($values['name']);
         $pageModule->setTarget($values['target']);
         $pageModule->setContentVisibility($module->getContentVisibility());
         $pageModule->setSearchVisibility($module->getSearchVisibility());
         $template = $module->getTemplate();
     } else {
         $template = null;
         if ($values['template'] == 'new' && $values['template_name']) {
             $className = $values['module_class'];
             $predefinedTemplates = call_user_func(array($className, 'getPredefinedTemplates'));
             $root = \Curry\App::getInstance()['template.root'];
             $template = $values['template_name'];
             $templateFile = $root . DIRECTORY_SEPARATOR . $template;
             if (!file_exists($templateFile)) {
                 $dir = dirname($templateFile);
                 if (!is_dir($dir)) {
                     mkdir($dir, 0777, true);
                 }
                 $code = $predefinedTemplates[$values['predefined_template']];
                 file_put_contents($templateFile, (string) $code);
             }
         } else {
             if ($values['template']) {
                 $template = $values['template'];
             }
         }
         $target = '';
         if (!empty($values['target'])) {
             $target = $values['target'];
         } else {
             if (!empty($values['target_name'])) {
                 $target = $values['target_name'];
             }
         }
         if (empty($target)) {
             throw new Exception('Module target not set');
         }
         $pageModule = new PageModule();
         $pageModule->setUid(Helper::getUniqueId());
         $pageModule->setPageId($pageRevision->getPageId());
         $pageModule->setModuleClass($values['module_class']);
         $pageModule->setName($values['name']);
         $pageModule->setTarget($target);
         $pageModule->setContentVisibility($values['content_visibility']);
         $pageModule->setSearchVisibility($values['search_visibility']);
     }
     $pageModule->save();
     $revisionModule = new RevisionModule();
     $revisionModule->setPageModule($pageModule);
     $revisionModule->setPageRevision($pageRevision);
     $revisionModule->save();
     $moduleData = new ModuleData();
     $moduleData->setPageRevision($pageRevision);
     $moduleData->setPageModule($pageModule);
     $moduleData->setEnabled(true);
     $moduleData->setTemplate($template);
     $moduleData->save();
     // create default data
     $wrapper = new PageModuleWrapper($pageModule, $pageRevision, null);
     $wrapper->createData();
     return $pageModule;
 }