Exemplo n.º 1
0
 /**
  * @param string $path
  * @return Collection
  */
 public function build($path = null)
 {
     if (is_null($path)) {
         $path = $this->path;
     }
     $collection = $this->cache->get(__CLASS__);
     if ($collection === false) {
         $realpath = realpath($path);
         $collection = new Collection($this->blogRoute);
         if (is_readable($realpath)) {
             $loader = new FrontMatterLoader();
             foreach (scandir($realpath, 1) as $filename) {
                 if (in_array(substr($filename, 0, 1), ['.', '_'])) {
                     continue;
                 }
                 $pathinfo = pathinfo($filename);
                 if (!in_array($pathinfo['extension'], $this->extensions)) {
                     continue;
                 }
                 $data = $loader->load($realpath . '/' . $filename);
                 if (empty($data['modified'])) {
                     $data['modified'] = date('c', filemtime($realpath . '/' . $filename));
                 }
                 if (empty($data['date'])) {
                     $data['date'] = $this->extractDateFromPath($filename);
                 }
                 $data['path'] = '@post/' . $filename;
                 $data['blogRoute'] = $this->blogRoute;
                 $item = new Item($data);
                 $collection->addItem($item);
             }
         }
         $this->cache->set(__CLASS__, $collection);
     }
     #echo"<pre>";print_r($collection);echo"</pre>";
     return $collection;
 }
 public function dataAction($request)
 {
     $alias = $request->getQuery('path');
     $path = $this->alias->get($alias);
     #$data = $this->getService('Loader\PageLoader')->load($alias);
     $loader = new FrontMatterLoader();
     $data = $loader->load($path);
     // Readonly
     $data['Alias'] = $alias;
     $data['path'] = $path;
     $fields = $this->config->get('plugins.config.adminpanel.fields', []);
     $unconfig = [];
     foreach ($data as $key => $value) {
         if (empty($fields[$key]['type'])) {
             $fields[$key] = ['label' => ucfirst($key)];
             $unconfig[$key] = $value;
         }
     }
     $saved = false;
     if (!empty($_POST)) {
         $update = array_merge($request->getPost('data', []), $unconfig);
         $update = ArrayHelper::filterEmptyElements($update);
         if (PageHelper::updateData($path, $update)) {
             $data = $loader->load($path);
             $saved = true;
         }
     }
     $groups = ['Allgemein', 'Media', 'Tags', 'Layout', 'Info'];
     $fieldsets = [];
     foreach ($fields as $key => $field) {
         $group = isset($field['group']) ? $field['group'] : '';
         $fieldset = in_array($group, $groups) ? $group : '';
         $fieldsets[$fieldset][$key] = $field;
     }
     $fieldsets = ArrayHelper::sortArrayByArray($fieldsets, $groups);
     return $this->render('data.twig', ['data' => $data, 'fields' => $fields, 'saved' => $saved, 'controller' => $this->controller, 'action' => $this->action, 'cancel' => $request->getQuery('cancel'), 'Alias' => $alias, 'fieldsets' => $fieldsets]);
 }
Exemplo n.º 3
0
 /**
  * @param string $absolutePath
  * @param string $relativePath
  * @param string $alias
  * @return Item
  */
 protected function createItem($absolutePath, $relativePath, $alias)
 {
     $loader = new FrontMatterLoader();
     $data = $loader->load($absolutePath);
     $trimExtension = empty($data['keep_extension']);
     $route = $this->createRoute($relativePath, $trimExtension);
     $data['path'] = $alias . '/' . $relativePath;
     $data['route'] = $route;
     $item = new Item($data);
     if (empty($item->modified)) {
         $item->modified = date('c', filemtime($absolutePath));
     }
     if (empty($item->date)) {
         $item->date = date('c', filectime($absolutePath));
     }
     if (!isset($item->hidden)) {
         $item->hidden = !preg_match('/^[0-9]+-/', basename($relativePath));
     }
     return $item;
 }