Пример #1
0
 public function loadClassMetadata(LoadClassMetadataEventArgs $args)
 {
     $em = $args->getEntityManager();
     $meta = $args->getClassMetadata();
     $class = $meta->name;
     $rootClass = $meta->rootEntityName;
     $info = Chalk::info($class);
     $parentClasses = array_merge([$class], $meta->parentClasses);
     $repositoryClasses = [];
     foreach ($parentClasses as $parentClass) {
         $parentInfo = Chalk::info($parentClass);
         $repositoryClasses[] = $parentInfo->module->class . '\\Repository\\' . $parentInfo->local->class;
     }
     $repositoryClasses[] = 'Chalk\\Repository';
     foreach ($repositoryClasses as $repositoryClass) {
         if (class_exists($repositoryClass)) {
             $meta->setCustomRepositoryClass($repositoryClass);
             break;
         }
     }
     if ($meta->discriminatorMap) {
         $meta->discriminatorMap = [Chalk::info($rootClass)->name => $rootClass];
         $allClasses = $em->getConfiguration()->getMetadataDriverImpl()->getAllClassNames();
         foreach ($allClasses as $allClass) {
             if (is_subclass_of($allClass, $rootClass)) {
                 $meta->discriminatorMap[Chalk::info($allClass)->name] = $allClass;
             }
             if (is_subclass_of($allClass, $class) && !in_array($allClass, $meta->subClasses)) {
                 $meta->subClasses[] = $allClass;
             }
         }
     }
 }
Пример #2
0
 public function parse(DOMDocument $doc, DOMXPath $xpath)
 {
     $nodes = $xpath->query('//*[@data-chalk]');
     foreach ($nodes as $node) {
         $data = json_decode($node->getAttribute('data-chalk'), true);
         if (!$data) {
             continue;
         }
         if (isset($data['widget'])) {
             while ($node->hasChildNodes()) {
                 $node->removeChild($node->firstChild);
             }
             $info = Chalk::info($data['widget']['name']);
             $class = $info->class;
             $widget = $this->em->wrap(new $class())->graphFromArray($data['widget']['params']);
             $html = $this->view->render('widget/card', ['widget' => $widget->getObject()], 'core');
             $temp = $this->parser->htmlToDoc($html);
             $temps = $temp->getElementsByTagName('body')->item(0)->childNodes;
             for ($i = 0; $i < $temps->length; $i++) {
                 $temp = $doc->importNode($temps->item($i), true);
                 $node->appendChild($temp);
             }
             $this->_addClass($node, 'mceNonEditable');
         }
     }
 }
Пример #3
0
 public function joinColumnName($property, $class = null)
 {
     $column = $this->propertyToColumnName($property) . ucfirst($this->referenceColumnName());
     if (is_subclass_of($class, 'Chalk\\Core\\Content')) {
         $column = Chalk::info($class)->name . '_' . $column;
     }
     return $column;
 }
Пример #4
0
 public function build(array $params = array())
 {
     $query = parent::build($params);
     $params = $params + ['entity' => null];
     if (isset($params['entity'])) {
         $query->andWhere("l.entity = :entity AND l.entityId = :entityId")->setParameter('entity', Chalk::info($entity)->name)->setParameter('entityId', $entity->id);
     }
     return $query;
 }
Пример #5
0
 public function searchable_modify(QueryBuilder $query, array $params = array())
 {
     $alias = isset($alias) ? $alias : $this->alias();
     $params = $params + ['search' => null];
     if (isset($params['search'])) {
         $info = Chalk::info($this->_class->name);
         $classes = array_merge([$info->class], $this->_em->getClassMetadata($info->class)->subClasses);
         $results = $this->_em->getRepository('Chalk\\Core\\Index')->search($params['search'], $classes);
         $ids = \Coast\array_column($results, 'entityId');
         $query->andWhere("{$alias}.id IN (:ids)")->orderBy("FIELD({$alias}.id, :ids)")->setParameter('ids', $ids);
     }
 }
Пример #6
0
 public function search($query, $classes = array())
 {
     $conn = $this->_em->getConnection();
     $query = $conn->quote($query);
     $classes = (array) $classes;
     foreach ($classes as $i => $class) {
         $classes[$i] = $conn->quote(Chalk::info($class)->name);
     }
     $where = count($classes) ? "AND i.entityType IN(" . implode(', ', $classes) . ")" : null;
     $table = Chalk::info('Chalk\\Core\\Index')->name;
     return $conn->query("\n            SELECT i.entityType, i.entityId,\n                MATCH(i.content) AGAINST ({$query}) AS score\n            FROM {$table} AS i\n            WHERE MATCH(i.content) AGAINST ({$query} IN BOOLEAN MODE)\n                {$where}\n            ORDER BY score DESC, i.entityId DESC\n        ")->fetchAll();
 }
Пример #7
0
 public function item($name, $info = null, $append = false)
 {
     if (func_num_args() > 1) {
         if (isset($info)) {
             $items = [$name => (object) ((array) Chalk::info($name) + $info + ['subtypes' => []])];
             $this->_items = $append ? $items + $this->_items : $this->_items + $items;
         } else {
             unset($this->_items[$name]);
         }
         return $this;
     }
     return $this->_items[$name];
 }
Пример #8
0
 public function delete(Request $req, Response $res)
 {
     $node = $this->em('Chalk\\Core\\Structure\\Node')->id($req->node);
     $parent = $node->parent;
     $parent->id;
     foreach ($node->children as $child) {
         $node->children->removeElement($child);
         $child->parent = $parent;
         $child->sort = \Chalk\Core\Structure\Node::VALUE_MAX;
     }
     $this->em->remove($node);
     $this->em->flush();
     $this->notify(Chalk::info($node->content)->singular . " <strong>{$node->content->name}</strong> was removed successfully", 'positive');
     return $res->redirect($this->url(array('action' => 'index', 'structure' => $node->structure->id), 'core_structure', true));
 }
Пример #9
0
 public function onFlush(OnFlushEventArgs $args)
 {
     $em = $args->getEntityManager();
     $uow = $em->getUnitOfWork();
     $entities = array_merge($uow->getScheduledEntityInsertions(), $uow->getScheduledEntityUpdates());
     foreach ($entities as $entity) {
         if (!$entity instanceof Node) {
             continue;
         }
         $changeSet = $uow->getEntityChangeSet($entity);
         if (isset($changeSet['slug']) && !isset($changeSet['slug'][0]) && isset($changeSet['slug'][1])) {
             continue;
         }
         $entity = $entity->structure;
         if (in_array($entity, $entities, true)) {
             continue;
         }
         $entities[] = $entity;
     }
     foreach ($entities as $i => $entity) {
         if (!$entity instanceof Loggable) {
             continue;
         }
         $changeSet = $uow->getEntityChangeSet($entity);
         $log = new Log();
         $log->entity = Chalk::info($entity)->name;
         $log->entityObject = $entity;
         if (!isset($entity->id)) {
             $log->type = Log::TYPE_CREATE;
         } else {
             if ($entity instanceof Publishable && isset($changeSet['status']) && $changeSet['status'][0] != $changeSet['status'][1]) {
                 $log->type = constant('Chalk\\Core\\Log::TYPE_STATUS_' . strtoupper($entity->status));
             } else {
                 $log->type = Log::TYPE_MODIFY;
             }
         }
         $this->_updates[] = $log;
     }
     $entities = array_merge($uow->getScheduledEntityDeletions());
     foreach ($entities as $i => $entity) {
         if (!$entity instanceof Loggable) {
             continue;
         }
         $logs = $em->getRepository('Chalk\\Core\\Log')->all(['entity' => $entity]);
         $this->_deletions = array_merge($this->_deletions, $logs);
     }
 }
Пример #10
0
 public function build(array $params = array())
 {
     $query = parent::build($params);
     $params = $params + ['structure' => null, 'children' => null, 'parents' => null, 'siblings' => null, 'depth' => null, 'isIncluded' => false, 'isVisible' => Chalk::isFrontend()];
     $query->addSelect("c")->leftJoin("n.content", "c");
     $depth = null;
     if (isset($params['structure'])) {
         $query->andWhere('n.structure = :structure')->setParameter('structure', $params['structure']);
     } else {
         if (isset($params['children'])) {
             $query->andWhere('n.structure = :structure AND n.left >= :left AND n.right <= :right')->setParameter('structure', $params['children']['structureId'])->setParameter('left', $params['children']['left'])->setParameter('right', $params['children']['right']);
             if (isset($params['depth'])) {
                 $query->andWhere('n.depth <= :depth')->setParameter('depth', $params['children']['depth'] + $params['depth']);
             }
             if (!$params['isIncluded']) {
                 $query->andWhere('n != :exclude')->setParameter('exclude', $params['children']['id']);
             }
         } else {
             if (isset($params['parents'])) {
                 $query->from($this->_entityName, 'nt')->andWhere('n.structure = :structure AND nt.left >= n.left AND nt.left <= n.right')->andWhere('nt = :node')->setParameter('structure', $params['parents']['structureId'])->setParameter('node', $params['parents']['id']);
                 if (isset($params['depth'])) {
                     $query->andWhere('n.depth >= :depth')->setParameter('depth', $params['parents']['depth'] - $params['depth']);
                 }
                 if (!$params['isIncluded']) {
                     $query->andWhere('n != :exclude')->setParameter('exclude', $params['parents']['id']);
                 }
             } else {
                 if (isset($params['siblings'])) {
                     $query->andWhere('n.parent = :parent')->setParameter('parent', $params['siblings']['parentId']);
                     if (!$params['isIncluded']) {
                         $query->andWhere('n != :exclude')->setParameter('exclude', $params['siblings']['id']);
                     }
                 }
             }
         }
     }
     if ($params['isVisible']) {
         $query->andWhere("n.isHidden = false");
     }
     $this->publishable_modify($query, $params, 'c');
     return $query;
 }
Пример #11
0
 public function publishable_modify(QueryBuilder $query, array $criteria = array(), $alias = null)
 {
     $alias = isset($alias) ? $alias : $this->alias();
     $criteria = $criteria + ['isPublished' => Chalk::isFrontend(), 'isPublishable' => false, 'publishDateMin' => null, 'publishDateMax' => null];
     if ($criteria['isPublished']) {
         $query->andWhere("{$alias}.status IN (:statuses) AND UTC_TIMESTAMP() >= {$alias}.publishDate");
         $query->setParameter('statuses', [Chalk::STATUS_PUBLISHED]);
     }
     if ($criteria['isPublishable']) {
         $query->andWhere("{$alias}.status IN (:statuses)");
         $query->setParameter('statuses', [Chalk::STATUS_DRAFT, Chalk::STATUS_PENDING]);
     }
     if (isset($criteria['publishDateMin'])) {
         $publishDateMin = $criteria['publishDateMin'] instanceof DateTime ? $criteria['publishDateMin'] : new DateTime($criteria['publishDateMin']);
         $query->andWhere("{$alias}.publishDate >= :publishDateMin")->setParameter('publishDateMin', $publishDateMin);
     }
     if (isset($criteria['publishDateMax'])) {
         $publishDateMax = $criteria['publishDateMax'] instanceof DateTime ? $criteria['publishDateMax'] : new DateTime($criteria['publishDateMax']);
         $query->andWhere("{$alias}.publishDate <= :publishDateMax")->setParameter('publishDateMax', $publishDateMax);
     }
 }
Пример #12
0
 public function parse(DOMDocument $doc, DOMXPath $xpath)
 {
     $nodes = $xpath->query('//*[@data-chalk]');
     while ($nodes->length) {
         foreach ($nodes as $node) {
             $data = json_decode($node->getAttribute('data-chalk'), true);
             $node->removeAttribute('data-chalk');
             if (!$data) {
                 continue;
             }
             if (isset($data['content'])) {
                 $content = $this->em('core_content')->id($data['content']['id']);
                 $node->setAttribute('href', $this->url($content));
             } else {
                 if (isset($data['widget'])) {
                     $info = Chalk::info($data['widget']['name']);
                     $class = $info->class;
                     $widget = (new $class())->fromArray($data['widget']['params']);
                     $config = $this->chalk->config->viewScripts;
                     $path = "{$config[0]}/{$info->module->name}/{$info->local->path}";
                     $html = $this->view->render($path, $widget->toArray(), $config[1]);
                     $temp = $this->parser->htmlToDoc($html);
                     $query = $temp->getElementsByTagName('body');
                     if ($query->length > 0) {
                         $temps = $query->item(0)->childNodes;
                         for ($i = 0; $i < $temps->length; $i++) {
                             $temp = $doc->importNode($temps->item($i), true);
                             $node->parentNode->insertBefore($temp, $node);
                         }
                     }
                     $node->parentNode->removeChild($node);
                 }
             }
         }
         $nodes = $xpath->query('//*[@data-chalk]');
     }
 }
Пример #13
0
 public function select(Request $req, Response $res)
 {
     $filters = $this->chalk->module('core')->contentList($req->filters);
     $info = isset($req->type) ? Chalk::info($req->type) : $filters->first();
     $req->queryParam('type', $info->name);
     $class = "\\{$info->module->class}\\Model\\{$info->local->class}\\Index";
     if (!class_exists($class)) {
         $class = "\\Chalk\\Core\\Model\\Content\\Index";
     }
     $index = new $class();
     $wrap = $this->em->wrap($index);
     $wrap->graphFromArray($req->queryParams());
     $req->view->index = $wrap;
     $req->view->filters = $filters;
     if (!$req->isPost() && !$index->contentNew) {
         return;
     }
     $wrap->graphFromArray($req->bodyParams());
     $contents = [];
     foreach ($index->contents as $content) {
         $contents[] = ['id' => $content->id, 'name' => $content->name, 'card' => $this->view->render('content/card', ['content' => $content], 'core')->toString()];
     }
     $req->data->contents = $contents;
 }
Пример #14
0
 public function frontendInitNodes()
 {
     $conn = $this->em->getConnection();
     $nodes = $conn->query("\n            SELECT n.id,\n                n.sort, n.left, n.right, n.depth,\n                n.name, n.slug, n.path,\n                n.structureId,\n                n.parentId,\n                c.id AS content_id,\n                c.type AS content_type,\n                c.data AS content_data\n            FROM core_structure_node AS n\n                INNER JOIN core_structure AS s ON s.id = n.structureId\n                INNER JOIN core_domain__core_structure AS d ON d.core_structureId = s.id\n                LEFT JOIN core_content AS c ON c.id = n.contentId\n            WHERE d.core_domainId = {$this->frontend->domain['id']}\n        ")->fetchAll();
     $nodeMap = [];
     foreach ($nodes as $node) {
         $nodeMap[$node['id']] = $node;
         $content = ['id' => $node['content_id'], 'type' => $node['content_type'], 'data' => json_decode($node['content_data'], true)];
         if (!isset($content['id'])) {
             continue;
         }
         if (isset($content['data']['delegate'])) {
             $delegate = $content['data']['delegate'] + ['name' => null, 'params' => []];
             $info = Chalk::info($delegate['name']);
             $name = 'content';
             $params = $delegate['params'];
         } else {
             $info = Chalk::info($node['content_type']);
             $name = $info->local->name;
             $params = [];
         }
         $module = $this->app->module($info->module->name);
         if (!method_exists($module, 'core_frontendInitNode')) {
             throw new \Chalk\Exception("Module '{$info->module->name}' does not implment 'core_frontendInitNode'");
         }
         $params = ['group' => $module->name(), 'node' => $node, 'content' => $content, $name => $content['id']] + $params;
         $primary = $module->core_frontendInitNode($info->local->name, $node, $content, $params);
         if (!$primary) {
             throw new \Chalk\Exception("No primary route provided for '{$info->name}' on node '{$node['id']}'");
         }
         $this->frontendRouteAlias($this->name("content_{$content['id']}"), $primary)->frontendRouteAlias($this->name("structure_node_{$node['id']}"), $primary);
     }
     $this->frontend->nodeMap = $nodeMap;
 }
Пример #15
0
use Chalk\App as Chalk;
?>

<?php 
$this->outer('/layout/page_structure', ['title' => isset($node) ? $node->content->name : null]);
$this->block('main');
?>

<?php 
if (isset($node->content)) {
    ?>
    <?php 
    $structure = $this->em('Chalk\\Core\\Structure')->id($req->structure);
    $content = $node->content;
    $info = Chalk::info($content->getObject());
    ?>
    <?php 
    if ($info->class != 'Chalk\\Core\\Content') {
        ?>
    	<form action="<?php 
        echo $this->url->route();
        echo $this->url->query();
        ?>
" method="post">
    		<?php 
        echo $this->inner("/{$info->local->path}/form", ['structure' => $structure, 'content' => $content, 'info' => $info], $info->module->name);
        ?>
    	</form>
    <?php 
    }
Пример #16
0
 public function preDispatch(Request $req, Response $res)
 {
     $req->view->info = $req->info = Chalk::info($req->entity);
 }
Пример #17
0
<?php

/*
 * Copyright 2015 Jack Sleight <http://jacksleight.com/>
 * This source file is subject to the MIT license that is bundled with this package in the file LICENCE.md. 
 */
use Chalk\App as Chalk;
if (php_sapi_name() != 'cli') {
    exit("Must be run from the command line\n");
}
$init = getcwd() . '/chalk-cli.php';
if (!is_file($init)) {
    exit("No 'chalk-cli.php' initialization file found in '" . getcwd() . "'\n");
}
$app = (require_once $init);
Chalk::isFrontend(false);
$cmds = [];
foreach ($app->dir('cli/cmds') as $file) {
    $cmds[$file->fileName()] = $file;
}
if (!isset($_SERVER['argv'][1]) || !isset($cmds[$_SERVER['argv'][1]])) {
    cli\err("Invalid command, valid commands are:\n  " . implode("\n  ", array_keys($cmds)));
    exit;
}
require_once $cmds[$_SERVER['argv'][1]]->name();
Пример #18
0
 public function resolver($name, Closure $resolver)
 {
     $info = Chalk::info($name);
     $this->_resolvers = array_merge([[$info->class, $resolver]], $this->_resolvers);
     return $this;
 }
Пример #19
0
 public function __construct(\Toast\Entity $entityObject)
 {
     $this->entityObject = $entityObject;
     $this->entityType = Chalk::info($this->entityObject)->name;
     $this->entityId = $this->entityObject->id;
 }
Пример #20
0
 public function build(array $params = array())
 {
     $query = parent::build($params);
     $params = $params + ['types' => null, 'subtypes' => null, 'tags' => null, 'createDateMin' => null, 'createDateMax' => null, 'modifyDateMin' => null, 'modifyDateMax' => null, 'createUsers' => null, 'statuses' => null];
     if (isset($params['types']) && count($params['types'])) {
         if ($params['types'] instanceof InfoList) {
             $types = [];
             foreach ($params['types'] as $filter) {
                 $types[$filter->class] = $filter->subtypes;
             }
         } else {
             $types = $params['types'];
         }
         $all = [];
         foreach ($types as $class => $subtypes) {
             $info = Chalk::info($class);
             $classes = array_merge([$info->class], $this->_em->getClassMetadata($info->class)->subClasses);
             foreach ($classes as $class) {
                 $all[$class] = $subtypes;
             }
         }
         $lines = [];
         $i = 0;
         foreach ($all as $class => $subtypes) {
             $line = "{$this->alias()} INSTANCE OF {$class}";
             if (isset($subtypes) && count($subtypes)) {
                 $line .= " AND {$this->alias()}.subtype IN (:types_{$i}_subtypes)";
                 $query->setParameter("types_{$i}_subtypes", $subtypes);
             }
             $lines[] = "({$line})";
             $i++;
         }
         $query->andWhere(implode(' OR ', $lines));
     }
     if (isset($params['subtypes']) && count($params['subtypes'])) {
         $query->andWhere("{$this->alias()}.subtype IN (:subtypes)")->setParameter('subtypes', $params['subtypes']);
     }
     if (isset($params['tags']) && count($params['tags'])) {
         $query->andWhere(":tags MEMBER OF {$this->alias()}.tags")->setParameter('tags', $params['tags']);
     }
     if (isset($params['createDateMin'])) {
         $createDateMin = $params['createDateMin'] instanceof DateTime ? $params['createDateMin'] : new DateTime($params['createDateMin']);
         $query->andWhere("{$this->alias()}.createDate >= :createDateMin")->setParameter('createDateMin', $createDateMin);
     }
     if (isset($params['createDateMax'])) {
         $createDateMax = $params['createDateMax'] instanceof DateTime ? $params['createDateMax'] : new DateTime($params['createDateMax']);
         $query->andWhere("{$this->alias()}.createDate <= :createDateMax")->setParameter('createDateMax', $createDateMax);
     }
     if (isset($params['modifyDateMin'])) {
         $modifyDateMin = $params['modifyDateMin'] instanceof DateTime ? $params['modifyDateMin'] : new DateTime($params['modifyDateMin']);
         $query->andWhere("{$this->alias()}.modifyDate >= :modifyDateMin")->setParameter('modifyDateMin', $modifyDateMin);
     }
     if (isset($params['modifyDateMax'])) {
         $modifyDateMax = $params['modifyDateMax'] instanceof DateTime ? $params['modifyDateMax'] : new DateTime($params['modifyDateMax']);
         $query->andWhere("{$this->alias()}.modifyDate <= :modifyDateMax")->setParameter('modifyDateMax', $modifyDateMax);
     }
     if (isset($params['createUsers'])) {
         $query->andWhere("{$this->alias()}.createUser IN (:createUsers)")->setParameter('createUsers', $params['createUsers']);
     }
     if (isset($params['statuses']) && count($params['statuses'])) {
         $query->andWhere("{$this->alias()}.status IN (:statuses)")->setParameter('statuses', $params['statuses']);
     }
     $query->addSelect("{$this->alias()}_tags")->leftJoin("{$this->alias()}.tags", "{$this->alias()}_tags");
     $this->publishable_modify($query, $params);
     $this->searchable_modify($query, $params);
     return $query;
 }
Пример #21
0
<?php

use Chalk\App as Chalk;
use Chalk\Repository;
$info = Chalk::info($index->type);
?>
<div class="flex flex-row">
    <?php 
if (count($filters) > 1) {
    ?>
  
        <div class="sidebar">
            <div class="body">
                <nav class="nav" role="navigation">
                    <ul>
                        <?php 
    foreach ($filters as $filter) {
        ?>
                            <li><a href="<?php 
        echo $this->url([]) . $this->url->query(['filters' => $index->filters, 'type' => $filter->name], true);
        ?>
" class="item <?php 
        echo $filter->name == $info->name ? 'active' : null;
        ?>
">
                                <span class="icon-sidebar icon-<?php 
        echo $filter->icon;
        ?>
"></span>
                                <?php 
        echo $filter->plural;
Пример #22
0
 public function postExecute(Request $req = null, Response $res = null)
 {
     Chalk::isFrontend(true);
 }
Пример #23
0
 public static function staticTypeLabel($type)
 {
     return Chalk::info($type)->singular;
 }
Пример #24
0
 public function preDispatch(Request $req, Response $res)
 {
     $req->view->info = $req->info = Chalk::info($req->entity ? $req->entity : 'Chalk\\Core\\Content');
 }
Пример #25
0
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="<?php 
echo $this->frontend->url->file("vendor/jacksleight/chalk/public/assets/styles/styles{$mode}.css");
?>
">
</head>
<body class="<?php 
echo isset($class) ? $class : '';
?>
">
    <?php 
echo $this->content('body');
?>
    <script>
        var Chalk = <?php 
echo json_encode(['baseUrl' => (string) $this->url->baseUrl(), 'rootBaseUrl' => (string) $this->frontend->url->baseUrl(), 'pingUrl' => (string) $this->url(['controller' => 'index', 'action' => 'ping'], 'core_index', true), 'prefsUrl' => (string) $this->url(['controller' => 'index', 'action' => 'prefs'], 'core_index', true), 'selectUrl' => (string) $this->url(['controller' => 'index', 'action' => 'select'], 'core_index', true), 'widgetUrl' => (string) $this->url(['action' => 'edit', 'entity' => '{entity}'], 'core_widget', true), 'sourceUrl' => (string) $this->url(['controller' => 'index', 'action' => 'source'], 'core_index', true), 'contentName' => Chalk::info('Chalk\\Core\\Content')->name, 'prefs' => isset($req->user) ? $req->user->prefs() : [], 'styles' => $this->chalk->config->styles, 'notifications' => $this->notify->notifications(), 'widgets' => $this->widgetList->items(), 'editorContent' => ['src' => (string) $this->frontend->url->file("vendor/jacksleight/chalk/public/assets/scripts/editor-content{$mode}.js"), 'loaded' => false, 'loading' => false, 'queue' => []], 'editorCode' => ['src' => (string) $this->frontend->url->file("vendor/jacksleight/chalk/public/assets/scripts/editor-code{$mode}.js"), 'loaded' => false, 'loading' => false, 'queue' => []]]);
?>
;
        Chalk.execute = [];
        Chalk.domReady = function(a,b,c){b=document,c='addEventListener';b[c]?b[c]('DOMContentLoaded',a):window.attachEvent('onload',a)}
        Chalk.domReady(function() {
            var script = document.createElement('script');
            script.src = '<?php 
echo $this->frontend->url->file("vendor/jacksleight/chalk/public/assets/scripts/scripts{$mode}.js");
?>
';
            document.head.appendChild(script);
        });
    </script>
    <script type="x-tmpl-mustache" class="modal-template">
        <div class="modal hideable hideable-hidden">
Пример #26
0
 public function __invoke($class)
 {
     return $this->getRepository(Chalk::info($class)->class);
 }
Пример #27
0
<?php

use Chalk\App as Chalk;
if (!isset($content)) {
    return;
}
$info = isset($info) ? $info : Chalk::info($content);
?>
<div class="card">
	<div class="preview">
		<?php 
if ($content instanceof \Chalk\Core\File && $content->file->exists() && $content->isImage()) {
    ?>
			<?php 
    if ($content->isImageBitmap()) {
        ?>
				<div class="image" style="background-image: url('<?php 
        echo $this->image($content->file, ['size' => '96']);
        ?>
');"></div>
			<?php 
    } else {
        if ($content->isImageVector()) {
            ?>
				<div class="image" style="background-image: url('<?php 
            echo $this->frontend->url->file($content->file);
            ?>
');"></div>
			<?php 
        }
    }
Пример #28
0
 public function preDispatch(Request $req, Response $res)
 {
     $req->view->info = $req->info = Chalk::info($this->_entityClass);
 }
Пример #29
0
<?php

use Chalk\App as Chalk;
$info = Chalk::info($widget);
$file = $widget->previewFile;
?>
<div class="card">
	<div class="preview">
		<?php 
if (isset($file) && $file->exists() && \Chalk\is_image($file)) {
    ?>
			<div class="image" style="background-image: url('<?php 
    echo $this->image($file, ['size' => '96']);
    ?>
');"><i class="remove">&nbsp;</i></div>
		<?php 
} else {
    ?>
			<div class="text"><span class="icon-<?php 
    echo $info->icon;
    ?>
"><i class="remove">&nbsp;</i></span></div>
		<?php 
}
?>
	</div>
	<div class="card-inner">
		<strong><?php 
echo $info->singular;
?>
</strong>&nbsp;
Пример #30
0
/*
 * Copyright 2015 Jack Sleight <http://jacksleight.com/>
 * This source file is subject to the MIT license that is bundled with this package in the file LICENCE.md. 
 */
use Chalk\App as Chalk;
use Chalk\Repository;
if (cli\choose("Are you sure", 'yn', 'n') == 'n') {
    exit;
}
cli\line('Clearing cache..');
$app->cache->deleteAll();
try {
    cli\line('Clearing index..');
    $conn = $app->em->getConnection();
    $table = Chalk::info('Chalk\\Core\\Index')->name;
    $conn->exec("TRUNCATE TABLE {$table}");
    $metas = $app->em->getMetadataFactory()->getAllMetadata();
    foreach ($metas as $meta) {
        if (!is_a($meta->name, 'Chalk\\Core\\Behaviour\\Searchable', true) || $meta->name != $meta->rootEntityName) {
            continue;
        }
        $limit = 100;
        $page = 0;
        do {
            $page++;
            $entities = $app->em($meta->name)->all(['limit' => $limit, 'page' => $page], [], Repository::FETCH_ALL_PAGED);
            if ($page == 1) {
                $total = $entities->count();
                $pages = ceil($total / $limit);
                $bar = new cli\progress\Bar("Indexing {$meta->name}..", $total, 1);