Initial commit

This commit is contained in:
2020-01-27 08:56:08 +01:00
commit b7525048d6
27129 changed files with 3409855 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="config.xml" server="51.254.220.106//web/" local="131360630400000000" remote="131360630400000000" />
<file name="module.xml" server="51.254.220.106//web/" local="131360630400000000" remote="131360630400000000" />
<file name="routing.xml" server="51.254.220.106//web/" local="131360630400000000" remote="131360630400000000" />
<file name="schema.xml" server="51.254.220.106//web/" local="131360630400000000" remote="131360630400000000" />
<file name="thelia.sql" server="51.254.220.106//web/" local="131360630400000000" remote="131360630400000000" />
</dwsync>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
<loops>
<loop name="keyword_content" class="Keyword\Loop\KeywordContent" />
<loop name="keyword_folder" class="Keyword\Loop\KeywordFolder" />
<loop name="keyword_category" class="Keyword\Loop\KeywordCategory" />
<loop name="keyword_product" class="Keyword\Loop\KeywordProduct" />
<loop name="keyword" class="Keyword\Loop\Keyword" />
<loop name="keyword_group" class="Keyword\Loop\KeywordGroup" />
</loops>
<forms>
<form name="keyword.admin.folder.modification" class="Keyword\Form\KeywordFolderModificationForm"/>
<form name="keyword.admin.content.modification" class="Keyword\Form\KeywordContentModificationForm"/>
<form name="keyword.admin.category.modification" class="Keyword\Form\KeywordCategoryModificationForm"/>
<form name="keyword.admin.product.modification" class="Keyword\Form\KeywordProductModificationForm"/>
<form name="keyword.group.admin.creation" class="Keyword\Form\KeywordGroupCreationForm"/>
<form name="keyword.group.admin.modification" class="Keyword\Form\KeywordGroupModificationForm"/>
<form name="keyword.admin.creation" class="Keyword\Form\KeywordCreationForm"/>
<form name="keyword.admin.modification" class="Keyword\Form\KeywordModificationForm"/>
</forms>
<commands>
<command class="Keyword\Commands\Update"/>
</commands>
<services>
<service id="keyword.action" class="Keyword\Action\Keyword">
<tag name="kernel.event_subscriber"/>
</service>
<service id="keywordGroup.action" class="Keyword\Action\KeywordGroup">
<tag name="kernel.event_subscriber"/>
</service>
<service id="keyword.smarty.plugin" class="Keyword\Smarty\Plugins\Keyword" scope="request">
<argument type="service" id="request"/>
<tag name="thelia.parser.register_plugin"/>
</service>
</services>
</config>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<module>
<fullnamespace>Keyword\Keyword</fullnamespace>
<descriptive locale="fr_FR">
<title>Mots clés</title>
</descriptive>
<descriptive locale="en_US">
<title>Keyword</title>
</descriptive>
<version>2.4.7</version>
<author>
<name>Michaël Espeche</name>
<email>mespeche@openstudio.fr</email>
</author>
<type>classic</type>
<thelia>2.1.0</thelia>
<stability>prod</stability>
</module>

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="admin.keyword.folders.association.update" path="/admin/folders/update/{folder_id}/keyword">
<default key="_controller">Keyword\Controller\Admin\KeywordController::updateKeywordFolderAssociation</default>
<requirement key="folder_id">\d+</requirement>
</route>
<route id="admin.keyword.contents.association.update" path="/admin/content/update/{content_id}/keyword">
<default key="_controller">Keyword\Controller\Admin\KeywordController::updateKeywordContentAssociation</default>
<requirement key="content_id">\d+</requirement>
</route>
<route id="admin.keyword.categories.association.update" path="/admin/categories/update/{category_id}/keyword">
<default key="_controller">Keyword\Controller\Admin\KeywordController::updateKeywordCategoryAssociation</default>
<requirement key="category_id">\d+</requirement>
</route>
<route id="admin.keyword.products.association.update" path="/admin/product/update/{product_id}/keyword">
<default key="_controller">Keyword\Controller\Admin\KeywordController::updateKeywordProductAssociation</default>
<requirement key="product_id">\d+</requirement>
</route>
<route id="admin.keyword.group.update-position" path="/admin/module/Keyword/group/update-position">
<default key="_controller">Keyword\Controller\Admin\KeywordGroupController::updatePositionAction</default>
</route>
<route id="admin.keyword.update-position" path="/admin/module/Keyword/update-position">
<default key="_controller">Keyword\Controller\Admin\KeywordController::updatePositionAction</default>
</route>
<route id="admin.keyword.folder.update-position" path="/admin/module/Keyword/{object}/update-position">
<default key="_controller">Keyword\Controller\Admin\KeywordController::updateObjectPositionAction</default>
<requirement key="object">([a-z]+)</requirement>
</route>
<route id="admin.keyword.update" path="/admin/module/Keyword/update">
<default key="_controller">Keyword\Controller\Admin\KeywordController::updateAction</default>
</route>
<route id="admin.keyword.create" path="/admin/module/Keyword/create">
<default key="_controller">Keyword\Controller\Admin\KeywordController::createAction</default>
</route>
<route id="admin.keyword.delete" path="/admin/module/Keyword/delete">
<default key="_controller">Keyword\Controller\Admin\KeywordController::deleteAction</default>
</route>
<route id="admin.keyword.save" path="/admin/module/Keyword/save">
<default key="_controller">Keyword\Controller\Admin\KeywordController::processUpdateAction</default>
</route>
<route id="admin.keyword.toggle-online" path="/admin/module/Keyword/toggle-online">
<default key="_controller">Keyword\Controller\Admin\KeywordController::setToggleVisibilityAction</default>
</route>
<route id="admin.keyword.view" path="/admin/module/Keyword/view">
<default key="_controller">Keyword\Controller\Admin\KeywordController::viewAction</default>
</route>
<route id="admin.keyword.group.create" path="/admin/module/Keyword/group/create">
<default key="_controller">Keyword\Controller\Admin\KeywordGroupController::createAction</default>
</route>
<route id="admin.keyword.group.update" path="/admin/module/Keyword/group/update">
<default key="_controller">Keyword\Controller\Admin\KeywordGroupController::updateAction</default>
</route>
<route id="admin.keyword.group.save" path="/admin/module/Keyword/group/save">
<default key="_controller">Keyword\Controller\Admin\KeywordGroupController::processUpdateAction</default>
</route>
<route id="admin.keyword.group.view" path="/admin/module/Keyword/group/view">
<default key="_controller">Keyword\Controller\Admin\KeywordGroupController::viewAction</default>
</route>
<route id="admin.keyword.group.delete" path="/admin/module/Keyword/group/delete">
<default key="_controller">Keyword\Controller\Admin\KeywordGroupController::deleteAction</default>
</route>
<route id="admin.keyword.group.toggle-online" path="/admin/module/Keyword/group/toggle-online">
<default key="_controller">Keyword\Controller\Admin\KeywordGroupController::setToggleVisibilityAction</default>
</route>
</routes>

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<database defaultIdMethod="native" name="thelia" >
<!--
See propel documentation on http://propelorm.org for all information about schema file
-->
<table name="keyword_group" namespace="Keyword\Model">
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
<column name="visible" type="TINYINT" />
<column name="position" type="INTEGER" />
<column name="title" size="255" type="VARCHAR" />
<column name="code" size="255" type="VARCHAR" />
<column name="description" type="CLOB" />
<column name="chapo" type="LONGVARCHAR" />
<column name="postscriptum" type="LONGVARCHAR" />
<behavior name="timestampable" />
<behavior name="i18n">
<parameter name="i18n_columns" value="title, description, chapo, postscriptum" />
</behavior>
</table>
<table name="keyword" namespace="Keyword\Model">
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
<column name="keyword_group_id" required="true" type="INTEGER" />
<column name="visible" type="TINYINT" />
<column name="position" type="INTEGER" />
<column name="title" size="255" type="VARCHAR" />
<column name="code" size="255" type="VARCHAR" />
<column name="description" type="CLOB" />
<column name="chapo" type="LONGVARCHAR" />
<column name="postscriptum" type="LONGVARCHAR" />
<foreign-key foreignTable="keyword_group" name="fk_keyword_group_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="keyword_group_id" />
</foreign-key>
<index name="idx_keyword_group_id">
<index-column name="keyword_group_id" />
</index>
<behavior name="timestampable" />
<behavior name="i18n">
<parameter name="i18n_columns" value="title, description, chapo, postscriptum" />
</behavior>
</table>
<table name="content_associated_keyword" namespace="Keyword\Model">
<column name="content_id" primaryKey="true" required="true" type="INTEGER" />
<column name="keyword_id" primaryKey="true" required="true" type="INTEGER" />
<column name="position" required="true" type="INTEGER" />
<foreign-key foreignTable="content" name="fk_content_associated_keyword_content_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="content_id" />
</foreign-key>
<foreign-key foreignTable="keyword" name="fk_content_associated_keyword_keyword_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="keyword_id" />
</foreign-key>
<index name="idx_content_associated_keyword_content_id">
<index-column name="content_id" />
</index>
<index name="idx_content_associated_keyword_keyword_id">
<index-column name="keyword_id" />
</index>
<behavior name="timestampable" />
</table>
<table name="folder_associated_keyword" namespace="Keyword\Model">
<column name="folder_id" primaryKey="true" required="true" type="INTEGER" />
<column name="keyword_id" primaryKey="true" required="true" type="INTEGER" />
<column name="position" required="true" type="INTEGER" />
<foreign-key foreignTable="folder" name="fk_folder_associated_keyword_folder_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="folder_id" />
</foreign-key>
<foreign-key foreignTable="keyword" name="fk_folder_associated_keyword_keyword_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="keyword_id" />
</foreign-key>
<index name="idx_folder_associated_keyword_folder_id">
<index-column name="folder_id" />
</index>
<index name="idx_folder_associated_keyword_keyword_id">
<index-column name="keyword_id" />
</index>
<behavior name="timestampable" />
</table>
<table name="category_associated_keyword" namespace="Keyword\Model">
<column name="category_id" primaryKey="true" required="true" type="INTEGER" />
<column name="keyword_id" primaryKey="true" required="true" type="INTEGER" />
<column name="position" required="true" type="INTEGER" />
<foreign-key foreignTable="category" name="fk_category_associated_keyword_category_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="category_id" />
</foreign-key>
<foreign-key foreignTable="keyword" name="fk_category_associated_keyword_keyword_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="keyword_id" />
</foreign-key>
<index name="idx_category_associated_keyword_category_id">
<index-column name="category_id" />
</index>
<index name="idx_category_associated_keyword_keyword_id">
<index-column name="keyword_id" />
</index>
</table>
<table name="product_associated_keyword" namespace="Keyword\Model">
<column name="product_id" primaryKey="true" required="true" type="INTEGER" />
<column name="keyword_id" primaryKey="true" required="true" type="INTEGER" />
<column name="position" required="true" type="INTEGER" />
<foreign-key foreignTable="product" name="fk_product_associated_keyword_product_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="product_id" />
</foreign-key>
<foreign-key foreignTable="keyword" name="fk_product_associated_keyword_keyword_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="keyword_id" />
</foreign-key>
<index name="idx_product_associated_keyword_product_id">
<index-column name="product_id" />
</index>
<index name="idx_product_associated_keyword_keyword_id">
<index-column name="keyword_id" />
</index>
<behavior name="timestampable" />
</table>
<external-schema filename="local/config/schema.xml" referenceOnly="true" />
</database>

View File

@@ -0,0 +1,200 @@
# This is a fix for InnoDB in MySQL >= 4.1.x
# It "suspends judgement" for fkey relationships until are tables are set.
SET FOREIGN_KEY_CHECKS = 0;
-- ---------------------------------------------------------------------
-- keyword_group
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `keyword_group`;
CREATE TABLE `keyword_group`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`visible` TINYINT,
`position` INTEGER,
`code` VARCHAR(255),
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
-- keyword
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `keyword`;
CREATE TABLE `keyword`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`keyword_group_id` INTEGER NOT NULL,
`visible` TINYINT,
`position` INTEGER,
`code` VARCHAR(255),
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`id`),
INDEX `idx_keyword_group_id` (`keyword_group_id`),
CONSTRAINT `fk_keyword_group_id`
FOREIGN KEY (`keyword_group_id`)
REFERENCES `keyword_group` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
-- content_associated_keyword
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `content_associated_keyword`;
CREATE TABLE `content_associated_keyword`
(
`content_id` INTEGER NOT NULL,
`keyword_id` INTEGER NOT NULL,
`position` INTEGER NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`content_id`,`keyword_id`),
INDEX `idx_content_associated_keyword_content_id` (`content_id`),
INDEX `idx_content_associated_keyword_keyword_id` (`keyword_id`),
CONSTRAINT `fk_content_associated_keyword_content_id`
FOREIGN KEY (`content_id`)
REFERENCES `content` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE,
CONSTRAINT `fk_content_associated_keyword_keyword_id`
FOREIGN KEY (`keyword_id`)
REFERENCES `keyword` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
-- folder_associated_keyword
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `folder_associated_keyword`;
CREATE TABLE `folder_associated_keyword`
(
`folder_id` INTEGER NOT NULL,
`keyword_id` INTEGER NOT NULL,
`position` INTEGER NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`folder_id`,`keyword_id`),
INDEX `idx_folder_associated_keyword_folder_id` (`folder_id`),
INDEX `idx_folder_associated_keyword_keyword_id` (`keyword_id`),
CONSTRAINT `fk_folder_associated_keyword_folder_id`
FOREIGN KEY (`folder_id`)
REFERENCES `folder` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE,
CONSTRAINT `fk_folder_associated_keyword_keyword_id`
FOREIGN KEY (`keyword_id`)
REFERENCES `keyword` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
-- category_associated_keyword
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `category_associated_keyword`;
CREATE TABLE `category_associated_keyword`
(
`category_id` INTEGER NOT NULL,
`keyword_id` INTEGER NOT NULL,
`position` INTEGER NOT NULL,
PRIMARY KEY (`category_id`,`keyword_id`),
INDEX `idx_category_associated_keyword_category_id` (`category_id`),
INDEX `idx_category_associated_keyword_keyword_id` (`keyword_id`),
CONSTRAINT `fk_category_associated_keyword_category_id`
FOREIGN KEY (`category_id`)
REFERENCES `category` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE,
CONSTRAINT `fk_category_associated_keyword_keyword_id`
FOREIGN KEY (`keyword_id`)
REFERENCES `keyword` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
-- product_associated_keyword
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `product_associated_keyword`;
CREATE TABLE `product_associated_keyword`
(
`product_id` INTEGER NOT NULL,
`keyword_id` INTEGER NOT NULL,
`position` INTEGER NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
PRIMARY KEY (`product_id`,`keyword_id`),
INDEX `idx_product_associated_keyword_product_id` (`product_id`),
INDEX `idx_product_associated_keyword_keyword_id` (`keyword_id`),
CONSTRAINT `fk_product_associated_keyword_product_id`
FOREIGN KEY (`product_id`)
REFERENCES `product` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE,
CONSTRAINT `fk_product_associated_keyword_keyword_id`
FOREIGN KEY (`keyword_id`)
REFERENCES `keyword` (`id`)
ON UPDATE RESTRICT
ON DELETE CASCADE
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
-- keyword_group_i18n
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `keyword_group_i18n`;
CREATE TABLE `keyword_group_i18n`
(
`id` INTEGER NOT NULL,
`locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
`postscriptum` TEXT,
PRIMARY KEY (`id`,`locale`),
CONSTRAINT `keyword_group_i18n_FK_1`
FOREIGN KEY (`id`)
REFERENCES `keyword_group` (`id`)
ON DELETE CASCADE
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
-- keyword_i18n
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `keyword_i18n`;
CREATE TABLE `keyword_i18n`
(
`id` INTEGER NOT NULL,
`locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
`postscriptum` TEXT,
PRIMARY KEY (`id`,`locale`),
CONSTRAINT `keyword_i18n_FK_1`
FOREIGN KEY (`id`)
REFERENCES `keyword` (`id`)
ON DELETE CASCADE
) ENGINE=InnoDB;
# This restores the fkey checks, after having unset them earlier
SET FOREIGN_KEY_CHECKS = 1;