Example #1
0
 /**
  * Adds a field with the default rich text editor
  * @param string $name The field name
  * @param string $value The field value
  */
 protected function AddRichTextField($name, $value = '')
 {
     $renderer = new CKEditorRenderer(PathUtil::BackendRTEPath(), PathUtil::BackendRTEUrl(), PathUtil::UploadPath(), PathUtil::UploadUrl(), self::Guard());
     $field = new Custom($renderer);
     $field->SetName($name);
     $field->SetValue($value);
     $this->AddField($field);
 }
Example #2
0
 /**
  * Creates a new generator
  * @param Site $site The site
  * @param IContainerReferenceResolver $resolver A resolver to get last page mod date even over container contents
  */
 function __construct(Site $site, IContainerReferenceResolver $resolver)
 {
     $this->resolver = $resolver;
     $this->site = $site;
     $this->cacher = new FileCacher(PathUtil::SitemapCacheFile($site), $site->GetSitemapCacheLifetime());
     $this->sitemap = new XmlGenerator();
     $this->pageTree = new PageTreeProvider($site);
     $this->guard = new MemberGuard();
 }
Example #3
0
 protected function BeforeRemove(Layout $layout)
 {
     $layoutFile = PathUtil::LayoutTemplate($layout);
     if (File::Exists($layoutFile)) {
         File::Delete($layoutFile);
     }
     $logger = new Logger(self::Guard()->GetUser());
     $logger->ReportLayoutAction($layout, Action::Delete());
 }
Example #4
0
 protected function BeforeInit()
 {
     $templateID = Request::GetData('template');
     $idParts = explode('/', $templateID);
     $this->InitModule($idParts);
     $this->folder = PathUtil::ModuleCustomTemplatesFolder($this->module);
     $this->template = isset($idParts[1]) ? $idParts[1] : '';
     return !$this->module;
 }
 protected function BeforeInit()
 {
     $this->layout = Layout::Schema()->ByID(Request::GetData('layout'));
     if (!$this->layout) {
         //TODO: Message
         Response::Redirect($this->BackLink());
     }
     $this->file = PathUtil::LayoutTemplate($this->layout);
     if (!File::Exists($this->file)) {
         //TODO: Message
         Response::Redirect($this->BackLink());
     }
     $this->contents = File::GetContents($this->file);
     return parent::BeforeInit();
 }
Example #6
0
 private function AddModulesField()
 {
     $name = 'Module';
     $select = new Select($name, '');
     $select->AddOption('', Trans('Core.PleaseSelect'));
     $this->AddField($select);
     $this->SetRequired($name);
     foreach (PathUtil::Bundles() as $bundle) {
         $modules = PathUtil::FrontendModules($bundle);
         foreach ($modules as $moduleName) {
             $type = ClassFinder::CalcModuleType($bundle, $moduleName);
             $module = ClassFinder::CreateFrontendModule($type);
             if ($module instanceof FrontendModule && self::Guard()->Allow(BackendAction::UseIt(), $module->ContentForm())) {
                 $this->AddModuleTypeOption($select, $type);
             }
             //$select->AddOption($type, Trans($type));
         }
     }
 }
 private function GetConfirmMessage()
 {
     $replacements = array();
     $replacements['Text1'] = $this->register->GetMailText1();
     $replacements['Text2'] = $this->register->GetMailText2();
     $replacements['Title'] = Html($this->register->GetMailSubject());
     $replacements['Styles'] = Html($this->register->GetMailStyles());
     $confirmUrl = $this->register->GetConfirmUrl();
     if ($confirmUrl) {
         $replacements['ConfirmUrl'] = Html(Confirmer::CalcUrl($this->member, $confirmUrl));
     }
     $template = Path::Combine(PathUtil::BundleFolder($this->MyBundle()), 'MailTemplates/Confirm.phtml');
     $parser = new TemplateParser($replacements);
     return $parser->Parse($template);
 }
Example #8
0
 private function RemoveTemplate()
 {
     $id = Request::PostData('delete');
     if (!$id) {
         return false;
     }
     $idParts = \explode('/', $id);
     $module = $this->RemovalTemplateModule($idParts);
     $templateName = trim($idParts[1]);
     if (!$module || !$templateName) {
         return false;
     }
     $logger = new Logger(self::Guard()->GetUser());
     $logger->ReportTemplateAction($module->MyType(), $templateName, Action::Delete());
     $folder = PathUtil::ModuleCustomTemplatesFolder($module);
     $template = Path::Combine($folder, Path::AddExtension($templateName, 'phtml'));
     if (File::Exists($template)) {
         File::Delete($template);
     }
     $this->DeleteUsages($module, $templateName);
     return true;
 }
Example #9
0
 /**
  * Clears installed bundles
  */
 private function ClearInstalledBundles()
 {
     //Clear bundles without code folder
     $bundles = PathUtil::Bundles();
     $sql = new Sql\Builder($this->connection);
     $inList = $sql->InListFromValues($bundles);
     $tbl = InstalledBundle::Schema()->Table();
     $where = $sql->NotIn($tbl->Field('Bundle'), $inList);
     InstalledBundle::Schema()->Delete($where);
     //Clear failed bundles
     $failedList = $sql->InListFromValues(array_keys($this->failedBundles));
     if ($failedList) {
         InstalledBundle::Schema()->Delete($sql->In($tbl->Field('Bundle'), $failedList));
     }
 }
Example #10
0
 /**
  * Gets all backend module names for a bundle
  * @param string $bundle The bundle name
  * @return string Returns the module names
  */
 protected function Modules($bundle)
 {
     $modules = PathUtil::BackendModules($bundle);
     $result = array();
     foreach ($modules as $module) {
         $instance = ClassFinder::CreateBackendModule(ClassFinder::CalcModuleType($bundle, $module));
         if ($instance instanceof BackendModule) {
             $result[] = $module;
         }
     }
     return $result;
 }
Example #11
0
 /**
  * 
  * @return string
  * @throws \Exception Raises exception if engine is not supported
  */
 private function FindEngineFolder()
 {
     $bundle = $this->manifest->BundleName();
     $sqlFolder = PathUtil::InstallationSqlFolder($bundle);
     if (!Folder::Exists($sqlFolder) || Folder::IsEmpty($sqlFolder)) {
         return '';
     }
     $engine = (string) $this->connection->Engine();
     $engineFolder = Path::Combine($sqlFolder, $engine);
     if (!Folder::Exists($engineFolder)) {
         throw new \Exception("Bundle {$bundle} doesn't support your database engine '{$engine}'");
     }
     return $engineFolder;
 }
 /**
  * Adds the field for mail text 1
  */
 private function AddMailText2Field()
 {
     $name = 'MailText2';
     $renderer = new CKEditorRenderer(PathUtil::BackendRTEPath(), PathUtil::BackendRteUrl(), PathUtil::UploadPath(), PathUtil::UploadUrl(), self::Guard());
     $field = new Custom($renderer);
     $field->SetName($name);
     $field->SetValue($this->register->GetMailText2());
     $this->AddField($field);
 }
Example #13
0
 private function TemplateContent()
 {
     $areaCodes = '';
     $writer = new Writer();
     $this->InitAreas();
     $template = PathUtil::CodeTemplate($this->MyBundle(), 'Layout.phtml');
     $templateCode = File::GetContents($template);
     $indent = $this->GetIndent($templateCode, '_{areas}_');
     for ($idx = 0; $idx < count($this->areaNames); ++$idx) {
         $name = $this->areaNames[$idx];
         $writer->StartPhpInline();
         $writer->AddCommandInline('echo $this->RenderArea(\'' . $name . '\')');
         if ($idx < count($this->areaNames) - 1) {
             $writer->EndPhp();
         } else {
             $writer->EndPhpInline();
         }
         if ($idx > 0) {
             $areaCodes .= $indent;
         }
         $areaCodes .= $writer->Flush();
     }
     return str_replace('_{areas}_', $areaCodes, $templateCode);
 }
Example #14
0
 /**
  * Renders the complete page by requiring the page layout
  * @return string Returns the page contents
  */
 function Render()
 {
     self::$currentPage = $this->page;
     self::$Title = self::$currentPage->GetTitle();
     self::$Description = self::$currentPage->GetDescription();
     self::$Keywords = self::$currentPage->GetKeywords();
     if ($this->page->GetType() == (string) PageType::NotFound()) {
         header('HTTP/1.0 404 Not Found');
     } else {
         if ($this->page->GetType() !== (string) PageType::Normal()) {
             throw new \Exception('Internal phine error: not normal page called');
         }
     }
     ob_start();
     require PathUtil::LayoutTemplate($this->layout);
     $result = ob_get_clean();
     $replacer = new Replacer();
     return $replacer->RealizeVariables($result);
 }
Example #15
0
 /**
  * Reads the translation files
  */
 function ReadTranslations()
 {
     $lang = PhpTranslator::Singleton()->GetLanguage();
     \RequireOnceIfExists(PathUtil::BundleTranslationsFile($this, $lang));
     \RequireOnceIfExists(PathUtil::ModuleTranslationsFile($this, $lang));
 }
 /**
  * The simple template with "echo result"
  * @return string
  */
 public function TemplateFile()
 {
     $dir = PathUtil::BundleFolder('Core');
     return Path::Combine($dir, 'Templates/EchoResult.phtml');
 }
Example #17
0
 /**
  * Loads backend translations of the bundle
  */
 private function LoadFrontendTranslations(Site $site)
 {
     $language = $site->GetLanguage()->GetCode();
     $frontendTranslations = PathUtil::FrontendBundleTranslationFile($this->BundleName(), $language);
     if (File::Exists($frontendTranslations)) {
         require_once $frontendTranslations;
     }
 }
Example #18
0
 /**
  * Adds the template select field
  * @param FrontendModule $module The module for template selection
  */
 protected final function AddTemplateField()
 {
     $name = 'Template';
     $field = new Select($name, (string) $this->Content()->GetTemplate());
     $field->AddOption('', Trans("Core.ContentForm.{$name}.Default"));
     $folder = PathUtil::ModuleCustomTemplatesFolder($this->FrontendModule());
     if (Folder::Exists($folder)) {
         $files = Folder::GetFiles($folder);
         foreach ($files as $file) {
             $value = Path::FilenameNoExtension($file);
             $field->AddOption($value, $value);
         }
     }
     $this->AddField($field, false, Trans("Core.ContentForm.{$name}"));
 }
Example #19
0
 /**
  * The modules for the backend navigation
  * @return Returns an array with bundle names as keys and backend modules as list
  */
 static function BackendNavModules()
 {
     $result = array();
     $allBundles = PathUtil::Bundles();
     //force Core to appear first
     $coreKey = array_search('Core', $allBundles);
     unset($allBundles[$coreKey]);
     array_unshift($allBundles, 'Core');
     $bundles = array_values($allBundles);
     foreach ($bundles as $bundle) {
         $modules = PathUtil::BackendModules($bundle);
         foreach ($modules as $module) {
             $type = self::CalcModuleType($bundle, $module);
             $instance = self::CreateBackendModule($type);
             if (!$instance instanceof BackendModule) {
                 continue;
             }
             if ($instance->SideNavIndex() >= 0 && BackendModule::Guard()->Allow(BackendAction::Read(), $instance)) {
                 self::AddBackendNavModule($result, $instance);
             }
         }
     }
     return self::SortByNavIndex($result);
 }
Example #20
0
 /**
  * Gets cache content if necessary
  * @return boolean
  */
 protected function BeforeInit()
 {
     //todo: check access rights
     $cacheFile = PathUtil::ContentCacheFile($this);
     $this->fileCacher = new FileCacher($cacheFile, $this->content->GetCacheLifetime());
     if ($this->fileCacher->MustUseCache()) {
         $this->output = $this->fileCacher->GetFromCache();
         return true;
     }
     return parent::BeforeInit();
 }