Module AdminComment (pour rajout de notes sur les produits, non visibles des clients)
This commit is contained in:
92
local/modules/AdminComment/Action/AdminCommentAction.php
Normal file
92
local/modules/AdminComment/Action/AdminCommentAction.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
|
||||
namespace AdminComment\Action;
|
||||
|
||||
use AdminComment\Events\AdminCommentEvent;
|
||||
use AdminComment\Events\AdminCommentEvents;
|
||||
use AdminComment\Model\AdminComment;
|
||||
use AdminComment\Model\AdminCommentQuery;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
/**
|
||||
* Class AdminCommentAction
|
||||
* @package AdminComment\Action
|
||||
* @author Julien Chanséaume <julien@thelia.net[>
|
||||
*/
|
||||
class AdminCommentAction implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* Returns an array of event names this subscriber wants to listen to.
|
||||
*
|
||||
* The array keys are event names and the value can be:
|
||||
*
|
||||
* * The method name to call (priority defaults to 0)
|
||||
* * An array composed of the method name to call and the priority
|
||||
* * An array of arrays composed of the method names to call and respective
|
||||
* priorities, or 0 if unset
|
||||
*
|
||||
* For instance:
|
||||
*
|
||||
* * array('eventName' => 'methodName')
|
||||
* * array('eventName' => array('methodName', $priority))
|
||||
* * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
|
||||
*
|
||||
* @return array The event names to listen to
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return [
|
||||
AdminCommentEvents::CREATE => ["create", 128],
|
||||
AdminCommentEvents::UPDATE => ["update", 128],
|
||||
AdminCommentEvents::DELETE => ["delete", 128],
|
||||
];
|
||||
}
|
||||
|
||||
public function create(AdminCommentEvent $event)
|
||||
{
|
||||
$adminComment = new AdminComment();
|
||||
$adminComment
|
||||
->setAdminId($event->getAdminId())
|
||||
->setElementKey($event->getElementKey())
|
||||
->setElementId($event->getElementId())
|
||||
->setComment($event->getComment())
|
||||
->save();
|
||||
$event->setAdminComment($adminComment);
|
||||
}
|
||||
|
||||
public function update(AdminCommentEvent $event)
|
||||
{
|
||||
$adminComment = AdminCommentQuery::create()->findPk($event->getId());
|
||||
if (null !== $adminComment) {
|
||||
$adminComment
|
||||
->setComment($event->getComment())
|
||||
->save();
|
||||
|
||||
$event->setAdminComment($adminComment);
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(AdminCommentEvent $event)
|
||||
{
|
||||
$adminComment = AdminCommentQuery::create()->findPk($event->getId());
|
||||
if (null !== $adminComment) {
|
||||
$adminComment
|
||||
->delete();
|
||||
|
||||
$event->setAdminComment($adminComment);
|
||||
}
|
||||
}
|
||||
}
|
||||
34
local/modules/AdminComment/AdminComment.php
Normal file
34
local/modules/AdminComment/AdminComment.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace AdminComment;
|
||||
|
||||
use AdminComment\Model\AdminCommentQuery;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Thelia\Install\Database;
|
||||
use Thelia\Module\BaseModule;
|
||||
|
||||
class AdminComment extends BaseModule
|
||||
{
|
||||
const MESSAGE_DOMAIN = 'admincomment';
|
||||
|
||||
public function postActivation(ConnectionInterface $con = null)
|
||||
{
|
||||
// Schema
|
||||
try {
|
||||
AdminCommentQuery::create()->findOne();
|
||||
} catch (\Exception $ex) {
|
||||
$database = new Database($con->getWrappedConnection());
|
||||
$database->insertSql(null, [__DIR__ . DS . 'Config' . DS . 'thelia.sql']);
|
||||
}
|
||||
}
|
||||
}
|
||||
63
local/modules/AdminComment/Config/config.xml
Normal file
63
local/modules/AdminComment/Config/config.xml
Normal file
@@ -0,0 +1,63 @@
|
||||
<?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="admin_comment" class="AdminComment\Loop\AdminCommentLoop" />
|
||||
</loops>
|
||||
|
||||
<forms>
|
||||
<form name="admin_comment_create_form" class="AdminComment\Form\AdminCommentCreateForm" />
|
||||
<form name="admin_comment_update_form" class="AdminComment\Form\AdminCommentUpdateForm" />
|
||||
</forms>
|
||||
|
||||
<commands>
|
||||
<!--
|
||||
<command class="AdminComment\Command\MySuperCommand" />
|
||||
-->
|
||||
</commands>
|
||||
|
||||
<services>
|
||||
<service id="action.admin_comment" class="AdminComment\Action\AdminCommentAction" scope="request">
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
</service>
|
||||
</services>
|
||||
|
||||
<hooks>
|
||||
<hook id="admincomment.hook" class="AdminComment\Hook\BackHook" scope="request">
|
||||
<tag name="hook.event_listener" event="main.after-content" type="back" />
|
||||
<tag name="hook.event_listener" event="main.footer-js" type="back" />
|
||||
|
||||
<tag name="hook.event_listener" event="category.edit-js" type="back" method="onEditJs" />
|
||||
<tag name="hook.event_listener" event="product.edit-js" type="back" method="onEditJs" />
|
||||
<tag name="hook.event_listener" event="folder.edit-js" type="back" method="onEditJs" />
|
||||
<tag name="hook.event_listener" event="content.edit-js" type="back" method="onEditJs" />
|
||||
<tag name="hook.event_listener" event="customer.edit-js" type="back" method="onEditJs" />
|
||||
<tag name="hook.event_listener" event="order.edit-js" type="back" method="onEditJs" />
|
||||
<tag name="hook.event_listener" event="coupon.update-js" type="back" method="onEditJs" />
|
||||
|
||||
<tag name="hook.event_listener" event="category.tab" type="back" method="onEditTab" />
|
||||
<tag name="hook.event_listener" event="product.tab" type="back" method="onEditTab" />
|
||||
<tag name="hook.event_listener" event="folder.tab" type="back" method="onEditTab" />
|
||||
<tag name="hook.event_listener" event="content.tab" type="back" method="onEditTab" />
|
||||
<tag name="hook.event_listener" event="order.tab" type="back" method="onEditTab" />
|
||||
|
||||
<tag name="hook.event_listener" event="orders.table-header" type="back" method="onListHeader" />
|
||||
<tag name="hook.event_listener" event="orders.table-row" type="back" method="onListRow" />
|
||||
</hook>
|
||||
</hooks>
|
||||
|
||||
<!--
|
||||
<exports>
|
||||
|
||||
</exports>
|
||||
-->
|
||||
|
||||
<!--
|
||||
<imports>
|
||||
|
||||
</imports>
|
||||
-->
|
||||
</config>
|
||||
24
local/modules/AdminComment/Config/module.xml
Normal file
24
local/modules/AdminComment/Config/module.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module xmlns="http://thelia.net/schema/dic/module"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_1.xsd">
|
||||
<fullnamespace>AdminComment\AdminComment</fullnamespace>
|
||||
<descriptive locale="en_US">
|
||||
<title>Admin Comments</title>
|
||||
</descriptive>
|
||||
<descriptive locale="fr_FR">
|
||||
<title>Commentaires Admin</title>
|
||||
</descriptive>
|
||||
<languages>
|
||||
<language>en_US</language>
|
||||
<language>fr_FR</language>
|
||||
</languages>
|
||||
<version>1.1.1</version>
|
||||
<author>
|
||||
<name>Julien Chanséaume</name>
|
||||
<email>julien@thelia.net</email>
|
||||
</author>
|
||||
<type>classic</type>
|
||||
<thelia>2.1.0</thelia>
|
||||
<stability>other</stability>
|
||||
</module>
|
||||
23
local/modules/AdminComment/Config/routing.xml
Normal file
23
local/modules/AdminComment/Config/routing.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?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">
|
||||
|
||||
<!-- back -->
|
||||
<route id="admincomment.admin.list" path="/admin/module/AdminComment/list/{key}/{id}" methods="get">
|
||||
<default key="_controller">AdminComment:AdminComment:list</default>
|
||||
<requirement key="key">.+</requirement>
|
||||
<requirement key="id">\d+</requirement>
|
||||
</route>
|
||||
<route id="admincomment.admin.create" path="/admin/module/AdminComment/create" methods="post">
|
||||
<default key="_controller">AdminComment:AdminComment:create</default>
|
||||
</route>
|
||||
<route id="admincomment.admin.save" path="/admin/module/AdminComment/save" methods="post">
|
||||
<default key="_controller">AdminComment:AdminComment:save</default>
|
||||
</route>
|
||||
<route id="admincomment.admin.delete" path="/admin/module/AdminComment/delete" methods="post">
|
||||
<default key="_controller">AdminComment:AdminComment:delete</default>
|
||||
</route>
|
||||
|
||||
</routes>
|
||||
20
local/modules/AdminComment/Config/schema.xml
Normal file
20
local/modules/AdminComment/Config/schema.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<database defaultIdMethod="native" name="thelia"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="../../../../core/vendor/propel/propel/resources/xsd/database.xsd" >
|
||||
|
||||
<table name="admin_comment" namespace="AdminComment\Model">
|
||||
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||
<column name="admin_id" type="INTEGER" required="false" />
|
||||
<column name="comment" type="LONGVARCHAR" />
|
||||
<column name="element_key" required="true" size="255" type="VARCHAR" />
|
||||
<column name="element_id" required="true" type="INTEGER" />
|
||||
|
||||
<foreign-key foreignTable="admin" name="fk_admin_comment_admin_id" onDelete="SET NULL" onUpdate="RESTRICT">
|
||||
<reference foreign="id" local="admin_id" />
|
||||
</foreign-key>
|
||||
<behavior name="timestampable" />
|
||||
</table>
|
||||
|
||||
<external-schema filename="local/config/schema.xml" referenceOnly="true" />
|
||||
</database>
|
||||
2
local/modules/AdminComment/Config/sqldb.map
Normal file
2
local/modules/AdminComment/Config/sqldb.map
Normal file
@@ -0,0 +1,2 @@
|
||||
# Sqlfile -> Database map
|
||||
thelia.sql=thelia
|
||||
31
local/modules/AdminComment/Config/thelia.sql
Normal file
31
local/modules/AdminComment/Config/thelia.sql
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
# 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;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- admin_comment
|
||||
-- ---------------------------------------------------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `admin_comment`;
|
||||
|
||||
CREATE TABLE `admin_comment`
|
||||
(
|
||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`admin_id` INTEGER,
|
||||
`comment` TEXT,
|
||||
`element_key` VARCHAR(255) NOT NULL,
|
||||
`element_id` INTEGER NOT NULL,
|
||||
`created_at` DATETIME,
|
||||
`updated_at` DATETIME,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `FI_admin_comment_admin_id` (`admin_id`),
|
||||
CONSTRAINT `fk_admin_comment_admin_id`
|
||||
FOREIGN KEY (`admin_id`)
|
||||
REFERENCES `admin` (`id`)
|
||||
ON UPDATE RESTRICT
|
||||
ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
# This restores the fkey checks, after having unset them earlier
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
197
local/modules/AdminComment/Controller/AdminCommentController.php
Normal file
197
local/modules/AdminComment/Controller/AdminCommentController.php
Normal file
@@ -0,0 +1,197 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
|
||||
namespace AdminComment\Controller;
|
||||
|
||||
use AdminComment\AdminComment;
|
||||
use AdminComment\Events\AdminCommentEvent;
|
||||
use AdminComment\Events\AdminCommentEvents;
|
||||
use AdminComment\Model\AdminCommentQuery;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Thelia\Controller\Admin\BaseAdminController;
|
||||
use Thelia\Core\Security\AccessManager;
|
||||
use Thelia\Core\Security\Resource\AdminResources;
|
||||
use Thelia\Form\Exception\FormValidationException;
|
||||
use Thelia\Tools\DateTimeFormat;
|
||||
|
||||
/**
|
||||
* Class AdminCommentController
|
||||
* @package AdminComment\Controller
|
||||
* @author Julien Chanséaume <julien@thelia.net[>
|
||||
*/
|
||||
class AdminCommentController extends BaseAdminController
|
||||
{
|
||||
|
||||
public function listAction($key, $id)
|
||||
{
|
||||
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::VIEW);
|
||||
if (null !== $response) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$comments = AdminCommentQuery::create()
|
||||
->filterByElementKey($key)
|
||||
->filterByElementId($id)
|
||||
->orderByCreatedAt(Criteria::DESC)
|
||||
->find();
|
||||
|
||||
$data = [];
|
||||
foreach ($comments as $comment) {
|
||||
$data[] = $this->mapCommentObject($comment);
|
||||
}
|
||||
|
||||
return $this->jsonResponse(
|
||||
json_encode(
|
||||
[
|
||||
'success' => true,
|
||||
'message' => '',
|
||||
'data' => $data
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private function mapCommentObject(\AdminComment\Model\AdminComment $comment)
|
||||
{
|
||||
$format = DateTimeFormat::getInstance($this->getRequest())
|
||||
->getFormat();
|
||||
|
||||
$data = [
|
||||
'id' => $comment->getId(),
|
||||
'date' => $comment->getCreatedAt($format),
|
||||
'admin' => (null !== $comment->getAdmin())
|
||||
? $comment->getAdmin()->getFirstname() . ' ' . $comment->getAdmin()->getLastname()
|
||||
: '',
|
||||
'comment' => $comment->getComment(),
|
||||
'canChange' => $this->canChange($comment)
|
||||
];
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function canChange(\AdminComment\Model\AdminComment $comment)
|
||||
{
|
||||
$user = $this->getSecurityContext()->getAdminUser();
|
||||
|
||||
if ($comment->getAdminId() === $user->getId()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($user->getPermissions() === AdminResources::SUPERADMINISTRATOR) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function createAction()
|
||||
{
|
||||
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::CREATE);
|
||||
if (null !== $response) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$responseData = $this->createOrUpdate(
|
||||
'admin_comment_create_form',
|
||||
AdminCommentEvents::CREATE
|
||||
);
|
||||
|
||||
return $this->jsonResponse(json_encode($responseData));
|
||||
}
|
||||
|
||||
protected function createOrUpdate($formId, $eventName)
|
||||
{
|
||||
$this->checkXmlHttpRequest();
|
||||
|
||||
$responseData = [
|
||||
"success" => false,
|
||||
"message" => ''
|
||||
];
|
||||
|
||||
$form = $this->createForm($formId);
|
||||
|
||||
try {
|
||||
$formData = $this->validateForm($form);
|
||||
|
||||
$event = new AdminCommentEvent();
|
||||
$event->bindForm($formData);
|
||||
|
||||
$this->dispatch($eventName, $event);
|
||||
|
||||
$responseData['success'] = true;
|
||||
$responseData['message'] = 'ok';
|
||||
$responseData['data'] = $this->mapCommentObject($event->getAdminComment());
|
||||
} catch (FormValidationException $e) {
|
||||
$responseData['message'] = $e->getMessage();
|
||||
} catch (\Exception $e) {
|
||||
$responseData['message'] = $e->getMessage();
|
||||
}
|
||||
|
||||
return $responseData;
|
||||
}
|
||||
|
||||
public function saveAction()
|
||||
{
|
||||
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::UPDATE);
|
||||
if (null !== $response) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$responseData = $this->createOrUpdate(
|
||||
'admin_comment_update_form',
|
||||
AdminCommentEvents::UPDATE
|
||||
);
|
||||
|
||||
return $this->jsonResponse(json_encode($responseData));
|
||||
}
|
||||
|
||||
public function deleteAction()
|
||||
{
|
||||
$response = $this->checkAuth([], [AdminComment::getModuleCode()], AccessManager::DELETE);
|
||||
if (null !== $response) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$this->checkXmlHttpRequest();
|
||||
|
||||
$responseData = [
|
||||
"success" => false,
|
||||
"message" => ''
|
||||
];
|
||||
|
||||
try {
|
||||
$id = intval($this->getRequest()->request->get('id'));
|
||||
|
||||
if (0 === $id) {
|
||||
throw new \RuntimeException(
|
||||
$this->getTranslator()->trans('Unknown comment', [], AdminComment::MESSAGE_DOMAIN)
|
||||
);
|
||||
}
|
||||
|
||||
$event = new AdminCommentEvent();
|
||||
$event->setId($id);
|
||||
$this->dispatch(AdminCommentEvents::DELETE, $event);
|
||||
|
||||
if (null === $event->getAdminComment()) {
|
||||
throw new \RuntimeException(
|
||||
$this->getTranslator()->trans('Unknown comment', [], AdminComment::MESSAGE_DOMAIN)
|
||||
);
|
||||
}
|
||||
$responseData['success'] = true;
|
||||
} catch (\Exception $ex) {
|
||||
$responseData['message'] = $ex->getMessage();
|
||||
}
|
||||
|
||||
return $this->jsonResponse(json_encode($responseData));
|
||||
}
|
||||
}
|
||||
151
local/modules/AdminComment/Events/AdminCommentEvent.php
Normal file
151
local/modules/AdminComment/Events/AdminCommentEvent.php
Normal file
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
|
||||
namespace AdminComment\Events;
|
||||
|
||||
use AdminComment\Model\AdminComment;
|
||||
use Thelia\Core\Event\ActionEvent;
|
||||
|
||||
/**
|
||||
* Class AdminCommentEvent
|
||||
* @package AdminComment\Events
|
||||
* @author Julien Chanséaume <julien@thelia.net[>
|
||||
*/
|
||||
class AdminCommentEvent extends ActionEvent
|
||||
{
|
||||
/** @var integer */
|
||||
protected $id;
|
||||
|
||||
/** @var integer */
|
||||
protected $admin_id;
|
||||
|
||||
/** @var string */
|
||||
protected $element_key;
|
||||
|
||||
/** @var integer */
|
||||
protected $element_id;
|
||||
|
||||
/** @var string */
|
||||
protected $comment;
|
||||
|
||||
/** @var AdminComment */
|
||||
protected $adminComment;
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getAdminId()
|
||||
{
|
||||
return $this->admin_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $admin_id
|
||||
*/
|
||||
public function setAdminId($admin_id)
|
||||
{
|
||||
$this->admin_id = $admin_id;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AdminComment
|
||||
*/
|
||||
public function getAdminComment()
|
||||
{
|
||||
return $this->adminComment;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AdminComment $adminComment
|
||||
*/
|
||||
public function setAdminComment($adminComment)
|
||||
{
|
||||
$this->adminComment = $adminComment;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getComment()
|
||||
{
|
||||
return $this->comment;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $comment
|
||||
*/
|
||||
public function setComment($comment)
|
||||
{
|
||||
$this->comment = $comment;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getElementId()
|
||||
{
|
||||
return $this->element_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $element_id
|
||||
*/
|
||||
public function setElementId($element_id)
|
||||
{
|
||||
$this->element_id = $element_id;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getElementKey()
|
||||
{
|
||||
return $this->element_key;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $element_key
|
||||
*/
|
||||
public function setElementKey($element_key)
|
||||
{
|
||||
$this->element_key = $element_key;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $id
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
26
local/modules/AdminComment/Events/AdminCommentEvents.php
Normal file
26
local/modules/AdminComment/Events/AdminCommentEvents.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
|
||||
namespace AdminComment\Events;
|
||||
|
||||
/**
|
||||
* Class AdminCommentEvents
|
||||
* @package AdminComment\Events
|
||||
* @author Julien Chanséaume <julien@thelia.net[>
|
||||
*/
|
||||
class AdminCommentEvents
|
||||
{
|
||||
const CREATE = "action.admin_comment.create";
|
||||
const UPDATE = "action.admin_comment.update";
|
||||
const DELETE = "action.admin_comment.delete";
|
||||
}
|
||||
113
local/modules/AdminComment/Form/AdminCommentCreateForm.php
Normal file
113
local/modules/AdminComment/Form/AdminCommentCreateForm.php
Normal file
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
|
||||
namespace AdminComment\Form;
|
||||
|
||||
use AdminComment\AdminComment;
|
||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
use Thelia\Form\BaseForm;
|
||||
|
||||
/**
|
||||
* Class AdminCommentCreateForm
|
||||
* @package AdminComment\Form
|
||||
* @author Julien Chanséaume <julien@thelia.net[>
|
||||
*/
|
||||
class AdminCommentCreateForm extends BaseForm
|
||||
{
|
||||
/** @var Translator $translator */
|
||||
protected $translator;
|
||||
|
||||
/**
|
||||
* @return string the name of you form. This name must be unique
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return 'admin_comment_create';
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* in this function you add all the fields you need for your Form.
|
||||
* Form this you have to call add method on $this->formBuilder attribute :
|
||||
*
|
||||
* $this->formBuilder->add("name", "text")
|
||||
* ->add("email", "email", array(
|
||||
* "attr" => array(
|
||||
* "class" => "field"
|
||||
* ),
|
||||
* "label" => "email",
|
||||
* "constraints" => array(
|
||||
* new \Symfony\Component\Validator\Constraints\NotBlank()
|
||||
* )
|
||||
* )
|
||||
* )
|
||||
* ->add('age', 'integer');
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
protected function buildForm()
|
||||
{
|
||||
$this
|
||||
->formBuilder
|
||||
->add(
|
||||
"admin_id",
|
||||
"integer",
|
||||
[
|
||||
"label" => $this->trans("Admin Id"),
|
||||
"constraints" => [
|
||||
new NotBlank()
|
||||
]
|
||||
]
|
||||
)
|
||||
->add(
|
||||
"element_key",
|
||||
"text",
|
||||
[
|
||||
"label" => $this->trans("Element key"),
|
||||
"constraints" => [
|
||||
new NotBlank()
|
||||
]
|
||||
]
|
||||
)
|
||||
->add(
|
||||
"element_id",
|
||||
"number",
|
||||
[
|
||||
"label" => $this->trans("Element id"),
|
||||
"constraints" => [
|
||||
new NotBlank()
|
||||
]
|
||||
]
|
||||
)
|
||||
->add(
|
||||
"comment",
|
||||
"textarea",
|
||||
[
|
||||
"label" => $this->trans("Comment"),
|
||||
"constraints" => [
|
||||
new NotBlank()
|
||||
]
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
protected function trans($id, $parameters = [])
|
||||
{
|
||||
if (null === $this->translator) {
|
||||
$this->translator = Translator::getInstance();
|
||||
}
|
||||
|
||||
return $this->translator->trans($id, $parameters, AdminComment::MESSAGE_DOMAIN);
|
||||
}
|
||||
}
|
||||
93
local/modules/AdminComment/Form/AdminCommentUpdateForm.php
Normal file
93
local/modules/AdminComment/Form/AdminCommentUpdateForm.php
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
|
||||
namespace AdminComment\Form;
|
||||
|
||||
use AdminComment\AdminComment;
|
||||
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
use Thelia\Form\BaseForm;
|
||||
|
||||
/**
|
||||
* Class AdminCommentCreateForm
|
||||
* @package AdminComment\Form
|
||||
* @author Julien Chanséaume <julien@thelia.net[>
|
||||
*/
|
||||
class AdminCommentUpdateForm extends BaseForm
|
||||
{
|
||||
/** @var Translator $translator */
|
||||
protected $translator;
|
||||
|
||||
protected function trans($id, $parameters = [])
|
||||
{
|
||||
if (null === $this->translator) {
|
||||
$this->translator = Translator::getInstance();
|
||||
}
|
||||
|
||||
return $this->translator->trans($id, $parameters, AdminComment::MESSAGE_DOMAIN);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* in this function you add all the fields you need for your Form.
|
||||
* Form this you have to call add method on $this->formBuilder attribute :
|
||||
*
|
||||
* $this->formBuilder->add("name", "text")
|
||||
* ->add("email", "email", array(
|
||||
* "attr" => array(
|
||||
* "class" => "field"
|
||||
* ),
|
||||
* "label" => "email",
|
||||
* "constraints" => array(
|
||||
* new \Symfony\Component\Validator\Constraints\NotBlank()
|
||||
* )
|
||||
* )
|
||||
* )
|
||||
* ->add('age', 'integer');
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
protected function buildForm()
|
||||
{
|
||||
$this
|
||||
->formBuilder
|
||||
->add(
|
||||
"id",
|
||||
"integer",
|
||||
[
|
||||
"label" => $this->trans("Comment Id"),
|
||||
"constraints" => [
|
||||
new NotBlank()
|
||||
]
|
||||
]
|
||||
)
|
||||
->add(
|
||||
"comment",
|
||||
"textarea",
|
||||
[
|
||||
"label" => $this->trans("Comment"),
|
||||
"constraints" => [
|
||||
new NotBlank()
|
||||
]
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string the name of you form. This name must be unique
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return 'admin_comment_update';
|
||||
}
|
||||
}
|
||||
167
local/modules/AdminComment/Hook/BackHook.php
Normal file
167
local/modules/AdminComment/Hook/BackHook.php
Normal file
@@ -0,0 +1,167 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
|
||||
namespace AdminComment\Hook;
|
||||
|
||||
use AdminComment\AdminComment;
|
||||
use AdminComment\Model\AdminCommentQuery;
|
||||
use Thelia\Core\Event\Hook\HookRenderBlockEvent;
|
||||
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||
use Thelia\Core\Hook\BaseHook;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
|
||||
/**
|
||||
* Class BackHook
|
||||
* @package AdminComment\Hook
|
||||
* @author Julien Chanséaume <julien@thelia.net[>
|
||||
*/
|
||||
class BackHook extends baseHook
|
||||
{
|
||||
|
||||
public function onMainAfterContent(HookRenderEvent $event)
|
||||
{
|
||||
$event->add(
|
||||
$this->render('main-after-content.html')
|
||||
);
|
||||
}
|
||||
|
||||
public function onMainFooterJs(HookRenderEvent $event)
|
||||
{
|
||||
$event->add(
|
||||
$this->render('main-footer-js.html')
|
||||
);
|
||||
}
|
||||
|
||||
public function onEditJs(HookRenderEvent $event)
|
||||
{
|
||||
$params = $this->getParameters($event);
|
||||
|
||||
if (!empty($params)) {
|
||||
$event->add(
|
||||
$this->render(
|
||||
'edit-js.html',
|
||||
$params
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function onEditTab(HookRenderBlockEvent $event)
|
||||
{
|
||||
$params = $this->getTabParameters($event);
|
||||
|
||||
$count = AdminCommentQuery::create()
|
||||
->filterByElementKey($params['key'])
|
||||
->filterByElementId($event->getArgument('id'))
|
||||
->count();
|
||||
|
||||
|
||||
$event->add(
|
||||
[
|
||||
"id" => 'admin-comment',
|
||||
"title" => Translator::getInstance()->trans("Comment (%count)", ['%count' => $count], AdminComment::MESSAGE_DOMAIN),
|
||||
"content" => ""
|
||||
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function onListHeader(HookRenderEvent $event)
|
||||
{
|
||||
$event->add("<td class='text-center'>".Translator::getInstance()->trans('Comment', [], AdminComment::MESSAGE_DOMAIN)."</td>");
|
||||
}
|
||||
|
||||
public function onListRow(HookRenderEvent $event)
|
||||
{
|
||||
$key = null;
|
||||
|
||||
if (false !== strpos($event->getName(), 'orders.table-row')) {
|
||||
$key = 'order';
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
|
||||
if ($key) {
|
||||
$count = AdminCommentQuery::create()
|
||||
->filterByElementKey($key)
|
||||
->filterByElementId($event->getArgument($key.'_id'))
|
||||
->count();
|
||||
|
||||
}
|
||||
|
||||
$counter = "";
|
||||
|
||||
if ($count > 0) {
|
||||
$counter = "<span class='badge' style='background-color: #f39922'>$count</span>";
|
||||
}
|
||||
|
||||
$event->add("<td class='text-center'>$counter</td>");
|
||||
}
|
||||
|
||||
protected function getParameters(HookRenderEvent $event)
|
||||
{
|
||||
$out = [];
|
||||
|
||||
$authorizedHook = [
|
||||
'category.edit-js',
|
||||
'product.edit-js',
|
||||
'folder.edit-js',
|
||||
'content.edit-js',
|
||||
'customer.edit-js',
|
||||
'order.edit-js',
|
||||
'coupon.update-js'
|
||||
];
|
||||
|
||||
foreach ($authorizedHook as $hookName) {
|
||||
if (false !== strpos($event->getName(), $hookName)) {
|
||||
$key = explode('.', $hookName)[0];
|
||||
$id = intval($event->getArgument($key . '_id'));
|
||||
// try to get from url
|
||||
if (0 === $id) {
|
||||
$id = intval($this->getRequest()->query->get($key . '_id', 0));
|
||||
}
|
||||
if (0 !== $id) {
|
||||
$out = [
|
||||
'key' => $key,
|
||||
'id' => $id
|
||||
];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
protected function getTabParameters(HookRenderBlockEvent $event)
|
||||
{
|
||||
$out = [];
|
||||
|
||||
$authorizedHook = [
|
||||
'category.tab',
|
||||
'product.tab',
|
||||
'folder.tab',
|
||||
'content.tab',
|
||||
'order.tab'
|
||||
];
|
||||
|
||||
foreach ($authorizedHook as $hookName) {
|
||||
if (false !== strpos($event->getName(), $hookName)) {
|
||||
$key = explode('.', $hookName)[0];
|
||||
$out['key'] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'Admin Comments' => 'Admin Comments',
|
||||
'Delete this comment' => 'Delete this comment',
|
||||
'Edit this comment' => 'Edit this comment',
|
||||
'Message' => 'Message',
|
||||
'Save' => 'Save',
|
||||
);
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'Admin Comments' => 'Commentaires Admin',
|
||||
'Delete this comment' => 'Supprimer le commentaire',
|
||||
'Edit this comment' => 'Modifier ce commentaire',
|
||||
'Message' => 'Message',
|
||||
'Save' => 'Enregistrer',
|
||||
);
|
||||
10
local/modules/AdminComment/I18n/en_US.php
Normal file
10
local/modules/AdminComment/I18n/en_US.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'Admin Id' => 'Admin Id',
|
||||
'Comment' => 'Comment',
|
||||
'Comment Id' => 'Comment Id',
|
||||
'Element id' => 'Element id',
|
||||
'Element key' => 'Element key',
|
||||
'Unknown comment' => 'Unknown comment',
|
||||
);
|
||||
11
local/modules/AdminComment/I18n/fr_FR.php
Normal file
11
local/modules/AdminComment/I18n/fr_FR.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'Admin Id' => 'Id Admin',
|
||||
'Comment' => 'Commentaire',
|
||||
'Comment (%count)' => 'Commentaires (%count)',
|
||||
'Comment Id' => 'Id commentaire',
|
||||
'Element id' => 'Id de l\'élément',
|
||||
'Element key' => 'Clé de l\'élément',
|
||||
'Unknown comment' => 'Commentaire inconnu',
|
||||
);
|
||||
166
local/modules/AdminComment/LICENSE
Normal file
166
local/modules/AdminComment/LICENSE
Normal file
@@ -0,0 +1,166 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
|
||||
117
local/modules/AdminComment/Loop/AdminCommentLoop.php
Normal file
117
local/modules/AdminComment/Loop/AdminCommentLoop.php
Normal file
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdminComment\Loop;
|
||||
|
||||
|
||||
use AdminComment\Model\AdminComment;
|
||||
use AdminComment\Model\AdminCommentQuery;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Thelia\Core\Template\Element\BaseLoop;
|
||||
use Thelia\Core\Template\Element\LoopResult;
|
||||
use Thelia\Core\Template\Element\LoopResultRow;
|
||||
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
|
||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||
use Thelia\Type;
|
||||
|
||||
class AdminCommentLoop extends BaseLoop implements PropelSearchLoopInterface
|
||||
{
|
||||
protected function getArgDefinitions()
|
||||
{
|
||||
return new ArgumentCollection(
|
||||
Argument::createIntListTypeArgument('id'),
|
||||
Argument::createAlphaNumStringTypeArgument('element_key'),
|
||||
Argument::createIntListTypeArgument('element_id'),
|
||||
new Argument(
|
||||
'order',
|
||||
new Type\TypeCollection(
|
||||
new Type\EnumListType(
|
||||
[
|
||||
'id',
|
||||
'id_reverse',
|
||||
'created',
|
||||
'created_reverse',
|
||||
'updated',
|
||||
'updated_reverse'
|
||||
]
|
||||
)
|
||||
),
|
||||
'manual'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function buildModelCriteria()
|
||||
{
|
||||
$search = AdminCommentQuery::create();
|
||||
|
||||
$id = $this->getId();
|
||||
if (null !== $id) {
|
||||
$search->filterById($id, Criteria::IN);
|
||||
}
|
||||
|
||||
$elementKey = $this->getElementKey();
|
||||
if (null !== $elementKey) {
|
||||
$search->filterByElementKey($elementKey, Criteria::IN);
|
||||
}
|
||||
|
||||
$elementId = $this->getElementId();
|
||||
if (null !== $elementId) {
|
||||
$search->filterByElementId($elementId, Criteria::IN);
|
||||
}
|
||||
|
||||
$orders = $this->getOrder();
|
||||
if (null !== $orders) {
|
||||
foreach ($orders as $order) {
|
||||
switch ($order) {
|
||||
case "id":
|
||||
$search->orderById(Criteria::ASC);
|
||||
break;
|
||||
case "id_reverse":
|
||||
$search->orderById(Criteria::DESC);
|
||||
break;
|
||||
case "created":
|
||||
$search->addAscendingOrderByColumn('created_at');
|
||||
break;
|
||||
case "created_reverse":
|
||||
$search->addDescendingOrderByColumn('created_at');
|
||||
break;
|
||||
case "updated":
|
||||
$search->addAscendingOrderByColumn('updated_at');
|
||||
break;
|
||||
case "updated_reverse":
|
||||
$search->addDescendingOrderByColumn('updated_at');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $search;
|
||||
}
|
||||
|
||||
public function parseResults(LoopResult $loopResult)
|
||||
{
|
||||
/** @var AdminComment $comment */
|
||||
foreach ($loopResult->getResultDataCollection() as $comment) {
|
||||
$loopResultRow = new LoopResultRow($comment);
|
||||
$admin = $comment->getAdmin();
|
||||
$adminName = $admin ? $admin->getFirstname().' '.$admin->getLastname() : "";
|
||||
$loopResultRow
|
||||
->set('ID', $comment->getId())
|
||||
->set('ADMIN_ID', $comment->getAdminId())
|
||||
->set('ADMIN_NAME', $adminName)
|
||||
->set('COMMENT', $comment->getComment())
|
||||
->set('ELEMENT_KEY', $comment->getElementKey())
|
||||
->set('ELEMENT_ID', $comment->getElementId())
|
||||
->set('CREATED_AT', $comment->getCreatedAt())
|
||||
->set('UPDATED_AT', $comment->getUpdatedAt());
|
||||
|
||||
$this->addOutputFields($loopResultRow, $comment);
|
||||
|
||||
$loopResult->addRow($loopResultRow);
|
||||
}
|
||||
|
||||
return $loopResult;
|
||||
}
|
||||
}
|
||||
10
local/modules/AdminComment/Model/AdminComment.php
Normal file
10
local/modules/AdminComment/Model/AdminComment.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace AdminComment\Model;
|
||||
|
||||
use AdminComment\Model\Base\AdminComment as BaseAdminComment;
|
||||
|
||||
class AdminComment extends BaseAdminComment
|
||||
{
|
||||
|
||||
}
|
||||
21
local/modules/AdminComment/Model/AdminCommentQuery.php
Normal file
21
local/modules/AdminComment/Model/AdminCommentQuery.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace AdminComment\Model;
|
||||
|
||||
use AdminComment\Model\Base\AdminCommentQuery as BaseAdminCommentQuery;
|
||||
|
||||
|
||||
/**
|
||||
* Skeleton subclass for performing query and update operations on the 'admin_comment' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* You should add additional methods to this class to meet the
|
||||
* application requirements. This class will only be generated as
|
||||
* long as it does not already exist in the output directory.
|
||||
*
|
||||
*/
|
||||
class AdminCommentQuery extends BaseAdminCommentQuery
|
||||
{
|
||||
|
||||
} // AdminCommentQuery
|
||||
1537
local/modules/AdminComment/Model/Base/AdminComment.php
Normal file
1537
local/modules/AdminComment/Model/Base/AdminComment.php
Normal file
File diff suppressed because it is too large
Load Diff
745
local/modules/AdminComment/Model/Base/AdminCommentQuery.php
Normal file
745
local/modules/AdminComment/Model/Base/AdminCommentQuery.php
Normal file
@@ -0,0 +1,745 @@
|
||||
<?php
|
||||
|
||||
namespace AdminComment\Model\Base;
|
||||
|
||||
use \Exception;
|
||||
use \PDO;
|
||||
use AdminComment\Model\AdminComment as ChildAdminComment;
|
||||
use AdminComment\Model\AdminCommentQuery as ChildAdminCommentQuery;
|
||||
use AdminComment\Model\Map\AdminCommentTableMap;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||
use Propel\Runtime\Collection\Collection;
|
||||
use Propel\Runtime\Collection\ObjectCollection;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Thelia\Model\Admin;
|
||||
|
||||
/**
|
||||
* Base class that represents a query for the 'admin_comment' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @method ChildAdminCommentQuery orderById($order = Criteria::ASC) Order by the id column
|
||||
* @method ChildAdminCommentQuery orderByAdminId($order = Criteria::ASC) Order by the admin_id column
|
||||
* @method ChildAdminCommentQuery orderByComment($order = Criteria::ASC) Order by the comment column
|
||||
* @method ChildAdminCommentQuery orderByElementKey($order = Criteria::ASC) Order by the element_key column
|
||||
* @method ChildAdminCommentQuery orderByElementId($order = Criteria::ASC) Order by the element_id column
|
||||
* @method ChildAdminCommentQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
|
||||
* @method ChildAdminCommentQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
|
||||
*
|
||||
* @method ChildAdminCommentQuery groupById() Group by the id column
|
||||
* @method ChildAdminCommentQuery groupByAdminId() Group by the admin_id column
|
||||
* @method ChildAdminCommentQuery groupByComment() Group by the comment column
|
||||
* @method ChildAdminCommentQuery groupByElementKey() Group by the element_key column
|
||||
* @method ChildAdminCommentQuery groupByElementId() Group by the element_id column
|
||||
* @method ChildAdminCommentQuery groupByCreatedAt() Group by the created_at column
|
||||
* @method ChildAdminCommentQuery groupByUpdatedAt() Group by the updated_at column
|
||||
*
|
||||
* @method ChildAdminCommentQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||
* @method ChildAdminCommentQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||
* @method ChildAdminCommentQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||
*
|
||||
* @method ChildAdminCommentQuery leftJoinAdmin($relationAlias = null) Adds a LEFT JOIN clause to the query using the Admin relation
|
||||
* @method ChildAdminCommentQuery rightJoinAdmin($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Admin relation
|
||||
* @method ChildAdminCommentQuery innerJoinAdmin($relationAlias = null) Adds a INNER JOIN clause to the query using the Admin relation
|
||||
*
|
||||
* @method ChildAdminComment findOne(ConnectionInterface $con = null) Return the first ChildAdminComment matching the query
|
||||
* @method ChildAdminComment findOneOrCreate(ConnectionInterface $con = null) Return the first ChildAdminComment matching the query, or a new ChildAdminComment object populated from the query conditions when no match is found
|
||||
*
|
||||
* @method ChildAdminComment findOneById(int $id) Return the first ChildAdminComment filtered by the id column
|
||||
* @method ChildAdminComment findOneByAdminId(int $admin_id) Return the first ChildAdminComment filtered by the admin_id column
|
||||
* @method ChildAdminComment findOneByComment(string $comment) Return the first ChildAdminComment filtered by the comment column
|
||||
* @method ChildAdminComment findOneByElementKey(string $element_key) Return the first ChildAdminComment filtered by the element_key column
|
||||
* @method ChildAdminComment findOneByElementId(int $element_id) Return the first ChildAdminComment filtered by the element_id column
|
||||
* @method ChildAdminComment findOneByCreatedAt(string $created_at) Return the first ChildAdminComment filtered by the created_at column
|
||||
* @method ChildAdminComment findOneByUpdatedAt(string $updated_at) Return the first ChildAdminComment filtered by the updated_at column
|
||||
*
|
||||
* @method array findById(int $id) Return ChildAdminComment objects filtered by the id column
|
||||
* @method array findByAdminId(int $admin_id) Return ChildAdminComment objects filtered by the admin_id column
|
||||
* @method array findByComment(string $comment) Return ChildAdminComment objects filtered by the comment column
|
||||
* @method array findByElementKey(string $element_key) Return ChildAdminComment objects filtered by the element_key column
|
||||
* @method array findByElementId(int $element_id) Return ChildAdminComment objects filtered by the element_id column
|
||||
* @method array findByCreatedAt(string $created_at) Return ChildAdminComment objects filtered by the created_at column
|
||||
* @method array findByUpdatedAt(string $updated_at) Return ChildAdminComment objects filtered by the updated_at column
|
||||
*
|
||||
*/
|
||||
abstract class AdminCommentQuery extends ModelCriteria
|
||||
{
|
||||
|
||||
/**
|
||||
* Initializes internal state of \AdminComment\Model\Base\AdminCommentQuery object.
|
||||
*
|
||||
* @param string $dbName The database name
|
||||
* @param string $modelName The phpName of a model, e.g. 'Book'
|
||||
* @param string $modelAlias The alias for the model in this query, e.g. 'b'
|
||||
*/
|
||||
public function __construct($dbName = 'thelia', $modelName = '\\AdminComment\\Model\\AdminComment', $modelAlias = null)
|
||||
{
|
||||
parent::__construct($dbName, $modelName, $modelAlias);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new ChildAdminCommentQuery object.
|
||||
*
|
||||
* @param string $modelAlias The alias of a model in the query
|
||||
* @param Criteria $criteria Optional Criteria to build the query from
|
||||
*
|
||||
* @return ChildAdminCommentQuery
|
||||
*/
|
||||
public static function create($modelAlias = null, $criteria = null)
|
||||
{
|
||||
if ($criteria instanceof \AdminComment\Model\AdminCommentQuery) {
|
||||
return $criteria;
|
||||
}
|
||||
$query = new \AdminComment\Model\AdminCommentQuery();
|
||||
if (null !== $modelAlias) {
|
||||
$query->setModelAlias($modelAlias);
|
||||
}
|
||||
if ($criteria instanceof Criteria) {
|
||||
$query->mergeWith($criteria);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
* Propel uses the instance pool to skip the database if the object exists.
|
||||
* Go fast if the query is untouched.
|
||||
*
|
||||
* <code>
|
||||
* $obj = $c->findPk(12, $con);
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ChildAdminComment|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
public function findPk($key, $con = null)
|
||||
{
|
||||
if ($key === null) {
|
||||
return null;
|
||||
}
|
||||
if ((null !== ($obj = AdminCommentTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||
// the object is already in the instance pool
|
||||
return $obj;
|
||||
}
|
||||
if ($con === null) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
if ($this->formatter || $this->modelAlias || $this->with || $this->select
|
||||
|| $this->selectColumns || $this->asColumns || $this->selectModifiers
|
||||
|| $this->map || $this->having || $this->joins) {
|
||||
return $this->findPkComplex($key, $con);
|
||||
} else {
|
||||
return $this->findPkSimple($key, $con);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key using raw SQL to go fast.
|
||||
* Bypass doSelect() and the object formatter by using generated code.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildAdminComment A model object, or null if the key is not found
|
||||
*/
|
||||
protected function findPkSimple($key, $con)
|
||||
{
|
||||
$sql = 'SELECT ID, ADMIN_ID, COMMENT, ELEMENT_KEY, ELEMENT_ID, CREATED_AT, UPDATED_AT FROM admin_comment WHERE ID = :p0';
|
||||
try {
|
||||
$stmt = $con->prepare($sql);
|
||||
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
} catch (Exception $e) {
|
||||
Propel::log($e->getMessage(), Propel::LOG_ERR);
|
||||
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
|
||||
}
|
||||
$obj = null;
|
||||
if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
|
||||
$obj = new ChildAdminComment();
|
||||
$obj->hydrate($row);
|
||||
AdminCommentTableMap::addInstanceToPool($obj, (string) $key);
|
||||
}
|
||||
$stmt->closeCursor();
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find object by primary key.
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
* @param ConnectionInterface $con A connection object
|
||||
*
|
||||
* @return ChildAdminComment|array|mixed the result, formatted by the current formatter
|
||||
*/
|
||||
protected function findPkComplex($key, $con)
|
||||
{
|
||||
// As the query uses a PK condition, no limit(1) is necessary.
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKey($key)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find objects by primary key
|
||||
* <code>
|
||||
* $objs = $c->findPks(array(12, 56, 832), $con);
|
||||
* </code>
|
||||
* @param array $keys Primary keys to use for the query
|
||||
* @param ConnectionInterface $con an optional connection object
|
||||
*
|
||||
* @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
|
||||
*/
|
||||
public function findPks($keys, $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
|
||||
}
|
||||
$this->basePreSelect($con);
|
||||
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||
$dataFetcher = $criteria
|
||||
->filterByPrimaryKeys($keys)
|
||||
->doSelect($con);
|
||||
|
||||
return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by primary key
|
||||
*
|
||||
* @param mixed $key Primary key to use for the query
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKey($key)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::ID, $key, Criteria::EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a list of primary keys
|
||||
*
|
||||
* @param array $keys The list of primary key to use for the query
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByPrimaryKeys($keys)
|
||||
{
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::ID, $keys, Criteria::IN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterById(1234); // WHERE id = 1234
|
||||
* $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
|
||||
* $query->filterById(array('min' => 12)); // WHERE id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $id The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterById($id = null, $comparison = null)
|
||||
{
|
||||
if (is_array($id)) {
|
||||
$useMinMax = false;
|
||||
if (isset($id['min'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($id['max'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::ID, $id, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the admin_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByAdminId(1234); // WHERE admin_id = 1234
|
||||
* $query->filterByAdminId(array(12, 34)); // WHERE admin_id IN (12, 34)
|
||||
* $query->filterByAdminId(array('min' => 12)); // WHERE admin_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @see filterByAdmin()
|
||||
*
|
||||
* @param mixed $adminId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByAdminId($adminId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($adminId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($adminId['min'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $adminId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($adminId['max'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $adminId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $adminId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the comment column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByComment('fooValue'); // WHERE comment = 'fooValue'
|
||||
* $query->filterByComment('%fooValue%'); // WHERE comment LIKE '%fooValue%'
|
||||
* </code>
|
||||
*
|
||||
* @param string $comment The value to use as filter.
|
||||
* Accepts wildcards (* and % trigger a LIKE)
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByComment($comment = null, $comparison = null)
|
||||
{
|
||||
if (null === $comparison) {
|
||||
if (is_array($comment)) {
|
||||
$comparison = Criteria::IN;
|
||||
} elseif (preg_match('/[\%\*]/', $comment)) {
|
||||
$comment = str_replace('*', '%', $comment);
|
||||
$comparison = Criteria::LIKE;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::COMMENT, $comment, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the element_key column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByElementKey('fooValue'); // WHERE element_key = 'fooValue'
|
||||
* $query->filterByElementKey('%fooValue%'); // WHERE element_key LIKE '%fooValue%'
|
||||
* </code>
|
||||
*
|
||||
* @param string $elementKey The value to use as filter.
|
||||
* Accepts wildcards (* and % trigger a LIKE)
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByElementKey($elementKey = null, $comparison = null)
|
||||
{
|
||||
if (null === $comparison) {
|
||||
if (is_array($elementKey)) {
|
||||
$comparison = Criteria::IN;
|
||||
} elseif (preg_match('/[\%\*]/', $elementKey)) {
|
||||
$elementKey = str_replace('*', '%', $elementKey);
|
||||
$comparison = Criteria::LIKE;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::ELEMENT_KEY, $elementKey, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the element_id column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByElementId(1234); // WHERE element_id = 1234
|
||||
* $query->filterByElementId(array(12, 34)); // WHERE element_id IN (12, 34)
|
||||
* $query->filterByElementId(array('min' => 12)); // WHERE element_id > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $elementId The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByElementId($elementId = null, $comparison = null)
|
||||
{
|
||||
if (is_array($elementId)) {
|
||||
$useMinMax = false;
|
||||
if (isset($elementId['min'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::ELEMENT_ID, $elementId['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($elementId['max'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::ELEMENT_ID, $elementId['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::ELEMENT_ID, $elementId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the created_at column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14'
|
||||
* $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14'
|
||||
* $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $createdAt The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByCreatedAt($createdAt = null, $comparison = null)
|
||||
{
|
||||
if (is_array($createdAt)) {
|
||||
$useMinMax = false;
|
||||
if (isset($createdAt['min'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($createdAt['max'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::CREATED_AT, $createdAt, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the updated_at column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14'
|
||||
* $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14'
|
||||
* $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13'
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $updatedAt The value to use as filter.
|
||||
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||
* Empty strings are treated as NULL.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByUpdatedAt($updatedAt = null, $comparison = null)
|
||||
{
|
||||
if (is_array($updatedAt)) {
|
||||
$useMinMax = false;
|
||||
if (isset($updatedAt['min'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($updatedAt['max'])) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, $updatedAt, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query by a related \Thelia\Model\Admin object
|
||||
*
|
||||
* @param \Thelia\Model\Admin|ObjectCollection $admin The related object(s) to use as filter
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByAdmin($admin, $comparison = null)
|
||||
{
|
||||
if ($admin instanceof \Thelia\Model\Admin) {
|
||||
return $this
|
||||
->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $admin->getId(), $comparison);
|
||||
} elseif ($admin instanceof ObjectCollection) {
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
|
||||
return $this
|
||||
->addUsingAlias(AdminCommentTableMap::ADMIN_ID, $admin->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||
} else {
|
||||
throw new PropelException('filterByAdmin() only accepts arguments of type \Thelia\Model\Admin or Collection');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a JOIN clause to the query using the Admin relation
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function joinAdmin($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
|
||||
{
|
||||
$tableMap = $this->getTableMap();
|
||||
$relationMap = $tableMap->getRelation('Admin');
|
||||
|
||||
// create a ModelJoin object for this join
|
||||
$join = new ModelJoin();
|
||||
$join->setJoinType($joinType);
|
||||
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||
if ($previousJoin = $this->getPreviousJoin()) {
|
||||
$join->setPreviousJoin($previousJoin);
|
||||
}
|
||||
|
||||
// add the ModelJoin to the current object
|
||||
if ($relationAlias) {
|
||||
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||
$this->addJoinObject($join, $relationAlias);
|
||||
} else {
|
||||
$this->addJoinObject($join, 'Admin');
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the Admin relation Admin object
|
||||
*
|
||||
* @see useQuery()
|
||||
*
|
||||
* @param string $relationAlias optional alias for the relation,
|
||||
* to be used as main alias in the secondary query
|
||||
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||
*
|
||||
* @return \Thelia\Model\AdminQuery A secondary query class using the current class as primary query
|
||||
*/
|
||||
public function useAdminQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
|
||||
{
|
||||
return $this
|
||||
->joinAdmin($relationAlias, $joinType)
|
||||
->useQuery($relationAlias ? $relationAlias : 'Admin', '\Thelia\Model\AdminQuery');
|
||||
}
|
||||
|
||||
/**
|
||||
* Exclude object from result
|
||||
*
|
||||
* @param ChildAdminComment $adminComment Object to remove from the list of results
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function prune($adminComment = null)
|
||||
{
|
||||
if ($adminComment) {
|
||||
$this->addUsingAlias(AdminCommentTableMap::ID, $adminComment->getId(), Criteria::NOT_EQUAL);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the admin_comment table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||
}
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
$affectedRows += parent::doDeleteAll($con);
|
||||
// Because this db requires some delete cascade/set null emulation, we have to
|
||||
// clear the cached instance *after* the emulation has happened (since
|
||||
// instances get re-added by the select statement contained therein).
|
||||
AdminCommentTableMap::clearInstancePool();
|
||||
AdminCommentTableMap::clearRelatedInstancePool();
|
||||
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $affectedRows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a ChildAdminComment or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or ChildAdminComment object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public function delete(ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
$criteria = $this;
|
||||
|
||||
// Set the correct dbName
|
||||
$criteria->setDbName(AdminCommentTableMap::DATABASE_NAME);
|
||||
|
||||
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||
$con->beginTransaction();
|
||||
|
||||
|
||||
AdminCommentTableMap::removeInstanceFromPool($criteria);
|
||||
|
||||
$affectedRows += ModelCriteria::delete($con);
|
||||
AdminCommentTableMap::clearRelatedInstancePool();
|
||||
$con->commit();
|
||||
|
||||
return $affectedRows;
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
// timestampable behavior
|
||||
|
||||
/**
|
||||
* Filter by the latest updated
|
||||
*
|
||||
* @param int $nbDays Maximum age of the latest update in days
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function recentlyUpdated($nbDays = 7)
|
||||
{
|
||||
return $this->addUsingAlias(AdminCommentTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter by the latest created
|
||||
*
|
||||
* @param int $nbDays Maximum age of in days
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function recentlyCreated($nbDays = 7)
|
||||
{
|
||||
return $this->addUsingAlias(AdminCommentTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by update date desc
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function lastUpdatedFirst()
|
||||
{
|
||||
return $this->addDescendingOrderByColumn(AdminCommentTableMap::UPDATED_AT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by update date asc
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function firstUpdatedFirst()
|
||||
{
|
||||
return $this->addAscendingOrderByColumn(AdminCommentTableMap::UPDATED_AT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by create date desc
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function lastCreatedFirst()
|
||||
{
|
||||
return $this->addDescendingOrderByColumn(AdminCommentTableMap::CREATED_AT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Order by create date asc
|
||||
*
|
||||
* @return ChildAdminCommentQuery The current query, for fluid interface
|
||||
*/
|
||||
public function firstCreatedFirst()
|
||||
{
|
||||
return $this->addAscendingOrderByColumn(AdminCommentTableMap::CREATED_AT);
|
||||
}
|
||||
|
||||
} // AdminCommentQuery
|
||||
464
local/modules/AdminComment/Model/Map/AdminCommentTableMap.php
Normal file
464
local/modules/AdminComment/Model/Map/AdminCommentTableMap.php
Normal file
@@ -0,0 +1,464 @@
|
||||
<?php
|
||||
|
||||
namespace AdminComment\Model\Map;
|
||||
|
||||
use AdminComment\Model\AdminComment;
|
||||
use AdminComment\Model\AdminCommentQuery;
|
||||
use Propel\Runtime\Propel;
|
||||
use Propel\Runtime\ActiveQuery\Criteria;
|
||||
use Propel\Runtime\ActiveQuery\InstancePoolTrait;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\DataFetcher\DataFetcherInterface;
|
||||
use Propel\Runtime\Exception\PropelException;
|
||||
use Propel\Runtime\Map\RelationMap;
|
||||
use Propel\Runtime\Map\TableMap;
|
||||
use Propel\Runtime\Map\TableMapTrait;
|
||||
|
||||
|
||||
/**
|
||||
* This class defines the structure of the 'admin_comment' table.
|
||||
*
|
||||
*
|
||||
*
|
||||
* This map class is used by Propel to do runtime db structure discovery.
|
||||
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||
* (i.e. if it's a text column type).
|
||||
*
|
||||
*/
|
||||
class AdminCommentTableMap extends TableMap
|
||||
{
|
||||
use InstancePoolTrait;
|
||||
use TableMapTrait;
|
||||
/**
|
||||
* The (dot-path) name of this class
|
||||
*/
|
||||
const CLASS_NAME = 'AdminComment.Model.Map.AdminCommentTableMap';
|
||||
|
||||
/**
|
||||
* The default database name for this class
|
||||
*/
|
||||
const DATABASE_NAME = 'thelia';
|
||||
|
||||
/**
|
||||
* The table name for this class
|
||||
*/
|
||||
const TABLE_NAME = 'admin_comment';
|
||||
|
||||
/**
|
||||
* The related Propel class for this table
|
||||
*/
|
||||
const OM_CLASS = '\\AdminComment\\Model\\AdminComment';
|
||||
|
||||
/**
|
||||
* A class that can be returned by this tableMap
|
||||
*/
|
||||
const CLASS_DEFAULT = 'AdminComment.Model.AdminComment';
|
||||
|
||||
/**
|
||||
* The total number of columns
|
||||
*/
|
||||
const NUM_COLUMNS = 7;
|
||||
|
||||
/**
|
||||
* The number of lazy-loaded columns
|
||||
*/
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
||||
/**
|
||||
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
|
||||
*/
|
||||
const NUM_HYDRATE_COLUMNS = 7;
|
||||
|
||||
/**
|
||||
* the column name for the ID field
|
||||
*/
|
||||
const ID = 'admin_comment.ID';
|
||||
|
||||
/**
|
||||
* the column name for the ADMIN_ID field
|
||||
*/
|
||||
const ADMIN_ID = 'admin_comment.ADMIN_ID';
|
||||
|
||||
/**
|
||||
* the column name for the COMMENT field
|
||||
*/
|
||||
const COMMENT = 'admin_comment.COMMENT';
|
||||
|
||||
/**
|
||||
* the column name for the ELEMENT_KEY field
|
||||
*/
|
||||
const ELEMENT_KEY = 'admin_comment.ELEMENT_KEY';
|
||||
|
||||
/**
|
||||
* the column name for the ELEMENT_ID field
|
||||
*/
|
||||
const ELEMENT_ID = 'admin_comment.ELEMENT_ID';
|
||||
|
||||
/**
|
||||
* the column name for the CREATED_AT field
|
||||
*/
|
||||
const CREATED_AT = 'admin_comment.CREATED_AT';
|
||||
|
||||
/**
|
||||
* the column name for the UPDATED_AT field
|
||||
*/
|
||||
const UPDATED_AT = 'admin_comment.UPDATED_AT';
|
||||
|
||||
/**
|
||||
* The default string format for model objects of the related table
|
||||
*/
|
||||
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||
|
||||
/**
|
||||
* holds an array of fieldnames
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
protected static $fieldNames = array (
|
||||
self::TYPE_PHPNAME => array('Id', 'AdminId', 'Comment', 'ElementKey', 'ElementId', 'CreatedAt', 'UpdatedAt', ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id', 'adminId', 'comment', 'elementKey', 'elementId', 'createdAt', 'updatedAt', ),
|
||||
self::TYPE_COLNAME => array(AdminCommentTableMap::ID, AdminCommentTableMap::ADMIN_ID, AdminCommentTableMap::COMMENT, AdminCommentTableMap::ELEMENT_KEY, AdminCommentTableMap::ELEMENT_ID, AdminCommentTableMap::CREATED_AT, AdminCommentTableMap::UPDATED_AT, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID', 'ADMIN_ID', 'COMMENT', 'ELEMENT_KEY', 'ELEMENT_ID', 'CREATED_AT', 'UPDATED_AT', ),
|
||||
self::TYPE_FIELDNAME => array('id', 'admin_id', 'comment', 'element_key', 'element_id', 'created_at', 'updated_at', ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
|
||||
);
|
||||
|
||||
/**
|
||||
* holds an array of keys for quick access to the fieldnames array
|
||||
*
|
||||
* first dimension keys are the type constants
|
||||
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
protected static $fieldKeys = array (
|
||||
self::TYPE_PHPNAME => array('Id' => 0, 'AdminId' => 1, 'Comment' => 2, 'ElementKey' => 3, 'ElementId' => 4, 'CreatedAt' => 5, 'UpdatedAt' => 6, ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'adminId' => 1, 'comment' => 2, 'elementKey' => 3, 'elementId' => 4, 'createdAt' => 5, 'updatedAt' => 6, ),
|
||||
self::TYPE_COLNAME => array(AdminCommentTableMap::ID => 0, AdminCommentTableMap::ADMIN_ID => 1, AdminCommentTableMap::COMMENT => 2, AdminCommentTableMap::ELEMENT_KEY => 3, AdminCommentTableMap::ELEMENT_ID => 4, AdminCommentTableMap::CREATED_AT => 5, AdminCommentTableMap::UPDATED_AT => 6, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID' => 0, 'ADMIN_ID' => 1, 'COMMENT' => 2, 'ELEMENT_KEY' => 3, 'ELEMENT_ID' => 4, 'CREATED_AT' => 5, 'UPDATED_AT' => 6, ),
|
||||
self::TYPE_FIELDNAME => array('id' => 0, 'admin_id' => 1, 'comment' => 2, 'element_key' => 3, 'element_id' => 4, 'created_at' => 5, 'updated_at' => 6, ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
|
||||
);
|
||||
|
||||
/**
|
||||
* Initialize the table attributes and columns
|
||||
* Relations are not initialized by this method since they are lazy loaded
|
||||
*
|
||||
* @return void
|
||||
* @throws PropelException
|
||||
*/
|
||||
public function initialize()
|
||||
{
|
||||
// attributes
|
||||
$this->setName('admin_comment');
|
||||
$this->setPhpName('AdminComment');
|
||||
$this->setClassName('\\AdminComment\\Model\\AdminComment');
|
||||
$this->setPackage('AdminComment.Model');
|
||||
$this->setUseIdGenerator(true);
|
||||
// columns
|
||||
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
|
||||
$this->addForeignKey('ADMIN_ID', 'AdminId', 'INTEGER', 'admin', 'ID', false, null, null);
|
||||
$this->addColumn('COMMENT', 'Comment', 'LONGVARCHAR', false, null, null);
|
||||
$this->addColumn('ELEMENT_KEY', 'ElementKey', 'VARCHAR', true, 255, null);
|
||||
$this->addColumn('ELEMENT_ID', 'ElementId', 'INTEGER', true, null, null);
|
||||
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
|
||||
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
|
||||
} // initialize()
|
||||
|
||||
/**
|
||||
* Build the RelationMap objects for this table relationships
|
||||
*/
|
||||
public function buildRelations()
|
||||
{
|
||||
$this->addRelation('Admin', '\\Thelia\\Model\\Admin', RelationMap::MANY_TO_ONE, array('admin_id' => 'id', ), 'SET NULL', 'RESTRICT');
|
||||
} // buildRelations()
|
||||
|
||||
/**
|
||||
*
|
||||
* Gets the list of behaviors registered for this table
|
||||
*
|
||||
* @return array Associative array (name => parameters) of behaviors
|
||||
*/
|
||||
public function getBehaviors()
|
||||
{
|
||||
return array(
|
||||
'timestampable' => array('create_column' => 'created_at', 'update_column' => 'updated_at', ),
|
||||
);
|
||||
} // getBehaviors()
|
||||
|
||||
/**
|
||||
* Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
|
||||
*
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, a serialize()d version of the primary key will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*/
|
||||
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
// If the PK cannot be derived from the row, return NULL.
|
||||
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the primary key from the DB resultset row
|
||||
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||
* a multi-column primary key, an array of the primary key columns will be returned.
|
||||
*
|
||||
* @param array $row resultset row.
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||
*
|
||||
* @return mixed The primary key of the row
|
||||
*/
|
||||
public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
|
||||
return (int) $row[
|
||||
$indexType == TableMap::TYPE_NUM
|
||||
? 0 + $offset
|
||||
: self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* The class that the tableMap will make instances of.
|
||||
*
|
||||
* If $withPrefix is true, the returned path
|
||||
* uses a dot-path notation which is translated into a path
|
||||
* relative to a location on the PHP include_path.
|
||||
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||
*
|
||||
* @param boolean $withPrefix Whether or not to return the path with the class name
|
||||
* @return string path.to.ClassName
|
||||
*/
|
||||
public static function getOMClass($withPrefix = true)
|
||||
{
|
||||
return $withPrefix ? AdminCommentTableMap::CLASS_DEFAULT : AdminCommentTableMap::OM_CLASS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Populates an object of the default type or an object that inherit from the default.
|
||||
*
|
||||
* @param array $row row returned by DataFetcher->fetch().
|
||||
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||
* @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
|
||||
One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
|
||||
*
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
* @return array (AdminComment object, last column rank)
|
||||
*/
|
||||
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||
{
|
||||
$key = AdminCommentTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||
if (null !== ($obj = AdminCommentTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, $offset, true); // rehydrate
|
||||
$col = $offset + AdminCommentTableMap::NUM_HYDRATE_COLUMNS;
|
||||
} else {
|
||||
$cls = AdminCommentTableMap::OM_CLASS;
|
||||
$obj = new $cls();
|
||||
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||
AdminCommentTableMap::addInstanceToPool($obj, $key);
|
||||
}
|
||||
|
||||
return array($obj, $col);
|
||||
}
|
||||
|
||||
/**
|
||||
* The returned array will contain objects of the default type or
|
||||
* objects that inherit from the default.
|
||||
*
|
||||
* @param DataFetcherInterface $dataFetcher
|
||||
* @return array
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function populateObjects(DataFetcherInterface $dataFetcher)
|
||||
{
|
||||
$results = array();
|
||||
|
||||
// set the class once to avoid overhead in the loop
|
||||
$cls = static::getOMClass(false);
|
||||
// populate the object(s)
|
||||
while ($row = $dataFetcher->fetch()) {
|
||||
$key = AdminCommentTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||
if (null !== ($obj = AdminCommentTableMap::getInstanceFromPool($key))) {
|
||||
// We no longer rehydrate the object, since this can cause data loss.
|
||||
// See http://www.propelorm.org/ticket/509
|
||||
// $obj->hydrate($row, 0, true); // rehydrate
|
||||
$results[] = $obj;
|
||||
} else {
|
||||
$obj = new $cls();
|
||||
$obj->hydrate($row);
|
||||
$results[] = $obj;
|
||||
AdminCommentTableMap::addInstanceToPool($obj, $key);
|
||||
} // if key exists
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
/**
|
||||
* Add all the columns needed to create a new object.
|
||||
*
|
||||
* Note: any columns that were marked with lazyLoad="true" in the
|
||||
* XML schema will not be added to the select list and only loaded
|
||||
* on demand.
|
||||
*
|
||||
* @param Criteria $criteria object containing the columns to add.
|
||||
* @param string $alias optional table alias
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function addSelectColumns(Criteria $criteria, $alias = null)
|
||||
{
|
||||
if (null === $alias) {
|
||||
$criteria->addSelectColumn(AdminCommentTableMap::ID);
|
||||
$criteria->addSelectColumn(AdminCommentTableMap::ADMIN_ID);
|
||||
$criteria->addSelectColumn(AdminCommentTableMap::COMMENT);
|
||||
$criteria->addSelectColumn(AdminCommentTableMap::ELEMENT_KEY);
|
||||
$criteria->addSelectColumn(AdminCommentTableMap::ELEMENT_ID);
|
||||
$criteria->addSelectColumn(AdminCommentTableMap::CREATED_AT);
|
||||
$criteria->addSelectColumn(AdminCommentTableMap::UPDATED_AT);
|
||||
} else {
|
||||
$criteria->addSelectColumn($alias . '.ID');
|
||||
$criteria->addSelectColumn($alias . '.ADMIN_ID');
|
||||
$criteria->addSelectColumn($alias . '.COMMENT');
|
||||
$criteria->addSelectColumn($alias . '.ELEMENT_KEY');
|
||||
$criteria->addSelectColumn($alias . '.ELEMENT_ID');
|
||||
$criteria->addSelectColumn($alias . '.CREATED_AT');
|
||||
$criteria->addSelectColumn($alias . '.UPDATED_AT');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the TableMap related to this object.
|
||||
* This method is not needed for general use but a specific application could have a need.
|
||||
* @return TableMap
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function getTableMap()
|
||||
{
|
||||
return Propel::getServiceContainer()->getDatabaseMap(AdminCommentTableMap::DATABASE_NAME)->getTable(AdminCommentTableMap::TABLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a TableMap instance to the database for this tableMap class.
|
||||
*/
|
||||
public static function buildTableMap()
|
||||
{
|
||||
$dbMap = Propel::getServiceContainer()->getDatabaseMap(AdminCommentTableMap::DATABASE_NAME);
|
||||
if (!$dbMap->hasTable(AdminCommentTableMap::TABLE_NAME)) {
|
||||
$dbMap->addTableObject(new AdminCommentTableMap());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a DELETE on the database, given a AdminComment or Criteria object OR a primary key value.
|
||||
*
|
||||
* @param mixed $values Criteria or AdminComment object or primary key or array of primary keys
|
||||
* which is used to create the DELETE statement
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||
* if supported by native driver or if emulated using Propel.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doDelete($values, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($values instanceof Criteria) {
|
||||
// rename for clarity
|
||||
$criteria = $values;
|
||||
} elseif ($values instanceof \AdminComment\Model\AdminComment) { // it's a model object
|
||||
// create criteria based on pk values
|
||||
$criteria = $values->buildPkeyCriteria();
|
||||
} else { // it's a primary key, or an array of pks
|
||||
$criteria = new Criteria(AdminCommentTableMap::DATABASE_NAME);
|
||||
$criteria->add(AdminCommentTableMap::ID, (array) $values, Criteria::IN);
|
||||
}
|
||||
|
||||
$query = AdminCommentQuery::create()->mergeWith($criteria);
|
||||
|
||||
if ($values instanceof Criteria) { AdminCommentTableMap::clearInstancePool();
|
||||
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||
foreach ((array) $values as $singleval) { AdminCommentTableMap::removeInstanceFromPool($singleval);
|
||||
}
|
||||
}
|
||||
|
||||
return $query->delete($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes all rows from the admin_comment table.
|
||||
*
|
||||
* @param ConnectionInterface $con the connection to use
|
||||
* @return int The number of affected rows (if supported by underlying database driver).
|
||||
*/
|
||||
public static function doDeleteAll(ConnectionInterface $con = null)
|
||||
{
|
||||
return AdminCommentQuery::create()->doDeleteAll($con);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs an INSERT on the database, given a AdminComment or Criteria object.
|
||||
*
|
||||
* @param mixed $criteria Criteria or AdminComment object containing data that is used to create the INSERT statement.
|
||||
* @param ConnectionInterface $con the ConnectionInterface connection to use
|
||||
* @return mixed The new primary key.
|
||||
* @throws PropelException Any exceptions caught during processing will be
|
||||
* rethrown wrapped into a PropelException.
|
||||
*/
|
||||
public static function doInsert($criteria, ConnectionInterface $con = null)
|
||||
{
|
||||
if (null === $con) {
|
||||
$con = Propel::getServiceContainer()->getWriteConnection(AdminCommentTableMap::DATABASE_NAME);
|
||||
}
|
||||
|
||||
if ($criteria instanceof Criteria) {
|
||||
$criteria = clone $criteria; // rename for clarity
|
||||
} else {
|
||||
$criteria = $criteria->buildCriteria(); // build Criteria from AdminComment object
|
||||
}
|
||||
|
||||
if ($criteria->containsKey(AdminCommentTableMap::ID) && $criteria->keyContainsValue(AdminCommentTableMap::ID) ) {
|
||||
throw new PropelException('Cannot insert a value for auto-increment primary key ('.AdminCommentTableMap::ID.')');
|
||||
}
|
||||
|
||||
|
||||
// Set the correct dbName
|
||||
$query = AdminCommentQuery::create()->mergeWith($criteria);
|
||||
|
||||
try {
|
||||
// use transaction because $criteria could contain info
|
||||
// for more than one table (I guess, conceivably)
|
||||
$con->beginTransaction();
|
||||
$pk = $query->doInsert($con);
|
||||
$con->commit();
|
||||
} catch (PropelException $e) {
|
||||
$con->rollBack();
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return $pk;
|
||||
}
|
||||
|
||||
} // AdminCommentTableMap
|
||||
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||
//
|
||||
AdminCommentTableMap::buildTableMap();
|
||||
67
local/modules/AdminComment/README.md
Normal file
67
local/modules/AdminComment/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Admin Comment
|
||||
|
||||
This module allows you to add comments on each part of the back office : categories, products, folders, contents,
|
||||
orders, customers and coupons.
|
||||
These comments are not visible for customers.
|
||||
|
||||
## Installation
|
||||
|
||||
### Manually
|
||||
|
||||
* Copy the module into ```<thelia_root>/local/modules/``` directory and be sure that the name of the
|
||||
module is AdminComment.
|
||||
* Activate it in your thelia administration panel
|
||||
|
||||
### Composer
|
||||
|
||||
Add it in your main thelia composer.json file
|
||||
|
||||
```
|
||||
composer require thelia/admin-comment-module ~1.1.0
|
||||
```
|
||||
|
||||
## configuration
|
||||
|
||||
no special configurations needed. just set the permissions for administrators.
|
||||
|
||||
## Loop
|
||||
|
||||
Get the comment by loop
|
||||
|
||||
### Input arguments
|
||||
|
||||
|Argument |Description |
|
||||
|--- |--- |
|
||||
|**id** | The id of comment |
|
||||
|**element_key** | The key of commented element |
|
||||
|**element_id** | The id of commented element |
|
||||
|
||||
### Ouput arguments
|
||||
|
||||
|Variable |Description |
|
||||
|--- |--- |
|
||||
|$ID |the comment ID |
|
||||
|$ADMIN_ID |Author id |
|
||||
|$ADMIN_NAME |Author name |
|
||||
|$COMMENT |The message |
|
||||
|$ELEMENT_KEY |The key of commented element |
|
||||
|$ELEMENT_ID |The id of commented element |
|
||||
|$CREATED_AT |Comment creation date|
|
||||
|$UPDATED_AT |Comment update date |
|
||||
|
||||
|
||||
## Changelog
|
||||
|
||||
### 1.1.1
|
||||
|
||||
- Add loop for admin comment
|
||||
|
||||
### 1.1.0
|
||||
|
||||
- Add tab in edit page with comment counter in tab title
|
||||
- Add comment counter in order list
|
||||
|
||||
### 1.0.1
|
||||
|
||||
- Fixed module activation
|
||||
- Removed JS dependency to missing bootbox lib
|
||||
11
local/modules/AdminComment/composer.json
Normal file
11
local/modules/AdminComment/composer.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "thelia/admin-comment-module",
|
||||
"license": "LGPL-3.0+",
|
||||
"type": "thelia-module",
|
||||
"require": {
|
||||
"thelia/installer": "~1.1"
|
||||
},
|
||||
"extra": {
|
||||
"installer-name": "AdminComment"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<script type="text/javascript">
|
||||
var adminCommentConfig = {
|
||||
'key': '{$key}',
|
||||
'id': {$id},
|
||||
'urlList': "{url path="/admin/module/AdminComment/list/$key/$id"}"
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,94 @@
|
||||
<div id="admin-comment-wrapper" class="container hidden">
|
||||
<div class="row">
|
||||
<div class="col-md-12 general-block-decorator">
|
||||
<div>
|
||||
<div class="title">
|
||||
{intl l="Admin Comments" d="admincomment.bo.default"}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
{form name="admin_comment_create_form"}
|
||||
<form id="admin-comment-form" method="post" action="{url path="/admin/module/AdminComment/create"}" {form_enctype form=$form}>
|
||||
|
||||
{form_hidden_fields form=$form}
|
||||
|
||||
{form_field form=$form field="admin_id"}
|
||||
<input type="hidden" name="{$name}" value="{admin attr="id"}">
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field="element_key"}
|
||||
<input type="hidden" id="admin-comment-form-key" name="{$name}" value="">
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field="element_id"}
|
||||
<input type="hidden" id="admin-comment-form-id" name="{$name}" value="">
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field="comment"}
|
||||
<div class="form-group">
|
||||
<textarea id="admin-comment-form-comment" name="{$name}" class="form-control">{$value}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary">{intl l="Save" d="admincomment.bo.default"}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/form}
|
||||
|
||||
<div id="admin-comment-list" class="list-group">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{* JS Templates *}
|
||||
<script id="tpl-admin-comment" type="text/html">
|
||||
<div class="list-group-item" data-id="<%= comment.id %>">
|
||||
<h4 class="list-group-item-heading u-no-padding"><%= comment.admin %> (<%= comment.date %>)</h4>
|
||||
<p class="list-group-item-text u-padding-bottom">
|
||||
<%= comment.comment %>
|
||||
</p>
|
||||
<% if (comment.canChange) { %>
|
||||
<div class="list-group-item-form hidden">
|
||||
{form name="admin_comment_update_form"}
|
||||
<form class="admin-comment-form" method="post" action="{url path="/admin/module/AdminComment/save"}" {form_enctype form=$form}>
|
||||
|
||||
{form_hidden_fields form=$form}
|
||||
|
||||
{form_field form=$form field="id"}
|
||||
<input type="hidden" name="{$name}" value="<%= comment.id %>">
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field="comment"}
|
||||
<div class="form-group">
|
||||
<textarea name="{$name}" class="form-control"><%= comment.comment %></textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary">{intl l="Save" d="admincomment.bo.default"}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/form}
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-default btn-xs js-admincomment-edit" title="{intl d='admincomment.bo.default' l='Edit this comment'}">
|
||||
<span class="glyphicon glyphicon-pencil"></span>
|
||||
</a>
|
||||
<a class="btn btn-default btn-xs js-admincomment-delete" data-id="<%= comment.id %>" data-action="{url path="/admin/module/AdminComment/delete"}" title="{intl d='admincomment.bo.default' l='Delete this comment'}" >
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{include
|
||||
file = "includes/generic-warning-dialog.html"
|
||||
|
||||
dialog_id = "admin_comment_dialog"
|
||||
dialog_title = {intl d='admincomment.bo.default' l="Message"}
|
||||
dialog_body = ""
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
<script type="text/javascript">
|
||||
|
||||
if (typeof window._ == 'undefined') {
|
||||
{javascripts file='assets/js/libs/underscore-min.js'}
|
||||
console.log("underscore");
|
||||
document.write(unescape("%3Cscript src='{$asset_url}' %3E%3C/script%3E"));
|
||||
{/javascripts}
|
||||
}
|
||||
|
||||
{literal}
|
||||
(function ($, undefined) {
|
||||
$(document).ready(function () {
|
||||
if (window.adminCommentConfig === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
var $container = $('#admin-comment-wrapper'),
|
||||
$list = $('#admin-comment-list'),
|
||||
$form = $('#admin-comment-form'),
|
||||
$inputComment = $('#admin-comment-form-comment'),
|
||||
$inputKey = $('#admin-comment-form-key'),
|
||||
$inputId = $('#admin-comment-form-id'),
|
||||
tplComment = _.template($("#tpl-admin-comment").html())
|
||||
;
|
||||
|
||||
$container.removeClass("hidden");
|
||||
$inputKey.val(window.adminCommentConfig.key);
|
||||
$inputId.val(window.adminCommentConfig.id);
|
||||
|
||||
var showMessage = function showMessage(message) {
|
||||
$('#admin_comment_dialog')
|
||||
.find('.modal-body')
|
||||
.html(message)
|
||||
.end()
|
||||
.modal("show");
|
||||
};
|
||||
|
||||
var listComment = function listComment() {
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
dataType: 'json',
|
||||
url: window.adminCommentConfig.urlList
|
||||
}).done(function(data, textStatus, jqXHR){
|
||||
var html = '';
|
||||
if (data.success) {
|
||||
$list.html("");
|
||||
for (var i = 0 ; i < data.data.length ; i++) {
|
||||
html += tplComment({comment: data.data[i]});
|
||||
}
|
||||
$list.html(html);
|
||||
} else {
|
||||
showMessage(data.message);
|
||||
}
|
||||
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||
showMessage(textStatus);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$form.on('submit', function (ev) {
|
||||
|
||||
ev.preventDefault();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: 'json',
|
||||
data: $(this).serialize(),
|
||||
url: $(this).attr('action')
|
||||
}).done(function(data, textStatus, jqXHR){
|
||||
if (data.success) {
|
||||
$list.prepend(tplComment({comment: data.data}));
|
||||
$inputComment.val("");
|
||||
} else {
|
||||
showMessage(data.message);
|
||||
}
|
||||
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||
showMessage(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$list.on('click', '.js-admincomment-delete', function(ev){
|
||||
|
||||
var $deleteButton = $(this);
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: 'json',
|
||||
data: {id: $deleteButton.data('id')},
|
||||
url: $deleteButton.data("action")
|
||||
}).done(function(data, textStatus, jqXHR){
|
||||
if (data.success) {
|
||||
$deleteButton.parents('.list-group-item').remove();
|
||||
} else {
|
||||
showMessage(data.message);
|
||||
}
|
||||
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||
showMessage(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$list.on('click', '.js-admincomment-edit', function(ev){
|
||||
var $listItem = $(this).parents('.list-group-item');
|
||||
$listItem.find('.list-group-item-text').addClass('hidden');
|
||||
$listItem.find('.list-group-item-form').removeClass('hidden');
|
||||
});
|
||||
|
||||
$list.on('submit', '.admin-comment-form', function (ev) {
|
||||
|
||||
ev.preventDefault();
|
||||
|
||||
var $editForm = $(this),
|
||||
$listItem = $editForm.parents(".list-group-item").first();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: 'json',
|
||||
data: $editForm.serialize(),
|
||||
url: $editForm.attr('action')
|
||||
}).done(function(data, textStatus, jqXHR){
|
||||
if (data.success) {
|
||||
$listItem.find('.list-group-item-text').html(data.data.comment).removeClass('hidden');
|
||||
$listItem.find('.list-group-item-form').addClass('hidden');
|
||||
} else {
|
||||
showMessage(data.message);
|
||||
}
|
||||
}).fail(function(jqXHR, textStatus, errorThrown){
|
||||
showMessage(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
listComment();
|
||||
|
||||
});
|
||||
})(jQuery);
|
||||
{/literal}
|
||||
|
||||
</script>
|
||||
Reference in New Issue
Block a user