trinity updates, template updates

This commit is contained in:
Simon Vieille 2015-05-04 19:34:46 +02:00
parent 74b8347c87
commit 62d0565ace
38 changed files with 836 additions and 878 deletions

View file

@ -34,3 +34,12 @@
</div>
{% endif %}
{% endblock %}
{% block main_menu_bind %}
{% if page.pager.hasPreviousPage %}
<li class="bind"><a href="{{ cms_path('category', {id: page.object.id, category: page.object.slug, page: page.pager.getPreviousPage}) }}"><span class="glyphicon glyphicon-backward"></span></a></li>
{% endif %}
{% if page.pager.hasNextPage %}
<li class="bind"><a href="{{ cms_path('category', {id: page.object.id, category: page.object.slug, page: page.pager.getNextPage}) }}"><span class="glyphicon glyphicon-forward"></span></a></li>
{% endif %}
{% endblock %}

Binary file not shown.

View file

@ -327,7 +327,7 @@ class BaseAdminController extends Controller
protected function processForm(&$form, &$object, Request $request)
{
$form->bind($request);
$form->submit($request);
if ($form->isValid()) {
if ($object instanceof \FOS\UserBundle\Propel\User) {

View file

@ -1228,6 +1228,11 @@ li.item p {
background: url('/bundles/trinityadmin/img/flags/de.png') center center no-repeat;
}
.nav-tab-zh a,
.nav-tab-zh_CN a {
background: url('/bundles/trinityadmin/img/flags/ch.png') center center no-repeat;
}
.file-preview-img {
max-width: 100px;
display: block;

View file

@ -1144,6 +1144,44 @@ $(document).ready(function() {
$('.form-icon-helper').css('margin-left', '3px').tooltip();
$('#crud form > ul.error_list').addClass('alert').addClass('alert-danger');
if ($('#page_dataModel').length && $('#page_dataModelId').length) {
var $pageDataModel = $('#page_dataModel');
var $pageDataModelId = $('#page_dataModelId');
var checkDatModelSelect = function() {
if (!$pageDataModel.val()) {
$pageDataModelId.find('option:selected').removeAttr('selected');
$pageDataModelId.attr('disabled', 'disabled');
return;
}
$pageDataModelId.removeAttr('disabled');
var dataModelName = $.trim($pageDataModel.children('option:selected').html());
var $selected = [];
$pageDataModelId.children('optgroup').each(function() {
if ($.trim($(this).attr('label')) !== dataModelName) {
$(this).find('option:selected').removeAttr('selected');
$(this).hide();
} else {
$selected = $(this).find('option[selected]');
$(this).show();
}
});
if ($selected.length) {
$selected.removeAttr('selected').attr('selected', 'selected');
}
$pageDataModelId.trigger("chosen:updated");
}
$pageDataModel.change(checkDatModelSelect);
checkDatModelSelect();
}
});
$('#media-categories-tree a').live(

View file

@ -56,7 +56,7 @@ crud:
fail:
update: 'Mise à jour échouée.'
new: 'Création échouée'
remove: 'Il y a eu un problème pendant la suppresion.'
remove: 'Il y a eu un problème pendant la suppression.'
unknown: 'Élément inexistant.'
user:

View file

@ -43,3 +43,4 @@
</form>
{% endblock %}
</div>

View file

@ -31,7 +31,7 @@ class DefaultController extends Controller
$navs = NavQuery::create()->orderByName()->find();
$item = array(
'title' => "Gestion de l'arborescence",
'title' => "Tree management",
'route_name' => 'TrinityContentManagerBundleNodeAdmin_index',
'route_params' => array(),
'test_is_granted' => true,

View file

@ -1,16 +1,13 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<!--
<parameter key="trinity_assets.compressor.class">Trinity\Bundle\AssetsBundle\Compressor\TestCompressor</parameter>
-->
<parameter key="trinity_assets.compressor.class">Trinity\Bundle\AssetsBundle\Compressor\LessCssCompressor</parameter>
</parameters>
<services>
<service id="trinity.assets.compressor" class="%trinity_assets.compressor.class%">
<call method="setBinPath">

View file

@ -23,10 +23,7 @@ class ContactFilterType extends BaseAbstractType
'name',
'text',
array(
'required' => true,
'attr' => array(
'placeholder' => 'Nom',
),
'required' => false,
)
);
@ -34,10 +31,7 @@ class ContactFilterType extends BaseAbstractType
'firm',
'text',
array(
'required' => true,
'attr' => array(
'placeholder' => 'Société',
),
'required' => false,
)
);
@ -45,10 +39,7 @@ class ContactFilterType extends BaseAbstractType
'phone',
'text',
array(
'required' => true,
'attr' => array(
'placeholder' => 'Téléphone',
),
'required' => false,
)
);
@ -56,10 +47,7 @@ class ContactFilterType extends BaseAbstractType
'email',
'email',
array(
'required' => true,
'attr' => array(
'placeholder' => 'E-mail',
),
'required' => false,
)
);
}

View file

@ -4,6 +4,7 @@ namespace Trinity\Bundle\ContentManagerBundle\Block;
use Propel;
use PropelPDO;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Trinity\Bundle\ContentManagerBundle\Model\BlockPeer;
use Trinity\Bundle\ContentManagerBundle\Model\Block;
@ -145,4 +146,15 @@ class FileBlock extends Block
return parent::postDelete($con);
}
public function getValueAsFile()
{
$file = $this->getUploadDir('value') . DIRECTORY_SEPARATOR . $this->value;
if (file_exists($file) && is_file($file)) {
return new File($file);
}
return null;
}
}

View file

@ -53,7 +53,7 @@ class NavType extends AbstractType
array(
'required' => true,
'attr' => array(
'data-help' => "Utilisation possible d'une regex, exemple : regex:/.*\\.exemple.fr/s",
'data-help' => "Regex available, eg: regex:/.*\\.example.com/s",
),
'constraints' => array(
new NotBlank(),

View file

@ -13,10 +13,7 @@ class NodeAddType extends NodeType
{
$builder->add(
'title',
'text',
array(
'label' => 'nodeTitle',
)
'text'
);
$builder->add(
@ -73,7 +70,7 @@ class NodeAddType extends NodeType
array(
'required' => false,
'attr' => array(
'placeholder' => 'http://',
'placeholder' => 'https://',
),
)
);

View file

@ -15,7 +15,6 @@ class NodeMoveType extends NodeType
'position',
'hidden',
array(
// 'property_path' => false,
'mapped' => false,
'data'=> 'after',
)
@ -28,7 +27,6 @@ class NodeMoveType extends NodeType
'class' => 'Trinity\Bundle\ContentManagerBundle\Model\Node',
'query' => \Trinity\Bundle\ContentManagerBundle\Model\NodeQuery::getReferences($builder->getData()),
'property' => 'levelRender',
// 'property_path' => false,
'mapped' => false,
'required' => true,
)

View file

@ -49,10 +49,7 @@ class NodeType extends AbstractType
{
$builder->add(
'title',
'text',
array(
'label' => 'nodeTitle',
)
'text'
);
$builder->add(
@ -79,7 +76,7 @@ class NodeType extends AbstractType
array(
'required' => false,
'attr' => array(
'placeholder' => 'http://',
'placeholder' => 'https://',
),
)
);

View file

@ -18,7 +18,7 @@ class PageMetasType extends PageType
'required' => false,
'attr' => array(
'data-countable' => 1,
'data-help' => 'seoTitleHelper'
'data-help' => 'Recommended maximum length: 70 characters.'
),
)
);
@ -30,7 +30,7 @@ class PageMetasType extends PageType
'required' => false,
'attr' => array(
'data-countable' => 1,
'data-help' => 'metaDescriptionHelper'
'data-help' => 'Recommended maximum length: 160 characters.'
),
)
);

View file

@ -3,6 +3,7 @@
namespace Trinity\Bundle\ContentManagerBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use Trinity\Bundle\ContentManagerBundle\Model\PageQuery;
class PagePermissionsType extends PageType
{
@ -44,8 +45,11 @@ class PagePermissionsType extends PageType
'dataModelId',
'choice',
array(
'choices' => \Trinity\Bundle\ContentManagerBundle\Model\PageQuery::getModelForDataModels($dataModels),
'choices' => PageQuery::getModelForDataModels($dataModels),
'required' => false,
// 'attr' => array(
// 'class' => 'chosen-select',
// ),
)
);
}

View file

@ -54,13 +54,13 @@ class PageSitemapType extends PageType
public function getPagesFrequency()
{
$frequencys = array(
'always' => 'always',
'hourly' => 'hourly',
'daily' => 'daily',
'weekly' => 'weekly',
'monthly' => 'monthly',
'yearly' => 'yearly',
'never' => 'never'
'always' => 'Always',
'hourly' => 'Hourly',
'daily' => 'Daily',
'weekly' => 'Weekly',
'monthly' => 'Monthly',
'yearly' => 'Yearly',
'never' => 'Never'
);

View file

@ -51,9 +51,6 @@ cms:
saved: 'Données sauvegardées.'
node:
#nav:
# list:
# title: "Sélection d'une navigations"
error:
unselected: 'Vous devez sélectionner une navigation pour continuer.'

View file

@ -7,11 +7,11 @@
<target>Navigation</target>
</trans-unit>
<trans-unit id="2">
<source>name</source>
<source>Name</source>
<target>Nom</target>
</trans-unit>
<trans-unit id="3">
<source>title</source>
<source>Title</source>
<target>Titre</target>
</trans-unit>
<trans-unit id="4">
@ -55,7 +55,7 @@
<target>Nouveau bloc éditorial</target>
</trans-unit>
<trans-unit id="14">
<source>action</source>
<source>Action</source>
<target>Action</target>
</trans-unit>
<trans-unit id="15">
@ -71,17 +71,13 @@
<target>Édition de « %toString% »</target>
</trans-unit>
<trans-unit id="18">
<source>seoTitleHelper</source>
<target>Longueur max conseillée : 70 caractères.</target>
<source>Recommended maximum length: 70 characters.</source>
<target>Longueur maximum conseillée : 70 caractères.</target>
</trans-unit>
<trans-unit id="19">
<source>metaDescriptionHelper</source>
<source>Recommended maximum length: 160 characters.</source>
<target>Longueur max conseillée : 160 caractères.</target>
</trans-unit>
<trans-unit id="20">
<source>metaKeywordsHelper</source>
<target>Édition de « %toString% »</target>
</trans-unit>
<trans-unit id="21">
<source>Sitemap status</source>
<target>Publication</target>
@ -95,31 +91,31 @@
<target>Fréquence de mise à jour</target>
</trans-unit>
<trans-unit id="24">
<source>always</source>
<source>Always</source>
<target>Toujours</target>
</trans-unit>
<trans-unit id="25">
<source>hourly</source>
<source>Hourly</source>
<target>Toutes les heures</target>
</trans-unit>
<trans-unit id="26">
<source>daily</source>
<source>Daily</source>
<target>Tous les jours</target>
</trans-unit>
<trans-unit id="27">
<source>weekly</source>
<source>Weekly</source>
<target>Toutes les semaines</target>
</trans-unit>
<trans-unit id="28">
<source>monthly</source>
<source>Monthly</source>
<target>Tous les mois</target>
</trans-unit>
<trans-unit id="29">
<source>yearly</source>
<source>Yearly</source>
<target>Tous les ans</target>
</trans-unit>
<trans-unit id="30">
<source>never</source>
<source>Never</source>
<target>Jamais</target>
</trans-unit>
<trans-unit id="34">
@ -262,6 +258,14 @@
<source>Edition of "%title%"</source>
<target>Édition de « %title% »</target>
</trans-unit>
<trans-unit id="70">
<source>Tree management</source>
<target>Gestion de l'arborescence</target>
</trans-unit>
<trans-unit id="71">
<source>Regex available, eg: regex:/.*\.example.com/s</source>
<target>Utilisation possible d'une regex, exemple : regex:/.*\.example.com/s</target>
</trans-unit>
</body>
</file>
</xliff>

View file

@ -45,8 +45,7 @@ class NodeLoader extends Loader
$url = $node->getUrl();
$page = $node->getPage();
$controller = $node->getController() ? $node->getController(
) : 'TrinityContentManagerBundle:Page:catchAll';
$controller = $node->getController() ? $node->getController() : 'TrinityContentManagerBundle:Page:catchAll';
if ($node->getNodeAlias() && !$node->getNodeAlias()->getPage()) {
continue;

View file

@ -1,127 +0,0 @@
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>nav</source>
<target>Navigation</target>
</trans-unit>
<trans-unit id="2">
<source>name</source>
<target>Nom</target>
</trans-unit>
<trans-unit id="3">
<source>title</source>
<target>Titre</target>
</trans-unit>
<trans-unit id="4">
<source>Menus</source>
<target>Menus</target>
</trans-unit>
<trans-unit id="5">
<source>Medias</source>
<target>Médias</target>
</trans-unit>
<trans-unit id="6">
<source>Categories</source>
<target>Catégories</target>
</trans-unit>
<trans-unit id="7">
<source>Editorial blocks</source>
<target>Blocs éditoriaux</target>
</trans-unit>
<trans-unit id="8">
<source>Navs</source>
<target>Navigations</target>
</trans-unit>
<trans-unit id="9">
<source>Pages</source>
<target>Pages</target>
</trans-unit>
<trans-unit id="10">
<source>culture</source>
<target>Langue</target>
</trans-unit>
<trans-unit id="11">
<source>domain</source>
<target>Nom de domaine</target>
</trans-unit>
<trans-unit id="12">
<source>The couple domain/culture must be defined and unique.</source>
<target>Le couple nom de domaine/culture doit être renseigné et unique.</target>
</trans-unit>
<trans-unit id="13">
<source>New editorial block</source>
<target>Nouveau bloc éditorial</target>
</trans-unit>
<trans-unit id="14">
<source>action</source>
<target>Action</target>
</trans-unit>
<trans-unit id="15">
<source>New nav</source>
<target>Nouvelle navigation</target>
</trans-unit>
<trans-unit id="16">
<source>New page</source>
<target>Nouvelle page</target>
</trans-unit>
<trans-unit id="17">
<source>Edition of "%toString%"</source>
<target>Édition de « %toString% »</target>
</trans-unit>
<trans-unit id="18">
<source>seoTitleHelper</source>
<target>Longueur max conseillée : 70 caractères.</target>
</trans-unit>
<trans-unit id="19">
<source>metaDescriptionHelper</source>
<target>Longueur max conseillée : 160 caractères.</target>
</trans-unit>
<trans-unit id="20">
<source>metaKeywordsHelper</source>
<target>Édition de « %toString% »</target>
</trans-unit>
<trans-unit id="21">
<source>Sitemap status</source>
<target>Publication</target>
</trans-unit>
<trans-unit id="22">
<source>Sitemap priority</source>
<target>Priorité</target>
</trans-unit>
<trans-unit id="23">
<source>Sitemap frequency</source>
<target>Fréquence de mise à jour</target>
</trans-unit>
<trans-unit id="24">
<source>always</source>
<target>Toujours</target>
</trans-unit>
<trans-unit id="25">
<source>hourly</source>
<target>Toutes les heures</target>
</trans-unit>
<trans-unit id="26">
<source>daily</source>
<target>Tous les jours</target>
</trans-unit>
<trans-unit id="27">
<source>weekly</source>
<target>Toutes les semaines</target>
</trans-unit>
<trans-unit id="28">
<source>monthly</source>
<target>Tous les mois</target>
</trans-unit>
<trans-unit id="29">
<source>yearly</source>
<target>Tous les ans</target>
</trans-unit>
<trans-unit id="30">
<source>never</source>
<target>Jamais</target>
</trans-unit>
</body>
</file>
</xliff>

View file

@ -21,22 +21,27 @@ class NewsletterFilterType extends BaseAbstractType
$builder->add('name');
$builder->add('senderName');
$builder->add('senderEmail');
$builder->add('modelId',
'model',
array(
'empty_value' => 'Tous',
'empty_value' => 'All',
'required' => false,
'class' => 'Trinity\Bundle\NewsletterBundle\Model\Model'
'class' => 'Trinity\Bundle\NewsletterBundle\Model\Model',
)
);
$builder->add('sentAt','datetime',
$builder->add(
'sentAt',
'datetime',
array(
'widget' => 'single_text',
'input' => 'string',
'format' => 'yyyy-MM-dd hh:mm:ss',
'with_seconds' => true,
'attr' => array('class' => 'datetimepicker')
'attr' => array(
'class' => 'datetimepicker',
),
)
);
}

View file

@ -8,14 +8,12 @@
<column name="is_read" type="boolean" defaultValue="false" />
<column name="user_id" type="integer" />
<column name="template_id" type="varchar" size="255" />
<foreign-key name="fk_notification_1" foreignTable="fos_user">
<reference local="user_id" foreign="id" />
</foreign-key>
<foreign-key name="fk_notification_2" foreignTable="notification_template">
<reference local="template_id" foreign="id" />
</foreign-key>
<behavior name="timestampable" />
</table>
<table name="notification_template" phpName="Template" allowPkInsert="true">

View file

@ -2,6 +2,7 @@
namespace Trinity\Bundle\UserBundle\Controller;
use FOS\UserBundle\Propel\User;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
@ -95,6 +96,7 @@ class UserAdminController extends BaseAdminController
*/
public function generatePasswordAction($object, $token, Request $request)
{
/** @var User $object */
$redirect = $this->redirect($this->generateUrl('FOSUserBundleUserAdmin_index'));
if ($this->getRemoveToken() !== $token) {
@ -109,7 +111,13 @@ class UserAdminController extends BaseAdminController
$new_password = substr(sha1(uniqid() + mt_rand() + time()), 0, 15);
$this->get('fos_user.user_manager')->updateUser($object->setPlainPassword($new_password));
$object->setPlainPassword($new_password);
if($this->container->getParameter('trinity_user.active_when_generate') === true){
$object->setEnabled(true);
}
$this->get('fos_user.user_manager')->updateUser($object);
$this->sendGeneratedPassword($object, $new_password);
@ -136,6 +144,10 @@ class UserAdminController extends BaseAdminController
$message =
\Swift_Message::newInstance()
->setSubject($this->get('translator')->trans('New password'))
->setFrom(
$this->container->getParameter('trinity_user.sender_mail'),
$this->container->getParameter('trinity_user.sender_name')
)
->setTo(array($user->getEmail()))
->setBody($body, 'text/html')
;

View file

@ -24,6 +24,18 @@ class Configuration implements ConfigurationInterface
->scalarNode('bo_auth_role')
->defaultValue('ROLE_WEBMASTER')
->end()
->booleanNode('active_when_generate')
->defaultValue(false)
->end()
->scalarNode('sender_mail')
->defaultValue('noreply@webetdesign.com')
->end()
->scalarNode('sender_name')
->defaultValue('Web&Design')
->end()
->arrayNode('roles')
->prototype('scalar')
->end()

View file

@ -27,5 +27,9 @@ class TrinityUserExtension extends Extension
$container->setParameter('trinity_user.roles', isset($config['roles']) ? $config['roles'] : array());
$container->setParameter('trinity_user.bo_auth_role', $config['bo_auth_role']);
$container->setParameter('trinity_user.active_when_generate', $config['active_when_generate']);
$container->setParameter('trinity_user.sender_mail', $config['sender_mail']);
$container->setParameter('trinity_user.sender_name', $config['sender_name']);
}
}

View file

@ -1,3 +1,3 @@
error:
configuration: 'File not configured.'
notFound: 'File not found.'
configuration: 'Fichier non configuré.'
notFound: 'Fichier non trouvé.'

View file

@ -7,7 +7,15 @@
{% block file_widget %}
{# {% set dir = attr.upload_dir is defined ? attr.upload_dir ~ '/' : '/' %} #}
{% if form.vars.data is not null %}
{% set filename = form.vars.data %}
{% elseif form.parent is defined and form.parent.vars.data is not null %}
{% set method = 'get' ~ name|capitalize ~ 'AsFile' %}
{% set filename = attribute(form.parent.vars.data, method, []) %}
{% else %}
{% set filename = null %}
{% endif %}
{% if filename %}
{% set is_image = filename.__toString()|replace({'.png': '', '.jpg': '', '.jpeg': '', '.gif': ''})|length < filename.__toString()|length %}