Skip to content

Commit 4f65171

Browse files
fix conflicts
2 parents ebd6827 + addc4d9 commit 4f65171

25 files changed

+589
-252
lines changed

README.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,28 @@
77
[![Quality Score][ico-code-quality]][link-code-quality]
88
[![Total Downloads][ico-downloads]][link-downloads]
99

10-
A simple back-end life circle for fields inspired on [cockpit](http://getcockpit.com/).
11-
Via command line you can create fields for your partials and consume in your project using he Repository, Services or Extensions
10+
Field is a blueprint to work as a CMS inpired on [cockpit](http://getcockpit.com/).
11+
Via command line you can create fields for your partials and consume in your project using Repository, Services or Extensions.
12+
13+
### Example
14+
15+
Create some field, running this in your terminal
16+
```bash
17+
php vendor/bin/field create Collection about "About page"
18+
php vendor/bin/field create Field textfield "About text" text about
19+
php vendor/bin/field create Field imagefield "About image" text about
20+
```
21+
22+
With this code you will create a collection called "About page" and two field for him "About text" and "About image". So you can get this using the Repository:
23+
```php
24+
use WilliamEspindola\Field\Storage\ORM\Doctrine;
25+
use WilliamEspindola\Field\Repository\CollectionFieldRepository;
26+
27+
$doctrineStorage = new Doctrine(/** doctrine setup */); // you can uss orther ORM as you want
28+
$repository = new CollectionFieldRepository($doctrineStorage);
29+
30+
$repository->findAll()
31+
```
1232

1333
## Install
1434

behat.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
default:
2-
paths:
3-
features: %behat.paths.base%/tests/functional
4-
extensions:
5-
Behat\MinkExtension\Extension:
6-
goutte: ~
7-
selenium2: ~
8-
base_url: http://localhost:8080
2+
autoload:
3+
'': %paths.base%/tests/functional
4+
suites:
5+
cli:
6+
paths: [ %paths.base%/tests/functional/cli ]
7+
contexts: [ FeatureContext ]

bin/field

100644100755
File mode changed.

composer.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"license": "BDS-3-Clause",
77
"keywords": [
88
"field",
9+
"cms",
910
"console"
1011
],
1112
"authors": [
@@ -18,12 +19,16 @@
1819
],
1920
"require": {
2021
"php" : ">=5.4",
21-
"respect/relational": "^0.8",
2222
"ocramius/generated-hydrator": "1.1.0",
2323
"symfony/console": "~2.7"
2424
},
2525
"require-dev": {
26-
"phpunit/phpunit" : "4.*"
26+
"phpunit/phpunit" : "4.*",
27+
"behat/behat": "~3.0"
28+
},
29+
"suggest": {
30+
"doctrine/orm": "orm 2.5.0, if you want to work with doctrine",
31+
"respect/relational": "relational ^0.8, if you want to work with relational"
2732
},
2833
"autoload": {
2934
"psr-4": {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!-- config/xml/Collection.dcm.xml -->
2+
<doctrine-mapping
3+
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd">
6+
7+
<entity name="WilliamEspindola\Field\Entity\Collection">
8+
<id name="id" type="integer">
9+
<generator strategy="AUTO" />
10+
</id>
11+
12+
<field name="name" type="string" />
13+
<field name="label" type="string" />
14+
</entity>
15+
</doctrine-mapping>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!-- config/xml/CollectionField.dcm.xml -->
2+
<doctrine-mapping
3+
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd">
6+
7+
<entity name="WilliamEspindola\Field\Entity\CollectionField">
8+
<id name="id" type="integer">
9+
<generator strategy="AUTO" />
10+
</id>
11+
12+
<many-to-one field="field" target-entity="WilliamEspindola\Field\Entity\Field" />
13+
<many-to-one field="collection" target-entity="WilliamEspindola\Field\Entity\Collection" />
14+
</entity>
15+
</doctrine-mapping>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!-- config/xml/Field.dcm.xml -->
2+
<doctrine-mapping
3+
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd">
6+
7+
<entity name="WilliamEspindola\Field\Entity\Field">
8+
<id name="id" type="integer">
9+
<generator strategy="AUTO" />
10+
</id>
11+
12+
<field name="name" type="string" />
13+
<field name="type" type="string" />
14+
<field name="value" type="text" />
15+
<field name="label" type="string" />
16+
</entity>
17+
</doctrine-mapping>

config/xml/option.dcm.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!-- config/xml/Option.dcm.xml -->
2+
<doctrine-mapping
3+
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd">
6+
7+
<entity name="option">
8+
<id name="id" type="integer">
9+
<generator strategy="AUTO" />
10+
</id>
11+
12+
<field name="option" type="string" />
13+
14+
<many-to-one target-entity="WilliamEspindola\Field\Entity\Field" field="field" />
15+
</entity>
16+
</doctrine-mapping>

data/mysql-schema.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ CREATE TABLE IF NOT EXISTS `collection` (
2727
PRIMARY KEY (`id`))
2828
ENGINE = InnoDB;
2929

30-
CREATE TABLE IF NOT EXISTS `collection_field` (
30+
CREATE TABLE IF NOT EXISTS `collectionfield` (
3131
`collection_id` INT NOT NULL,
3232
`field_id` INT NOT NULL,
3333
`id` INT NOT NULL AUTO_INCREMENT,

src/Console/Command/AbstractCommand.php

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
use Symfony\Component\Console\Input\InputInterface;
77
use Symfony\Component\Console\Input\InputOption;
88
use Symfony\Component\Console\Output\OutputInterface;
9-
use Respect\Relational\Mapper;
10-
use Respect\Relational\Db;
9+
use WilliamEspindola\Field\Console\Command\Database\DoctrineStorage;
10+
use WilliamEspindola\Field\Console\Command\Database\RelationalStorage;
1111

1212
abstract class AbstractCommand extends Command
1313
{
@@ -23,7 +23,7 @@ abstract class AbstractCommand extends Command
2323
public function bootstrap(InputInterface $input, OutputInterface $output)
2424
{
2525
if (!$this->getConfig())
26-
$this->loadConfig($input, $output);
26+
$this->locateConfigFile($input);
2727
}
2828

2929
protected function configure()
@@ -65,37 +65,17 @@ protected function instanceConfig($configFilePath)
6565
$this->config = $configArray;
6666
}
6767

68-
/**
69-
* @return Mapper
70-
*/
71-
public function getMapper()
72-
{
73-
$dsn = "{$this->config['driver']}:host={$this->config['host']};dbname={$this->config['dbname']}";
74-
$mapper = new Mapper(new \PDO($dsn, $this->config['user'], $this->config['password']));
75-
$mapper->entityNamespace = '\\WilliamEspindola\\Field\\Entity\\';
76-
77-
return $mapper;
78-
}
79-
80-
/**
81-
* @return Db
82-
*/
83-
public function getDb()
84-
{
85-
$dsn = "{$this->config['driver']}:host={$this->config['host']};dbname={$this->config['dbname']}";
86-
$db = new Db(new \PDO($dsn, $this->config['user'], $this->config['password']));
87-
88-
return $db;
89-
}
90-
91-
protected function loadConfig(InputInterface $input, OutputInterface $output)
68+
public function getConfig()
9269
{
93-
$configFilePath = $this->locateConfigFile($input);
94-
$output->writeln('<info>using config file</info> .' . str_replace(getcwd(), '', realpath($configFilePath)));
70+
return $this->config;
9571
}
9672

97-
public function getConfig()
73+
public function getStorage()
9874
{
99-
return $this->config;
75+
if (class_exists('Doctrine\ORM\Tools\Setup')) {
76+
return new DoctrineStorage($this->getConfig());
77+
} else {
78+
return new RelationalStorage($this->getConfig());
79+
}
10080
}
10181
}

0 commit comments

Comments
 (0)