Merge pull request #505 from roadster31/brands
- Brands implementation - image + documents refactoring - new smarty functions for form generation. - lots of code enhancements
This commit is contained in:
@@ -14,8 +14,6 @@ return array(
|
||||
'<strong>Warning</strong>, some of your shipping zones are not attached to any delivery module:' => '<strong>Warning</strong>, some of your shipping zones are not attached to any delivery module:',
|
||||
'A content could be attached to more than one folder. Select here the additional folders for this content.' => 'A content could be attached to more than one folder. Select here the additional folders for this content.',
|
||||
'A product could be attached to more than one category. Select here the additional categories for this product.' => 'A product could be attached to more than one category. Select here the additional categories for this product.',
|
||||
'A short description, used when a summary or an introduction is required' => 'A short description, used when a summary or an introduction is required',
|
||||
'A short post-description information' => 'A short post-description information',
|
||||
'Aborted orders' => 'Aborted orders',
|
||||
'Accessory title' => 'Accessory title',
|
||||
'Action' => 'Action',
|
||||
@@ -25,6 +23,7 @@ return array(
|
||||
'Add a condition' => 'Add a condition',
|
||||
'Add a new Customer' => 'Add a new Customer',
|
||||
'Add a new address' => 'Add a new address',
|
||||
'Add a new brand' => 'Add a new brand',
|
||||
'Add a new category' => 'Add a new category',
|
||||
'Add a new combination' => 'Add a new combination',
|
||||
'Add a new content' => 'Add a new content',
|
||||
@@ -84,6 +83,8 @@ return array(
|
||||
'Back-office template you want to translate' => 'Back-office template you want to translate',
|
||||
'Back-office templates' => 'Back-office templates',
|
||||
'Back-office users' => 'Back-office users',
|
||||
'Brand created on %date_create. Last modification: %date_change' => 'Brand created on %date_create. Last modification: %date_change',
|
||||
'Brands' => 'Brands',
|
||||
'Browse files' => 'Browse files',
|
||||
'Browse this category' => 'Browse this category',
|
||||
'Browse this folder' => 'Browse this folder',
|
||||
@@ -105,6 +106,7 @@ return array(
|
||||
'Cellular phone number' => 'Cellular phone number',
|
||||
'Change this administrator' => 'Change this administrator',
|
||||
'Change this attribute' => 'Change this attribute',
|
||||
'Change this brand' => 'Change this brand',
|
||||
'Change this condition' => 'Change this condition',
|
||||
'Change this country' => 'Change this country',
|
||||
'Change this coupon' => 'Change this coupon',
|
||||
@@ -167,6 +169,7 @@ return array(
|
||||
'Create a new administrator' => 'Create a new administrator',
|
||||
'Create a new attribute' => 'Create a new attribute',
|
||||
'Create a new attribute value' => 'Create a new attribute value',
|
||||
'Create a new brand' => 'Create a new brand',
|
||||
'Create a new category' => 'Create a new category',
|
||||
'Create a new combination' => 'Create a new combination',
|
||||
'Create a new content' => 'Create a new content',
|
||||
@@ -190,6 +193,7 @@ return array(
|
||||
'Create coupon' => 'Create coupon',
|
||||
'Create this address' => 'Create this address',
|
||||
'Create this attribute' => 'Create this attribute',
|
||||
'Create this brand' => 'Create this brand',
|
||||
'Create this category' => 'Create this category',
|
||||
'Create this combination' => 'Create this combination',
|
||||
'Create this content' => 'Create this content',
|
||||
@@ -239,6 +243,7 @@ return array(
|
||||
'Delete an order' => 'Delete an order',
|
||||
'Delete attribute' => 'Delete attribute',
|
||||
'Delete attribute value' => 'Delete attribute value',
|
||||
'Delete brand' => 'Delete brand',
|
||||
'Delete category' => 'Delete category',
|
||||
'Delete content' => 'Delete content',
|
||||
'Delete country' => 'Delete country',
|
||||
@@ -258,6 +263,7 @@ return array(
|
||||
'Delete this accessory' => 'Delete this accessory',
|
||||
'Delete this administrator' => 'Delete this administrator',
|
||||
'Delete this attribute' => 'Delete this attribute',
|
||||
'Delete this brand' => 'Delete this brand',
|
||||
'Delete this category and all its contents' => 'Delete this category and all its contents',
|
||||
'Delete this combination' => 'Delete this combination',
|
||||
'Delete this condition' => 'Delete this condition',
|
||||
@@ -299,6 +305,7 @@ return array(
|
||||
'Do you really want to delete this administrator ?' => 'Do you really want to delete this administrator ?',
|
||||
'Do you really want to delete this attribute ? It will be removed from all product templates.' => 'Do you really want to delete this attribute ? It will be removed from all product templates.',
|
||||
'Do you really want to delete this attribute value ?' => 'Do you really want to delete this attribute value ?',
|
||||
'Do you really want to delete this brand ?' => 'Do you really want to delete this brand ?',
|
||||
'Do you really want to delete this category and all its content ?' => 'Do you really want to delete this category and all its content ?',
|
||||
'Do you really want to delete this combination ?' => 'Do you really want to delete this combination ?',
|
||||
'Do you really want to delete this condition ?' => 'Do you really want to delete this condition ?',
|
||||
@@ -336,7 +343,6 @@ return array(
|
||||
'Do you really want to use this address by default ?' => 'Do you really want to use this address by default ?',
|
||||
'Document informations' => 'Document information',
|
||||
'Documents' => 'Documents',
|
||||
'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.' => 'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.',
|
||||
'Download invoice as PDF' => 'Download invoice as PDF',
|
||||
'Download purchase order as PDF' => 'Download purchase order as PDF',
|
||||
'Drop files to upload' => 'Drop files to upload',
|
||||
@@ -366,6 +372,8 @@ return array(
|
||||
'Edit an image' => 'Edit an image',
|
||||
'Edit an order' => 'Edit an order',
|
||||
'Edit attribute "%name"' => 'Edit attribute "%name"',
|
||||
'Edit brand' => 'Edit brand',
|
||||
'Edit brand %title' => 'Edit brand %title',
|
||||
'Edit category' => 'Edit category',
|
||||
'Edit category %title' => 'Edit category %title',
|
||||
'Edit content' => 'Edit content',
|
||||
@@ -398,6 +406,7 @@ return array(
|
||||
'Edit tax rule taxes' => 'Edit tax rule taxes',
|
||||
'Edit template "%name"' => 'Edit template "%name"',
|
||||
'Edit this address' => 'Edit this address',
|
||||
'Edit this brand' => 'Edit this brand',
|
||||
'Edit this category' => 'Edit this category',
|
||||
'Edit this content' => 'Edit this content',
|
||||
'Edit this customer' => 'Edit this customer',
|
||||
@@ -411,6 +420,7 @@ return array(
|
||||
'Editing %fold' => 'Editing %fold',
|
||||
'Editing %title' => 'Editing %title',
|
||||
'Editing attribute "%name"' => 'Editing attribute "%name"',
|
||||
'Editing brand "%title"' => 'Editing brand "%title"',
|
||||
'Editing country "%name"' => 'Editing country "%name"',
|
||||
'Editing coupon "%title"' => 'Editing coupon "%title"',
|
||||
'Editing currency "%name"' => 'Editing currency "%name"',
|
||||
@@ -457,6 +467,7 @@ return array(
|
||||
'Enter information in the default language (%title)' => 'Enter information in the default language (%title)',
|
||||
'Enter new accessory position' => 'Enter new accessory position',
|
||||
'Enter new attribute position' => 'Enter new attribute position',
|
||||
'Enter new brand position' => 'Enter new brand position',
|
||||
'Enter new category position' => 'Enter new category position',
|
||||
'Enter new content position' => 'Enter new content position',
|
||||
'Enter new currency position' => 'Enter new currency position',
|
||||
@@ -545,7 +556,6 @@ return array(
|
||||
'Invoice informations' => 'Invoice information',
|
||||
'Invoice reference' => 'Invoice reference',
|
||||
'Items to translate' => 'Items to translate',
|
||||
'Keep the most important part of your description in the first 150-160 characters.' => 'Keep the most important part of your description in the first 150-160 characters.',
|
||||
'Kg' => 'Kg',
|
||||
'Label' => 'Label',
|
||||
'Language name' => 'Language name',
|
||||
@@ -573,8 +583,6 @@ return array(
|
||||
'Mailing template name' => 'Mailing template name',
|
||||
'Mailing template purpose' => 'Mailing template purpose',
|
||||
'Mailing templates' => 'Mailing templates',
|
||||
'Make sure it uses keywords found within the page itself.' => 'Make sure it uses keywords found within the page itself.',
|
||||
'Make sure that your title is clear, and contains many of the keywords within the page itself.' => 'Make sure that your title is clear, and contains many of the keywords within the page itself.',
|
||||
'Manage attributes included in this product template' => 'Manage attributes included in this product template',
|
||||
'Manage features included in this product template' => 'Manage features included in this product template',
|
||||
'Manage module rights' => 'Manage module rights',
|
||||
@@ -605,10 +613,13 @@ return array(
|
||||
'No available content in this folder' => 'No available content in this folder',
|
||||
'No available product in this category' => 'No available product in this category',
|
||||
'No available value for this attribute' => 'No available value for this attribute',
|
||||
'No brand' => 'No brand',
|
||||
'No brand has been created yet. Click the + button to create one.' => 'No brand has been created yet. Click the + button to create one.',
|
||||
'No categories found' => 'No categories found',
|
||||
'No country has been created yet. Click the + button to create one.' => 'No country has been created yet. Click the + button to create one.',
|
||||
'No currency has been created yet. Click the + button to create one.' => 'No currency has been created yet. Click the + button to create one.',
|
||||
'No folders found' => 'No folders found',
|
||||
'No logo image' => 'No logo image',
|
||||
'No mailing template has been created yet. Click the + button to create one.' => 'No mailing template has been created yet. Click the + button to create one.',
|
||||
'No product attribute has been created yet. Click the + button to create one.' => 'No product attribute has been created yet. Click the + button to create one.',
|
||||
'No product feature has been created yet. Click the + button to create one.' => 'No product feature has been created yet. Click the + button to create one.',
|
||||
@@ -664,7 +675,6 @@ return array(
|
||||
'Port' => 'Port',
|
||||
'Port :' => 'Port :',
|
||||
'Position' => 'Position',
|
||||
'Post Scriptum' => 'Post Scriptum',
|
||||
'Postage' => 'Postage',
|
||||
'Postscriptum' => 'Postscriptum',
|
||||
'Preview' => 'Preview',
|
||||
@@ -731,7 +741,6 @@ return array(
|
||||
'Resource' => 'Resource',
|
||||
'Resource access rights' => 'Resource access rights',
|
||||
'Resources' => 'Resources',
|
||||
'Rewritten URL' => 'Rewritten URL',
|
||||
'Rights' => 'Rights',
|
||||
'SEO' => 'SEO',
|
||||
'Sale' => 'Sale',
|
||||
@@ -790,7 +799,6 @@ return array(
|
||||
'Shipping zones management' => 'Shipping zones management',
|
||||
'Shop' => 'Shop',
|
||||
'Shop Informations' => 'Shop Information',
|
||||
'Short conclusion' => 'Short conclusion',
|
||||
'Short description' => 'Short description',
|
||||
'Short description :' => 'Short description :',
|
||||
'Show logs' => 'Show logs',
|
||||
@@ -838,7 +846,6 @@ return array(
|
||||
'Template title' => 'Template title',
|
||||
'Templates' => 'Templates',
|
||||
'Text version of this message' => 'Text version of this message',
|
||||
'The HTML TITLE element is the most important element on your web page.' => 'The HTML TITLE element is the most important element on your web page.',
|
||||
'The default pricing is used when no combination is defined.' => 'The default pricing is used when no combination is defined.',
|
||||
'The destinations processes logs to display, store or send them. You can select and configure zero, one or more destinations below.' => 'The destinations processes logs to display, store or send them. You can select and configure zero, one or more destinations below.',
|
||||
'The detailed description.' => 'The detailed description.',
|
||||
@@ -936,6 +943,7 @@ return array(
|
||||
'Unit. price' => 'Unit. price',
|
||||
'Unlimited' => 'Unlimited',
|
||||
'Unlimited number of uses' => 'Unlimited number of uses',
|
||||
'Unsupported field type \'%type\' in form-field.html' => 'Unsupported field type \'%type\' in form-field.html',
|
||||
'Update' => 'Update',
|
||||
'Update an administrator' => 'Update an administrator',
|
||||
'Update coupon' => 'Update coupon',
|
||||
@@ -947,6 +955,7 @@ return array(
|
||||
'Use Ctrl+click to select (or deselect) more that one attribute value' => 'Use Ctrl+click to select (or deselect) more that one attribute value',
|
||||
'Use Ctrl+click to select (or deselect) more that one category' => 'Use Ctrl+click to select (or deselect) more that one category',
|
||||
'Use Ctrl+click to select (or deselect) more that one country' => 'Utiliser Ctrl+clic pour sélectionner (ou dé-sélectionner) plusieurs pays.',
|
||||
'Use Ctrl+click to select (or deselect) more that one item' => 'Use Ctrl+click to select (or deselect) more that one item',
|
||||
'Use Ctrl+click to select (or deselect) more that one product' => 'Use Ctrl+click to select (or deselect) more that one product',
|
||||
'Use Ctrl+click to select (or deselect) more that one shipping method' => 'Use Ctrl+click to select (or deselect) more that one shipping method',
|
||||
'Use Ctrl+click to select more than one value. You can also <a href="#" class="clear_feature_value" data-id="%id">clear selected values</a>.' => 'Use Ctrl+click to select more than one value. You can also <a href="#" class="clear_feature_value" data-id="%id">clear selected values</a>.',
|
||||
@@ -954,7 +963,6 @@ return array(
|
||||
'Use Text message defined below' => 'Use Text message defined below',
|
||||
'Use address by default' => 'Use address by default',
|
||||
'Use default layout' => 'Use default layout',
|
||||
'Use the keyword phrase in your URL.' => 'Use the keyword phrase in your URL.',
|
||||
'Use this address by default' => 'Use this address by default',
|
||||
'Used in your store front' => 'Used in your store front',
|
||||
'Username' => 'Username',
|
||||
@@ -989,7 +997,6 @@ return array(
|
||||
'You can change the default folder (%title) in the "General" tab.' => 'You can change the default folder (%title) in the "General" tab.',
|
||||
'You can\'t delete this administrator' => 'You can\'t delete this administrator',
|
||||
'You can\'t delete this profile' => 'You can\'t delete this profile',
|
||||
'You don\'t need to use commas or other punctuations.' => 'You don\'t need to use commas or other punctuations.',
|
||||
'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.' => 'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.',
|
||||
'Your current IP address is %ip' => 'Your current IP address is %ip',
|
||||
'Zip code' => 'Zip code',
|
||||
|
||||
@@ -14,8 +14,6 @@ return array(
|
||||
'<strong>Warning</strong>, some of your shipping zones are not attached to any delivery module:' => '<strong>Attention</strong>, les zones de livraison suivantes ne sont associées à aucun module:',
|
||||
'A content could be attached to more than one folder. Select here the additional folders for this content.' => 'Un contenu peut être rattaché à plusieurs dossiers. Sélectionnez ici les dossiers dans lesquels ce contenu apparaîtra',
|
||||
'A product could be attached to more than one category. Select here the additional categories for this product.' => 'Un produit peut être associé à plusieurs rubriques. Sélectionner les rubrique pour lesquels le produit sera associé',
|
||||
'A short description, used when a summary or an introduction is required' => 'Une courte description, utilisée lorsqu\'un résumé ou une introduction est requise',
|
||||
'A short post-description information' => 'Champs d\'information complémentaire',
|
||||
'Aborted orders' => 'Paniers abandonnés',
|
||||
'Accessory title' => 'Titre de l\'accessoire',
|
||||
'Action' => 'Action',
|
||||
@@ -25,6 +23,7 @@ return array(
|
||||
'Add a condition' => 'Ajouter une condition',
|
||||
'Add a new Customer' => 'Ajouter un client',
|
||||
'Add a new address' => 'Ajouter une nouvelle adresse',
|
||||
'Add a new brand' => 'Ajouter une nouvelle marque',
|
||||
'Add a new category' => 'Ajouter une catégorie',
|
||||
'Add a new combination' => 'Ajouter une nouvelle combinaison',
|
||||
'Add a new content' => 'Ajouter un nouveau contenu',
|
||||
@@ -84,6 +83,8 @@ return array(
|
||||
'Back-office template you want to translate' => 'Template back-office à traduire',
|
||||
'Back-office templates' => 'Templates Back-office',
|
||||
'Back-office users' => 'Utilisateur du B.O',
|
||||
'Brand created on %date_create. Last modification: %date_change' => 'Marque créée le %date_create. Dernière modification: %date_change',
|
||||
'Brands' => 'Marques et Fournisseurs',
|
||||
'Browse files' => 'Parcourir les fichiers',
|
||||
'Browse this category' => 'Parcourir cette catégorie',
|
||||
'Browse this folder' => 'Parcourir ce dossier',
|
||||
@@ -105,6 +106,7 @@ return array(
|
||||
'Cellular phone number' => 'Numéro de portable',
|
||||
'Change this administrator' => 'Modifier cet administrateur',
|
||||
'Change this attribute' => 'Modifier cette déclinaison',
|
||||
'Change this brand' => 'Modifiercette marque',
|
||||
'Change this condition' => 'Modifier cette condition',
|
||||
'Change this country' => 'Modifier ce pays',
|
||||
'Change this coupon' => 'Modifier ce code promo',
|
||||
@@ -167,6 +169,7 @@ return array(
|
||||
'Create a new administrator' => 'Créer un nouvel administrateur',
|
||||
'Create a new attribute' => 'Créer une nouvelle déclinaison',
|
||||
'Create a new attribute value' => 'Créer une nouvelle valeur de déclinaison',
|
||||
'Create a new brand' => 'Ajouter une nouvelle marque',
|
||||
'Create a new category' => 'Créer une nouvelle rubrique',
|
||||
'Create a new combination' => 'Créer une nouvelle combinaison',
|
||||
'Create a new content' => 'Créer un nouveau contenu',
|
||||
@@ -190,6 +193,7 @@ return array(
|
||||
'Create coupon' => 'Créer un code promo',
|
||||
'Create this address' => 'Créer cette adresse',
|
||||
'Create this attribute' => 'Créer cette déclinaison',
|
||||
'Create this brand' => 'Ajouter cette marque',
|
||||
'Create this category' => 'Créer cette rubrique',
|
||||
'Create this combination' => 'Créer cette combinaison',
|
||||
'Create this content' => 'Créer ce contenu',
|
||||
@@ -239,6 +243,7 @@ return array(
|
||||
'Delete an order' => 'Supprimer une commande',
|
||||
'Delete attribute' => 'Supprimer cette déclinaison',
|
||||
'Delete attribute value' => 'Supprimer une valeur de déclinaison',
|
||||
'Delete brand' => 'Supprimer cette marque',
|
||||
'Delete category' => 'Supprimer cette rubrique',
|
||||
'Delete content' => 'Supprimer le contenu',
|
||||
'Delete country' => 'Supprimer le pays',
|
||||
@@ -258,6 +263,7 @@ return array(
|
||||
'Delete this accessory' => 'Supprimer cet accessoire',
|
||||
'Delete this administrator' => 'Supprimer cet administrateur',
|
||||
'Delete this attribute' => 'Supprimer cette déclinaison',
|
||||
'Delete this brand' => 'Supprimer cette marque',
|
||||
'Delete this category and all its contents' => 'Supprimer cette rubrique et tout ce qu\'elle contient ?',
|
||||
'Delete this combination' => 'Supprimer cette combinaison',
|
||||
'Delete this condition' => 'Supprimer cette condition',
|
||||
@@ -299,6 +305,7 @@ return array(
|
||||
'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet administrateur ?',
|
||||
'Do you really want to delete this attribute ? It will be removed from all product templates.' => 'Voulez-vous vraiment supprimer cette déclinaison ? Elle sera supprimée de tous les gabarits de produit.',
|
||||
'Do you really want to delete this attribute value ?' => 'Voulez-vous vraiment supprimer cette déclinaison ?',
|
||||
'Do you really want to delete this brand ?' => 'Confirmez-vous la suppresison de cette marque ?',
|
||||
'Do you really want to delete this category and all its content ?' => 'Voulez-vous vraiment supprimer cette rubrique et tout ce qu\'elle contient ?',
|
||||
'Do you really want to delete this combination ?' => 'Voulez-vous vraiment supprimer cette combinaison ?',
|
||||
'Do you really want to delete this condition ?' => 'Supprimer cette condition ?',
|
||||
@@ -336,7 +343,6 @@ return array(
|
||||
'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?',
|
||||
'Document informations' => 'Informations du document',
|
||||
'Documents' => 'Documents',
|
||||
'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.' => 'Ne répétez pas sans cesse les même mots-clés dans une ligne. Préférez utiliser des expressions de mots-clés',
|
||||
'Download invoice as PDF' => 'Télécharger la facture au format PDF',
|
||||
'Download purchase order as PDF' => 'Télécharger le bon de commande au format PDF',
|
||||
'Drop files to upload' => 'Déposez des fichiers à envoyer',
|
||||
@@ -366,6 +372,8 @@ return array(
|
||||
'Edit an image' => 'Modifier une image',
|
||||
'Edit an order' => 'Editer une commande',
|
||||
'Edit attribute "%name"' => 'Modifier la déclinaison "%name"',
|
||||
'Edit brand' => 'Modifier un marque',
|
||||
'Edit brand %title' => 'Edition de la marque "%title"',
|
||||
'Edit category' => 'Editer la rubrique',
|
||||
'Edit category %title' => 'Modifier la rubrique %title',
|
||||
'Edit content' => 'Modifier le contenu',
|
||||
@@ -398,6 +406,7 @@ return array(
|
||||
'Edit tax rule taxes' => 'Modifier les taxes de la règle de taxe',
|
||||
'Edit template "%name"' => 'Modifier le gabarit "%name"',
|
||||
'Edit this address' => 'Editer cette adresse',
|
||||
'Edit this brand' => 'Modifier cette marque',
|
||||
'Edit this category' => 'Editer cette rubrique',
|
||||
'Edit this content' => 'Modifier ce contenu',
|
||||
'Edit this customer' => 'Modifier ce client',
|
||||
@@ -411,6 +420,7 @@ return array(
|
||||
'Editing %fold' => 'Modification de %fold',
|
||||
'Editing %title' => 'En cours de modification de %title',
|
||||
'Editing attribute "%name"' => 'En cours de modification de la déclinaison "%name"',
|
||||
'Editing brand "%title"' => 'Edition de la marque "%title"',
|
||||
'Editing country "%name"' => 'En cours de modification du pays "%name"',
|
||||
'Editing coupon "%title"' => 'Edition du code promo "%title" ',
|
||||
'Editing currency "%name"' => 'En cours de modification de la devise "%name"',
|
||||
@@ -457,6 +467,7 @@ return array(
|
||||
'Enter information in the default language (%title)' => 'Entrez les informations dans la langue par défaut (%title) ',
|
||||
'Enter new accessory position' => 'Renseigner la nouvelle position pour cet accessoire',
|
||||
'Enter new attribute position' => 'Modifier la position de la déclinaison',
|
||||
'Enter new brand position' => 'Indiquez la position désirée',
|
||||
'Enter new category position' => 'Classement de la catégorie',
|
||||
'Enter new content position' => 'Modifier la position du contenu',
|
||||
'Enter new currency position' => 'Modifier la position de la devise',
|
||||
@@ -545,7 +556,6 @@ return array(
|
||||
'Invoice informations' => 'Informations de facturation',
|
||||
'Invoice reference' => 'Facture ref',
|
||||
'Items to translate' => 'Elément à traduire',
|
||||
'Keep the most important part of your description in the first 150-160 characters.' => 'Votre description ne devrait pas dépasser 150 à 160 caractères',
|
||||
'Kg' => 'Kg',
|
||||
'Label' => 'Libellé',
|
||||
'Language name' => 'Nom de la langue',
|
||||
@@ -573,8 +583,6 @@ return array(
|
||||
'Mailing template name' => 'Nom du template de mailing',
|
||||
'Mailing template purpose' => 'Role du template de mailing',
|
||||
'Mailing templates' => 'Template e-mail',
|
||||
'Make sure it uses keywords found within the page itself.' => 'Assurez vous d\'utiliser des mots-clés présents dans la page courante',
|
||||
'Make sure that your title is clear, and contains many of the keywords within the page itself.' => 'Assurez-vous d\'avoir un titre clair et qui contient les mots-clés correspondant à la page en cours',
|
||||
'Manage attributes included in this product template' => 'Gestion des déclinaisons présentes dans ce gabarit de produit',
|
||||
'Manage features included in this product template' => 'Gestion des caractéristiques présentes dans ce gabarit de produit',
|
||||
'Manage module rights' => 'Gestion des droits pour les modules',
|
||||
@@ -605,10 +613,13 @@ return array(
|
||||
'No available content in this folder' => 'Ce dossier n\'a pas de contenu',
|
||||
'No available product in this category' => 'Aucun produit disponible dans cette rubrique',
|
||||
'No available value for this attribute' => 'Aucune valeur disponible pour cette déclinaison',
|
||||
'No brand' => 'Aucune marque',
|
||||
'No brand has been created yet. Click the + button to create one.' => 'Aucune marque n\'a encore été créée. Cliquez le boputon + pour en ajouter une.',
|
||||
'No categories found' => 'Aucune rubrique trouvée',
|
||||
'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un',
|
||||
'No currency has been created yet. Click the + button to create one.' => 'Aucune devise n\'a encore été crée. Cliquez sur le bouton + pour en créer une.',
|
||||
'No folders found' => 'Aucun dossier n\'a été trouvé.',
|
||||
'No logo image' => 'Aucun logo',
|
||||
'No mailing template has been created yet. Click the + button to create one.' => 'Aucun template de mailing n\'a encore été créé. Cliquez sur le bouton + pour en ajouter un.',
|
||||
'No product attribute has been created yet. Click the + button to create one.' => 'Aucune déclinaison produit n\'a encore été créée. Cliquez sur le bouton + pour en créer une.',
|
||||
'No product feature has been created yet. Click the + button to create one.' => 'Aucune caractéristique produit n\'a encore été ajoutée. Cliquez sur le bouton + pour en créer une.',
|
||||
@@ -664,7 +675,6 @@ return array(
|
||||
'Port' => 'Port',
|
||||
'Port :' => 'Port : ',
|
||||
'Position' => 'Position',
|
||||
'Post Scriptum' => 'Post-scriptum',
|
||||
'Postage' => 'Frais de livraison',
|
||||
'Postscriptum' => 'Post-scriptum',
|
||||
'Preview' => 'Prévisualisation',
|
||||
@@ -731,7 +741,6 @@ return array(
|
||||
'Resource' => 'Ressource',
|
||||
'Resource access rights' => 'Droits d\'accès pour les ressources',
|
||||
'Resources' => 'Ressources',
|
||||
'Rewritten URL' => 'URL réécrites',
|
||||
'Rights' => 'Droits',
|
||||
'SEO' => 'SEO',
|
||||
'Sale' => 'En promo',
|
||||
@@ -790,7 +799,6 @@ return array(
|
||||
'Shipping zones management' => 'Zones de livraison',
|
||||
'Shop' => 'Boutique',
|
||||
'Shop Informations' => 'Informations sur la boutique',
|
||||
'Short conclusion' => 'Courte conclusion',
|
||||
'Short description' => 'Description courte',
|
||||
'Short description :' => 'Description courte : ',
|
||||
'Show logs' => 'Voir les logs',
|
||||
@@ -838,7 +846,6 @@ return array(
|
||||
'Template title' => 'Titre du gabarit',
|
||||
'Templates' => 'Gabarits de produit',
|
||||
'Text version of this message' => 'Version texte du message',
|
||||
'The HTML TITLE element is the most important element on your web page.' => 'L\'élément HTML TITLE est le plus important dans votre page',
|
||||
'The default pricing is used when no combination is defined.' => 'Le prix pas défaut est utilisez lorsqu\'aucune combinaison n\'est utilisé',
|
||||
'The destinations processes logs to display, store or send them. You can select and configure zero, one or more destinations below.' => 'Les destinations permettent d\'afficher, stocker ou bien envoyer les logs. Vous pouvez en sélectionner zéro, un ou plusieurs dans la liste ci-dessous',
|
||||
'The detailed description.' => 'La description détaillée.',
|
||||
@@ -936,6 +943,7 @@ return array(
|
||||
'Unit. price' => 'Prix unitaire',
|
||||
'Unlimited' => 'Illimité',
|
||||
'Unlimited number of uses' => 'Nombre d\'utilisations illimité',
|
||||
'Unsupported field type \'%type\' in form-field.html' => 'Le type de champ \'%type\' n\'est pas suppporté par form-field.html ',
|
||||
'Update' => 'Mettre à jour',
|
||||
'Update an administrator' => 'Mettre à jour cet administrateur',
|
||||
'Update coupon' => 'Mettre à jour le code',
|
||||
@@ -947,6 +955,7 @@ return array(
|
||||
'Use Ctrl+click to select (or deselect) more that one attribute value' => 'Ctrl+clic permet de séléctionner (ou dé-selectionner) plusieurs valeurs de déclinaison.',
|
||||
'Use Ctrl+click to select (or deselect) more that one category' => 'Ctrl+Clic permet de sélectionner ou dé-sélectionner plus d\'une catégorie',
|
||||
'Use Ctrl+click to select (or deselect) more that one country' => 'Ctrl+Clic permet de sélectionner ou dé-sélectionner plus d\'un pays',
|
||||
'Use Ctrl+click to select (or deselect) more that one item' => 'Utilisez Ctrl+clic pour séléctionner (ou dé-selectionner) plus d\'un élément',
|
||||
'Use Ctrl+click to select (or deselect) more that one product' => 'Ctrl+Clic permet de sélectionner ou dé-sélectionner plus d\'un produit',
|
||||
'Use Ctrl+click to select (or deselect) more that one shipping method' => 'Ctrl+Clic permet de sélectionner ou dé-sélectionner plus d\'un mode de transport',
|
||||
'Use Ctrl+click to select more than one value. You can also <a href="#" class="clear_feature_value" data-id="%id">clear selected values</a>.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi <a href="#" class="clear_feature_value" data-id="%id">tout désélectionner</a>.',
|
||||
@@ -954,7 +963,6 @@ return array(
|
||||
'Use Text message defined below' => 'Utiliser la version texte définie ci-dessous',
|
||||
'Use address by default' => 'Utiliser comme adresse par défaut',
|
||||
'Use default layout' => 'Utiliser le layout par défaut',
|
||||
'Use the keyword phrase in your URL.' => 'Utilisez des mots clés dans votre url',
|
||||
'Use this address by default' => 'Utiliser cette adresse par défaut',
|
||||
'Used in your store front' => 'Utilisé dans le front de votre boutique',
|
||||
'Username' => 'Nom d\'utilisateur',
|
||||
@@ -989,7 +997,6 @@ return array(
|
||||
'You can change the default folder (%title) in the "General" tab.' => 'Vous pouvez modifier le dossier par défaut (%title) dans l\'onglet "Général".',
|
||||
'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur',
|
||||
'You can\'t delete this profile' => 'Vous ne pouvez pas supprimer ce profil',
|
||||
'You don\'t need to use commas or other punctuations.' => 'Vous n\'avez pas besoin d\'utiliser de virgules ou d\'autres signes de ponctuation',
|
||||
'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.' => 'Vous pouvez aussi créer rapidement une série de combinaisons avec <a href="%url" data-toggle="modal">le gestionnaire de combinaisons</a>.',
|
||||
'Your current IP address is %ip' => 'Votre adresse IP est %ip',
|
||||
'Zip code' => 'Code postal',
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
ul.thumbnails.image_picker_selector {
|
||||
overflow: auto;
|
||||
list-style-image: none;
|
||||
list-style-position: outside;
|
||||
list-style-type: none;
|
||||
padding: 0px;
|
||||
margin: 0px; }
|
||||
ul.thumbnails.image_picker_selector ul {
|
||||
overflow: auto;
|
||||
list-style-image: none;
|
||||
list-style-position: outside;
|
||||
list-style-type: none;
|
||||
padding: 0px;
|
||||
margin: 0px; }
|
||||
ul.thumbnails.image_picker_selector li.group_title {
|
||||
float: none; }
|
||||
ul.thumbnails.image_picker_selector li {
|
||||
margin: 0px 12px 12px 0px;
|
||||
float: left; }
|
||||
ul.thumbnails.image_picker_selector li .thumbnail {
|
||||
padding: 6px;
|
||||
border: 1px solid #dddddd;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none; }
|
||||
ul.thumbnails.image_picker_selector li .thumbnail img {
|
||||
-webkit-user-drag: none; }
|
||||
ul.thumbnails.image_picker_selector li .thumbnail.selected {
|
||||
background: #f39922; }
|
||||
7
templates/backOffice/default/assets/js/image-picker/image-picker.min.js
vendored
Normal file
7
templates/backOffice/default/assets/js/image-picker/image-picker.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
199
templates/backOffice/default/brand-edit.html
Normal file
199
templates/backOffice/default/brand-edit.html
Normal file
@@ -0,0 +1,199 @@
|
||||
{extends file="admin-layout.tpl"}
|
||||
|
||||
{block name="after-admin-css"}
|
||||
{stylesheets file='assets/js/image-picker/image-picker.css'}
|
||||
<link rel="stylesheet" href="{$asset_url}">
|
||||
{/stylesheets}
|
||||
{/block}
|
||||
|
||||
{block name="no-return-functions"}
|
||||
{$admin_current_location = 'tools'}
|
||||
{/block}
|
||||
|
||||
{block name="check-resource"}admin.brand{/block}
|
||||
{block name="check-access"}view{/block}
|
||||
|
||||
{block name="page-title"}{intl l='Edit brand'}{/block}
|
||||
|
||||
{block name="main-content"}
|
||||
<div class="brand edit-brand">
|
||||
<div id="wrapper" class="container">
|
||||
{loop name="brand_edit" type="brand" visible="*" id="{$brand_id}" backend_context="1" lang="$edit_language_id"}
|
||||
|
||||
<nav>
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="{url path='admin/home'}">{intl l='Home'}</a></li>
|
||||
<li><a href="{url path='admin/tools'}">{intl l='Tools'}</a></li>
|
||||
<li><a href="{url path='admin/brand'}">{intl l='Brands'}</a></li>
|
||||
<li>{intl l='Editing brand "%title"' title="$TITLE"}</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 general-block-decorator">
|
||||
<div class="row">
|
||||
<div class="col-md-7 title">
|
||||
{intl l='Edit brand %title' title={$TITLE}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<ul class="nav nav-tabs" id="tabbed-menu">
|
||||
<li class="active">
|
||||
<a href="#general" data-toggle="tab">{intl l="General description"}</a>
|
||||
</li>
|
||||
<li><a href="#seo" data-toggle="tab">{intl l="SEO"}</a></li>
|
||||
<li><a href="#images" data-toggle="tab">{intl l="Images"}</a></li>
|
||||
<li><a href="#documents" data-toggle="tab">{intl l="Documents"}</a></li>
|
||||
<li><a href="#modules" data-toggle="tab">{intl l="Modules"}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
|
||||
<div class="tab-pane fade active in" id="general">
|
||||
|
||||
<div class="form-container">
|
||||
|
||||
{form name="thelia.admin.brand.modification"}
|
||||
|
||||
<form method="POST" action="{url path="/admin/brand/save/{$ID}"}" {form_enctype form=$form} class="clearfix">
|
||||
|
||||
{include file="includes/inner-form-toolbar.html" close_url={url path='/admin/brand'}}
|
||||
|
||||
<input type="hidden" name="current_tab" value="general"/>
|
||||
|
||||
{* Be sure to get the currency ID, even if the form could not be validated *}
|
||||
<input type="hidden" name="brand_id" value="{$ID}" />
|
||||
|
||||
{form_hidden_fields form=$form}
|
||||
|
||||
{render_form_field form=$form field="success_url" value={url path="/admin/brand"}}
|
||||
{render_form_field form=$form field="locale" value={$edit_language_locale}}
|
||||
|
||||
{if $form_error}
|
||||
<div class="alert alert-danger">{$form_error_message}</div>
|
||||
{/if}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
{include file="includes/standard-description-form-fields.html"}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{render_form_field form=$form field="visible"}
|
||||
|
||||
{custom_render_form_field form=$form field='logo_image_id'}
|
||||
<select {form_field_attributes form=$form field='logo_image_id' extra_class='brand-image-selector'} >
|
||||
<option value="">{intl l="No logo image"}</option>
|
||||
|
||||
{loop name="brand-images" type="image" brand=$ID width="90" height="90" resize_mode="crop"}
|
||||
<option value="{$ID}" data-img-src="{$IMAGE_URL}" {if $LOGO_IMAGE_ID == $ID}selected="selected"{/if}>{$TITLE}</option>
|
||||
{/loop}
|
||||
</select>
|
||||
{/custom_render_form_field}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include
|
||||
file="includes/inner-form-toolbar.html"
|
||||
hide_submit_buttons = false
|
||||
hide_flags = true
|
||||
|
||||
close_url={url path="/admin/brand"}
|
||||
}
|
||||
|
||||
<small>{intl l='Brand created on %date_create. Last modification: %date_change' date_create={format_date date=$CREATE_DATE} date_change={format_date date=$UPDATE_DATE} }</small>
|
||||
</form>
|
||||
{/form}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="seo">
|
||||
{form name="thelia.admin.seo"}
|
||||
{include
|
||||
file = "includes/seo-tab.html"
|
||||
form = $form
|
||||
formAction = {url path='/admin/brand/seo/save'}
|
||||
closeUrl = {url path='/admin/brand'}
|
||||
current_id = $brand_id
|
||||
}
|
||||
{/form}
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="images">
|
||||
{include file='includes/image-upload-form.html' imageType='brand' parentId=$brand_id}
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="documents">
|
||||
{include file='includes/document-upload-form.html' documentType='brand' parentId=$brand_id}
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="modules">
|
||||
<div class="form-container">
|
||||
{include
|
||||
file = "includes/inner-form-toolbar.html"
|
||||
hide_submit_buttons = true
|
||||
page_url = {$pageUrl}
|
||||
close_url = {$closeUrl}
|
||||
current_tab = "modules"
|
||||
}
|
||||
</div>
|
||||
|
||||
{include file="includes/module-tab-content.html" location="brand-edit"}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/loop}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
|
||||
|
||||
{block name="javascript-initialization"}
|
||||
{javascripts file='assets/js/dropzone.js'}
|
||||
<script src="{$asset_url}"></script>
|
||||
{/javascripts}
|
||||
{javascripts file='assets/js/image-upload.js'}
|
||||
<script src="{$asset_url}"></script>
|
||||
{/javascripts}
|
||||
{javascripts file='assets/js/document-upload.js'}
|
||||
<script src="{$asset_url}"></script>
|
||||
{/javascripts}
|
||||
{javascripts file='assets/js/jquery-ui-1.10.3.custom.min.js'}
|
||||
<script src="{$asset_url}"></script>
|
||||
{/javascripts}
|
||||
{javascripts file='assets/js/image-picker/image-picker.min.js'}
|
||||
<script src="{$asset_url}"></script>
|
||||
{/javascripts}
|
||||
<script>
|
||||
$(function() {
|
||||
// Load active tab
|
||||
|
||||
$.imageUploadManager.initImageDropZone();
|
||||
$.documentUploadManager.initDocumentDropZone();
|
||||
|
||||
$('.use_default_rewriten_url').click(function(ev) {
|
||||
alert("Not functionnal");
|
||||
|
||||
ev.preventDefault();
|
||||
});
|
||||
|
||||
// Show proper tab, if defined
|
||||
{if ! empty($current_tab)}
|
||||
$('.nav-tabs a[href="#{$current_tab}"]').trigger("click");
|
||||
{/if}
|
||||
|
||||
$('.brand-image-selector').imagepicker();
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
|
||||
{block name="javascript-last-call"}
|
||||
{module_include location='brand-edit-js'}
|
||||
{/block}
|
||||
318
templates/backOffice/default/brands.html
Normal file
318
templates/backOffice/default/brands.html
Normal file
@@ -0,0 +1,318 @@
|
||||
{extends file="admin-layout.tpl"}
|
||||
|
||||
{block name="no-return-functions"}
|
||||
{$admin_current_location = 'tools'}
|
||||
{/block}
|
||||
|
||||
{block name="page-title"}{intl l='Brands'}{/block}
|
||||
|
||||
{block name="check-resource"}admin.brand{/block}
|
||||
{block name="check-access"}view{/block}
|
||||
|
||||
{block name="main-content"}
|
||||
<div class="brands">
|
||||
|
||||
<div id="wrapper" class="container">
|
||||
|
||||
<ul class="breadcrumb">
|
||||
<li><a href="{url path='/admin/home'}">{intl l="Home"}</a></li>
|
||||
<li><a href="{url path='/admin/tools'}">{intl l="Tools"}</a></li>
|
||||
<li><a href="{url path='/admin/brand'}">{intl l="Brands"}</a></li>
|
||||
</ul>
|
||||
|
||||
{module_include location='brands_top'}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="general-block-decorator">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-condensed">
|
||||
<caption class="clearfix">
|
||||
{intl l='Brands'}
|
||||
{loop type="auth" name="can_create" role="ADMIN" resource="admin.brand" access="CREATE"}
|
||||
<span class="pull-right">
|
||||
<a class="btn btn-default btn-primary" title="{intl l='Add a new brand'}" href="#creation_dialog" data-toggle="modal">
|
||||
<span class="glyphicon glyphicon-plus-sign"></span>
|
||||
</a>
|
||||
</span>
|
||||
{/loop}
|
||||
</caption>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
{admin_sortable_header
|
||||
current_order=$order
|
||||
order='id'
|
||||
reverse_order='id-reverse'
|
||||
path='/admin/brands'
|
||||
label="{intl l='ID'}"
|
||||
}
|
||||
</th>
|
||||
|
||||
<th> </th>
|
||||
|
||||
<th>
|
||||
{admin_sortable_header
|
||||
current_order=$order
|
||||
order='alpha'
|
||||
reverse_order='alpha-reverse'
|
||||
path='/admin/brand'
|
||||
label="{intl l='Name'}"
|
||||
}
|
||||
</th>
|
||||
|
||||
<th class="text-center">
|
||||
{admin_sortable_header
|
||||
current_order=$order
|
||||
order='manual'
|
||||
reverse_order='manual-reverse'
|
||||
path='/admin/brand'
|
||||
label="{intl l="Position"}"
|
||||
}
|
||||
</th>
|
||||
|
||||
<th class="text-center">
|
||||
{admin_sortable_header
|
||||
current_order=$content_order
|
||||
order='visible'
|
||||
reverse_order='visible-reverse'
|
||||
path={url path='/admin/brand'}
|
||||
label="{intl l='Online'}"
|
||||
}
|
||||
</th>
|
||||
|
||||
{module_include location='brands_table_header'}
|
||||
|
||||
<th class="actions">{intl l='Actions'}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{loop name="brands" type="brand" visible="*" backend_context="1" lang=$lang_id order=$order}
|
||||
<tr>
|
||||
<td>{$ID}</td>
|
||||
|
||||
<td>
|
||||
{loop type="image" name="folder_image" source="brand" source_id="$ID" limit="1" width="50" height="50" resize_mode="crop" backend_context="1"}
|
||||
<a href="{url path="admin/brand/update/$OBJECT_ID"}" title="{intl l='Edit this brand'}">
|
||||
<img src="{$IMAGE_URL}" alt="{$TITLE}" />
|
||||
</a>
|
||||
{/loop}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{loop type="auth" name="can_change" role="ADMIN" resource="admin.brand" access="UPDATE"}
|
||||
<a title="{intl l='Change this brand'}" href="{url path="/admin/brand/update/$ID"}">{$TITLE}</a>
|
||||
{/loop}
|
||||
{elseloop rel="can_change"}
|
||||
{$TITLE}
|
||||
{/elseloop}
|
||||
</td>
|
||||
|
||||
<td class="text-center">
|
||||
{admin_position_block
|
||||
resource="admin.brand"
|
||||
access="UPDATE"
|
||||
path="/admin/brand/update-position"
|
||||
url_parameter="brand_id"
|
||||
in_place_edit_class="brandPositionChange"
|
||||
position="$POSITION"
|
||||
id="$ID"
|
||||
}
|
||||
</td>
|
||||
|
||||
<td class="text-center">
|
||||
{loop type="auth" name="can_change" role="ADMIN" resource="admin.brand" access="UPDATE"}
|
||||
<div class="make-switch switch-small visibleToggle" data-id="{$ID}" data-on="success" data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok'></i>" data-off-label="<i class='glyphicon glyphicon-remove'></i>">
|
||||
<input type="checkbox" class="visibleToggle" {if $VISIBLE == 1}checked="checked"{/if}>
|
||||
</div>
|
||||
{/loop}
|
||||
|
||||
{elseloop rel="can_change"}
|
||||
<div class="make-switch switch-small" data-on="success" data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok'></i>" data-off-label="<i class='glyphicon glyphicon-remove'></i>">
|
||||
<input type="checkbox" class="disabled" disabled="disabled" {if $VISIBLE == 1}checked="checked"{/if}>
|
||||
</div>
|
||||
{/elseloop}
|
||||
</td>
|
||||
|
||||
{module_include location='brands_table_row'}
|
||||
|
||||
<td class="actions">
|
||||
<div class="btn-group">
|
||||
{loop type="auth" name="can_change" role="ADMIN" resource="admin.brand" access="UPDATE"}
|
||||
<a class="btn btn-default btn-xs brand-change" title="{intl l='Change this brand'}" href="{url path="/admin/brand/update/$ID"}">
|
||||
<span class="glyphicon glyphicon-edit"></span>
|
||||
</a>
|
||||
{/loop}
|
||||
|
||||
{loop type="auth" name="can_delete" role="ADMIN" resource="admin.brand" access="DELETE"}
|
||||
<a class="btn btn-default btn-xs brand-delete" title="{intl l='Delete this brand'}" href="#delete_dialog" data-id="{$ID}" data-toggle="modal">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
{/loop}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/loop}
|
||||
{elseloop rel="brands"}
|
||||
<tr>
|
||||
<td colspan="8">
|
||||
<div class="alert alert-info">
|
||||
{intl l="No brand has been created yet. Click the + button to create one."}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/elseloop}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{module_include location='brands_bottom'}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{* Adding a new brand *}
|
||||
|
||||
{form name="thelia.admin.brand.creation"}
|
||||
|
||||
{* Capture the dialog body, to pass it to the generic dialog *}
|
||||
{capture "creation_dialog"}
|
||||
{form_hidden_fields form=$form}
|
||||
|
||||
{loop type="lang" name="default-lang" default_only="1"}
|
||||
{* Switch edition to the current locale *}
|
||||
<input type="hidden" name="edit_language_id" value="{$ID}" />
|
||||
|
||||
{render_form_field form=$form field="locale" value=$LOCALE}
|
||||
{/loop}
|
||||
|
||||
{render_form_field form=$form field="success_url" value={url path='/admin/brand/update/_ID_'}}
|
||||
|
||||
{custom_render_form_field form=$form field="title"}
|
||||
{loop type="lang" name="default-lang" default_only="1"}
|
||||
{* Switch edition to the current locale *}
|
||||
<input type="hidden" name="edit_language_id" value="{$ID}" />
|
||||
|
||||
{render_form_field form=$form field="locale" value=$LOCALE}
|
||||
|
||||
<div class="input-group">
|
||||
<input type="text" {form_field_attributes form=$form field="title"}>
|
||||
<span class="input-group-addon"><img src="{image file="assets/img/flags/{$CODE}.png"}" alt="{$TITLE}" /></span>
|
||||
</div>
|
||||
{/loop}
|
||||
{/custom_render_form_field}
|
||||
|
||||
{render_form_field form=$form field="visible"}
|
||||
|
||||
{module_include location='brand_create_form'}
|
||||
|
||||
{/capture}
|
||||
|
||||
{include
|
||||
file = "includes/generic-create-dialog.html"
|
||||
|
||||
dialog_id = "creation_dialog"
|
||||
dialog_title = {intl l="Create a new brand"}
|
||||
dialog_body = {$smarty.capture.creation_dialog nofilter}
|
||||
|
||||
dialog_ok_label = {intl l="Create this brand"}
|
||||
|
||||
form_action = {url path='/admin/brand/create'}
|
||||
form_enctype = {form_enctype form=$form}
|
||||
form_error_message = $form_error_message
|
||||
}
|
||||
{/form}
|
||||
|
||||
|
||||
{* Delete confirmation dialog *}
|
||||
|
||||
{capture "delete_dialog"}
|
||||
<input type="hidden" name="brand_id" id="brand_delete_id" value="" />
|
||||
|
||||
{module_include location='brand_delete_form'}
|
||||
|
||||
{/capture}
|
||||
|
||||
{include
|
||||
file = "includes/generic-confirm-dialog.html"
|
||||
|
||||
dialog_id = "delete_dialog"
|
||||
dialog_title = {intl l="Delete brand"}
|
||||
dialog_message = {intl l="Do you really want to delete this brand ?"}
|
||||
|
||||
form_action = {url path='/admin/brand/delete'}
|
||||
form_content = {$smarty.capture.delete_dialog nofilter}
|
||||
}
|
||||
{/block}
|
||||
|
||||
{block name="javascript-initialization"}
|
||||
|
||||
{javascripts file='assets/js/bootstrap-switch/bootstrap-switch.js'}
|
||||
<script src="{$asset_url}"></script>
|
||||
{/javascripts}
|
||||
|
||||
{javascripts file='assets/js/bootstrap-editable/bootstrap-editable.js'}
|
||||
<script src="{$asset_url}"></script>
|
||||
{/javascripts}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
// Set proper brand ID in delete from
|
||||
$('a.brand-delete').click(function(ev) {
|
||||
$('#brand_delete_id').val($(this).data('id'));
|
||||
});
|
||||
|
||||
// JS stuff for creation form
|
||||
{include
|
||||
file = "includes/generic-js-dialog.html"
|
||||
dialog_id = "creation_dialog"
|
||||
form_name = "thelia.admin.brand.creation"
|
||||
}
|
||||
|
||||
{* Inline editing of object position using bootstrap-editable *}
|
||||
|
||||
$('.brandPositionChange').editable({
|
||||
type : 'text',
|
||||
title : '{intl l="Enter new brand position"}',
|
||||
mode : 'popup',
|
||||
inputclass : 'input-mini',
|
||||
placement : 'left',
|
||||
success : function(response, newValue) {
|
||||
// The URL template
|
||||
var url = "{url noamp='1' path='/admin/brand/update-position' brand_id='__ID__' position='__POS__'}";
|
||||
|
||||
// Perform subtitutions
|
||||
url = url.replace('__ID__', $(this).data('id')).replace('__POS__', newValue);
|
||||
|
||||
// Reload the page
|
||||
location.href = url;
|
||||
}
|
||||
});
|
||||
|
||||
{* Visibility toggle *}
|
||||
|
||||
$(".visibleToggle").on('switch-change', function(event, data) {
|
||||
$.ajax({
|
||||
url : "{url path='admin/brand/toggle-online'}",
|
||||
data : {
|
||||
brand_id : $(this).data('id'),
|
||||
action : 'visibilityToggle'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
|
||||
{block name="javascript-last-call"}
|
||||
{module_include location='brands-js'}
|
||||
{/block}
|
||||
@@ -35,18 +35,13 @@
|
||||
hide_submit_buttons = false
|
||||
|
||||
page_url = "{url path="/admin/document/type/{$documentType}/{$ID}/update"}"
|
||||
close_url = "{url path="{$redirectUrl}" noamp=1}"
|
||||
close_url = "{url path="{$redirectUrl}" current_tab="documents" noamp=1}"
|
||||
}
|
||||
|
||||
{form_hidden_fields form=$form}
|
||||
|
||||
{form_field form=$form field='success_url'}
|
||||
<input type="hidden" name="{$name}" value="{url path="/admin/document/type/{$documentType}/{$ID}/update"}" />
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='locale'}
|
||||
<input type="hidden" name="{$name}" value="{$edit_language_locale}" />
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="success_url" value="{url path="/admin/document/type/{$documentType}/{$ID}/update"}"}
|
||||
{render_form_field form=$form field="locale" value="$edit_language_locale"}
|
||||
|
||||
{if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
|
||||
|
||||
@@ -62,43 +57,15 @@
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{form_field form=$form field='file'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<input type="file" id="{$label_attr.for}" name="{$name}" value="" title="{$label}" placeholder="{intl l='File'}">
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='title'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<input type="text" id="{$label_attr.for}" name="{$name}" class="form-control" value="{$TITLE}" title="{$label}" placeholder="{intl l='Title'}">
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='chapo'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<textarea id="{$label_attr.for}" name="{$name}" class="form-control" title="{$label}" placeholder="{intl l='Chapo'}">{$CHAPO}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='postscriptum'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<textarea id="{$label_attr.for}" name="{$name}" class="form-control" title="{$label}" placeholder="{intl l='Post Scriptum'}">{$POSTSCRIPTUM}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="file"}
|
||||
{render_form_field form=$form field="title" value=$TITLE}
|
||||
{render_form_field form=$form field="chapo" value=$CHAPO}
|
||||
{render_form_field form=$form field="postscriptum" value=$POSTSCRIPTUM}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{form_field form=$form field='description'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<textarea id="{$label_attr.for}" name="{$name}" class="form-control wysiwyg" title="{$label}" placeholder="{intl l='Description'}">{$DESCRIPTION}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="description" value=$DESCRIPTION extra_class="wysiwyg"}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -108,7 +75,7 @@
|
||||
hide_flags = true
|
||||
|
||||
page_url = "{url path="/admin/document/type/{$documentType}/{$ID}/update"}"
|
||||
close_url = "{url path="{$redirectUrl}"}"
|
||||
close_url = "{url path="{$redirectUrl}" current_tab="documents"}"
|
||||
}
|
||||
</form>
|
||||
{/form}
|
||||
@@ -128,7 +95,7 @@
|
||||
<div class="col-md-12">
|
||||
<div class="row inner-toolbar clearfix">
|
||||
<div class="col-md-6 inner-actions pull-right">
|
||||
<a href="{url path="{$redirectUrl}"}" class="btn btn-default btn-info">{intl l='Back'} <span class="glyphicon glyphicon-remove"></span></a>
|
||||
<a href="{url path="{$redirectUrl}" current_tab="documents"}" class="btn btn-default btn-info">{intl l='Back'} <span class="glyphicon glyphicon-remove"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert alert-error">
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
{*
|
||||
This file defines the standard fields attributes, depending on input types.
|
||||
|
||||
In addition to the standard form_field block output, this fragment uses the following additional variables :
|
||||
|
||||
- field_template : the template style ('standard', or somethingelse)
|
||||
- field_value : the value of the input field, which is used if the form_field value is empty.
|
||||
- field_extra_class : an extra class to add to the input class (see form-field-attributes-standard-renderer.html)
|
||||
*}
|
||||
|
||||
{* Use the optionnal $field_value parameter if no value is defined *}
|
||||
{if empty($value)}
|
||||
{$value = $field_value}
|
||||
{/if}
|
||||
|
||||
{* Synthetize an ID if none was given *}
|
||||
{if empty({$label_attr.for})}
|
||||
{$label_attr.for = "{$form->getName()}-id-{$field_name}"}
|
||||
{/if}
|
||||
|
||||
{if $disabled}
|
||||
{$sDisabled = 'disabled'}
|
||||
{/if}
|
||||
|
||||
{if $read_only}
|
||||
{$sRead_only = 'readonly'}
|
||||
{/if}
|
||||
|
||||
{if $max_length}
|
||||
{$sMaxLength = "maxlength=\"{$max_length}\""}
|
||||
{/if}
|
||||
|
||||
{if $required}
|
||||
{$sRequired='aria-required="true" required'}
|
||||
{/if}
|
||||
|
||||
{if $attr_list.placeholder}
|
||||
{$sPlaceholder = "placeholder=\"{$attr_list.placeholder}\""}
|
||||
{/if}
|
||||
|
||||
{if $type == 'hidden'}
|
||||
id="{$label_attr.for}" name="{$name}" value="{$value}"
|
||||
{elseif $type == 'checkbox' || $type == 'radio'}
|
||||
id="{$label_attr.for}" name="{$name}" class="{$field_extra_class}" value="{$value}" {if $checked}checked="checked"{/if} {$sDisabled} {$sReadonly} {$sRequired nofilter}
|
||||
{elseif $type == 'choice'}
|
||||
id="{$label_attr.for}" name="{$name} "class="form-control class="{$field_extra_class}" {if $multiple}multiple{/if} {if $lattr_list.size}size="{$lattr_list.size}"{/if} {$sDisabled} {$sReadonly} {$sRequired nofilter}
|
||||
{elseif $type == 'textarea'}
|
||||
id="{$label_attr.for}" name="{$name}" class="form-control {$field_extra_class}" {if $attr_list.rows}rows="{$attr_list.rows}"{/if} {$sMaxLength nofilter} {$sPlaceholder nofilter} {$sDisabled} {$sReadonly} {$sRequired nofilter}
|
||||
{else}
|
||||
id="{$label_attr.for}" name="{$name}" value="{$value}" class="form-control {$field_extra_class}" {$sMaxLength nofilter} {$sPlaceholder nofilter} {$sDisabled} {$sReadonly} {$sRequired nofilter}
|
||||
{/if}
|
||||
@@ -0,0 +1,120 @@
|
||||
{*
|
||||
This file bind a form field to an HTML representation. In addition to the standard form_field block output, this
|
||||
fragment uses the following additional variables :
|
||||
|
||||
- field_template : the template style ('standard', or somethingelse)
|
||||
- field_value : the value of the input field, which is used if the form_field value is empty.
|
||||
- field_extra_class : an extra class to add to the input class (see form-field-attributes-standard-renderer.html)
|
||||
- content : if this variable is not empty, we assume that it contains the input field definition. Used by the
|
||||
custom_render_form_field block to pass a custom representation of the input field.
|
||||
*}
|
||||
|
||||
{* Get standard fields attributes *}
|
||||
{capture assign=attributes}
|
||||
{include file="forms/$field_template/form-field-attributes-renderer.html"}
|
||||
{/capture}
|
||||
|
||||
{if empty($value)}
|
||||
{$value = $field_value}
|
||||
{/if}
|
||||
|
||||
{if $type == 'hidden'}
|
||||
|
||||
<input type="hidden" {$attributes nofilter} />
|
||||
|
||||
{elseif $type == 'checkbox'}
|
||||
|
||||
<div class="checkbox {if $error}has-error{/if}">
|
||||
<label>
|
||||
{if $content == ''}
|
||||
<input type="checkbox" {$attributes nofilter}>
|
||||
{$label} {if $required} <span class="required">*</span>{/if}
|
||||
{else}
|
||||
{$content nofilter}
|
||||
{/if}
|
||||
|
||||
{form_error form=$form field=$field_name}
|
||||
<br />
|
||||
<span class="error">{$message}</span>
|
||||
{/form_error}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
{elseif $type == 'radio'}
|
||||
|
||||
<div class="radio {if $error}has-error{/if}">
|
||||
<label>
|
||||
{if $content == ''}
|
||||
<input type="radio" {$attributes nofilter}>
|
||||
{$label} {if $required} <span class="required">*</span>{/if}
|
||||
{else}
|
||||
{$content nofilter}
|
||||
{/if}
|
||||
|
||||
{form_error form=$form field=$field_name}
|
||||
<br />
|
||||
<span class="error">{$message}</span>
|
||||
{/form_error}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
{else}
|
||||
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} {if $required} <span class="required">*</span>{/if}
|
||||
|
||||
{form_error form=$form field=$field_name}
|
||||
<br />
|
||||
<span class="error">{$message}</span>
|
||||
{/form_error}
|
||||
</label>
|
||||
|
||||
{if $multiple}
|
||||
<span class="label-help-block">{intl l='Use Ctrl+click to select (or deselect) more that one item'}</span>
|
||||
{/if}
|
||||
|
||||
{if $content == ''}
|
||||
|
||||
{if $type == 'choice'}
|
||||
|
||||
<select {$attributes nofilter}>
|
||||
{foreach $choices as $choice}
|
||||
<option value="{$choice->value}" {if (is_array($value) && in_array($choice->value, $value)) || $choice->value == $value}selected="selected"{/if}>{$choice->label}
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
{elseif $type == 'textarea'}
|
||||
|
||||
<textarea {$attributes nofilter}>{$value}</textarea>
|
||||
|
||||
{elseif $type == 'money'}
|
||||
|
||||
<div class="input-group">
|
||||
<input type="number" {$attributes nofilter} />
|
||||
<span class="input-group-addon">{loop name="input.addon" type="currency" default_only="true"}{$SYMBOL}{/loop}</span>
|
||||
</div>
|
||||
|
||||
{else}
|
||||
|
||||
{$text_types = ['text', 'password', 'number', 'money', 'integer', 'time', 'date', 'datetime', 'email', 'url', 'file']}
|
||||
|
||||
{if in_array($type, $text_types)}
|
||||
{if $type == 'integer' || $type == 'money'}{$type='number'}{/if}
|
||||
|
||||
<input type="{$type}" {$attributes nofilter} />
|
||||
{else}
|
||||
<div class="alert alert-danger">{intl l="Unsupported field type '%type' in form-field.html" type=$type}</div>
|
||||
{/if}
|
||||
|
||||
{/if}
|
||||
{else}
|
||||
{$content nofilter}
|
||||
{/if}
|
||||
|
||||
{if ! empty($label_attr.help)}
|
||||
<span class="help-block">{$label_attr.help}</span>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
@@ -35,18 +35,13 @@
|
||||
hide_submit_buttons = false
|
||||
|
||||
page_url = "{url path="/admin/image/type/{$imageType}/{$ID}/update"}"
|
||||
close_url = "{url path="{$redirectUrl}" noamp=1}"
|
||||
close_url = "{url path="{$redirectUrl}" current_tab="images" noamp=1}"
|
||||
}
|
||||
|
||||
{form_hidden_fields form=$form}
|
||||
|
||||
{form_field form=$form field='success_url'}
|
||||
<input type="hidden" name="{$name}" value="{url path="/admin/image/type/{$imageType}/{$ID}/update"}" />
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='locale'}
|
||||
<input type="hidden" name="{$name}" value="{$edit_language_locale}" />
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="success_url" value="{url path="/admin/image/type/{$imageType}/{$ID}/update"}"}
|
||||
{render_form_field form=$form field="locale" value="$edit_language_locale"}
|
||||
|
||||
{if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
|
||||
|
||||
@@ -65,43 +60,15 @@
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{form_field form=$form field='file'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<input type="file" id="{$label_attr.for}" name="{$name}" value="" title="{$label}" placeholder="{intl l='File'}">
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='title'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<input type="text" id="{$label_attr.for}" name="{$name}" class="form-control" value="{$TITLE}" title="{$label}" placeholder="{intl l='Title'}">
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='chapo'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<textarea id="{$label_attr.for}" name="{$name}" class="form-control" title="{$label}" placeholder="{intl l='Chapo'}">{$CHAPO}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='postscriptum'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<textarea id="{$label_attr.for}" name="{$name}" class="form-control" title="{$label}" placeholder="{intl l='Post Scriptum'}">{$POSTSCRIPTUM}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="file"}
|
||||
{render_form_field form=$form field="title" value=$TITLE}
|
||||
{render_form_field form=$form field="chapo" value=$CHAPO}
|
||||
{render_form_field form=$form field="postscriptum" value=$POSTSCRIPTUM}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{form_field form=$form field='description'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<textarea id="{$label_attr.for}" name="{$name}" class="form-control wysiwyg" title="{$label}" placeholder="{intl l='Description'}">{$DESCRIPTION}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="description" value=$DESCRIPTION extra_class="wysiwyg"}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -111,10 +78,8 @@
|
||||
hide_flags = true
|
||||
|
||||
page_url = "{url path="/admin/image/type/{$imageType}/{$ID}/update"}"
|
||||
close_url = "{url path="{$redirectUrl}"}"
|
||||
close_url = "{url path="{$redirectUrl}" current_tab="images"}"
|
||||
}
|
||||
|
||||
|
||||
</form>
|
||||
{/form}
|
||||
|
||||
@@ -133,7 +98,7 @@
|
||||
<div class="col-md-12">
|
||||
<div class="row inner-toolbar clearfix">
|
||||
<div class="col-md-6 inner-actions pull-right">
|
||||
<a href="{url path="{$redirectUrl}"}" class="btn btn-default btn-info">{intl l='Back'} <span class="glyphicon glyphicon-remove"></span></a>
|
||||
<a href="{url path="{$redirectUrl}" current_tab="images"}" class="btn btn-default btn-info">{intl l='Back'} <span class="glyphicon glyphicon-remove"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert alert-error">
|
||||
|
||||
@@ -12,7 +12,7 @@ Parameters:
|
||||
<ul id="js-sort-image" class="row list-unstyled">
|
||||
{loop type="image" name="image" source="{$imageType}" order="manual" source_id="{$parentId}" width="200" height="100" resize_mode="borders"}
|
||||
<li class="col-sm-6 col-md-3 ui-state-default" data-sort-id="{$ID}">
|
||||
<a href="{url path="/admin/image/type/$imageType/$ID/update"}" alt="{intl l='Update this image'}" class="thumbnail">
|
||||
<a href="{url path="/admin/image/type/$imageType/$ID/update"}" title="{intl l='Update this image'}" class="thumbnail">
|
||||
<img src="{$IMAGE_URL}" alt="{$TITLE}">
|
||||
</a>
|
||||
|
||||
|
||||
@@ -71,6 +71,16 @@
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{custom_render_form_field form=$form field='brand_id'}
|
||||
<select {form_field_attributes form=$form field='brand_id'}>
|
||||
<option value="0">{intl l="No brand"}</option>
|
||||
|
||||
{loop name="brand-list" type="brand" visible="*"}
|
||||
<option value="{$ID}" {if $BRAND_ID == $ID}selected="selected"{/if}>{$TITLE}</option>
|
||||
{/loop}
|
||||
</select>
|
||||
{/custom_render_form_field}
|
||||
|
||||
{form_field form=$form field='visible'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{intl l='Visibility'}</label>
|
||||
|
||||
@@ -16,59 +16,21 @@
|
||||
|
||||
{form_hidden_fields form=$form}
|
||||
|
||||
{form_field form=$form field='success_url'}
|
||||
<input type="hidden" name="{$name}" value="{$closeUrl}">
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="success_url"}
|
||||
|
||||
{* Display error message if exist *}
|
||||
{include file='includes/notifications.html' message=$form_error_message}
|
||||
|
||||
{form_field form=$form field='url'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} :{if $required} <span class="required">*</span>{/if}
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$url_language|default:{config key="url_site"}}</span>
|
||||
<input type="text" id="{$label_attr.for}" name="{$name}" value="{$value}" title="{intl l='Rewritten URL'}" {if $required} aria-required="true" required{/if} class="form-control" placeholder="{intl l='Use the keyword phrase in your URL.'}">
|
||||
</div>
|
||||
{custom_render_form_field form=$form field='url'}
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$url_language|default:{config key="url_site"}}/</span>
|
||||
<input type="text" {form_field_attributes form=$form field='url'}>
|
||||
</div>
|
||||
{/form_field}
|
||||
{/custom_render_form_field}
|
||||
|
||||
|
||||
{form_field form=$form field='meta_title'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} :{if $required} <span class="required">*</span>{/if}
|
||||
<span class="label-help-block">{intl l='The HTML TITLE element is the most important element on your web page.'}</span>
|
||||
</label>
|
||||
<div class="control-input">
|
||||
<input type="text" id="{$label_attr.for}" name="{$name}" class="form-control" value="{$value}"{if $required} aria-required="true" required{/if} title="{$label}" placeholder="{intl l='Make sure that your title is clear, and contains many of the keywords within the page itself.'}">
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='meta_description'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} :{if $required} <span class="required">*</span>{/if}
|
||||
<span class="label-help-block">{intl l='Keep the most important part of your description in the first 150-160 characters.'}</span>
|
||||
</label>
|
||||
|
||||
<textarea name="{$name}" id="{$label_attr.for}" rows="6"{if $required} aria-required="true" required{/if} placeholder="{intl l='Make sure it uses keywords found within the page itself.'}" class="form-control">{$value}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='meta_keywords'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} :{if $required} <span class="required">*</span>{/if}
|
||||
<span class="label-help-block">{intl l='You don\'t need to use commas or other punctuations.'}</span>
|
||||
</label>
|
||||
|
||||
<textarea name="{$name}" id="{$label_attr.for}" rows="3"{if $required} aria-required="true" required{/if} placeholder="{intl l='Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.'}" class="form-control">{$value}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
{render_form_field form=$form field="meta_title"}
|
||||
{render_form_field form=$form field="meta_description"}
|
||||
{render_form_field form=$form field="meta_keywords"}
|
||||
|
||||
{include
|
||||
file = "includes/inner-form-toolbar.html"
|
||||
|
||||
@@ -1,43 +1,6 @@
|
||||
{*
|
||||
The standard description fields, used by many Thelia objects
|
||||
*}
|
||||
{* The standard description fields, used by many Thelia objects *}
|
||||
|
||||
{form_field form=$form field='title'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
|
||||
<input type="text" id="{$label_attr.for}" name="{$name}" required="required" title="{intl l='Title'}" placeholder="{intl l='Title'}" class="form-control" value="{$value}">
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='chapo'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} :
|
||||
<span class="label-help-block">{intl l="A short description, used when a summary or an introduction is required"}</span>
|
||||
</label>
|
||||
|
||||
<textarea name="{$name}" id="{$label_attr.for}" rows="3" title="{intl l='Short description'}" placeholder="{intl l='Short description'}" class="form-control">{$value}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='description'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} :
|
||||
<span class="label-help-block">{intl l="The detailed description."}</span>
|
||||
</label>
|
||||
|
||||
<textarea name="{$name}" id="{$label_attr.for}" rows="10" class="form-control wysiwyg">{$value}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
{form_field form=$form field='postscriptum'}
|
||||
<div class="form-group {if $error}has-error{/if}">
|
||||
<label for="{$label_attr.for}" class="control-label">
|
||||
{$label} :
|
||||
<span class="label-help-block">{intl l="A short post-description information"}</span>
|
||||
</label>
|
||||
|
||||
<textarea name="{$name}" id="{$label_attr.for}" rows="3" title="{intl l='Short conclusion'}" placeholder="{intl l='Short conclusion'}" class="form-control">{$value}</textarea>
|
||||
</div>
|
||||
{/form_field}
|
||||
{render_form_field form=$form field='title'}
|
||||
{render_form_field form=$form field="chapo"}
|
||||
{render_form_field form=$form field="description" extra_class="wysiwyg"}
|
||||
{render_form_field form=$form field="postscriptum"}
|
||||
@@ -40,6 +40,13 @@
|
||||
</tr>
|
||||
{/loop}
|
||||
|
||||
{loop name="auth-export" type="auth" role="ADMIN" resource="admin.brand" access="VIEW"}
|
||||
<tr>
|
||||
<td><a href="{url path='/admin/brand'}">{intl l="Brands"}</a></td>
|
||||
<td><a class="btn btn-default btn-xs" href="{url path='/admin/brand'}"><i class="glyphicon glyphicon-edit"></i></a></td>
|
||||
</tr>
|
||||
{/loop}
|
||||
|
||||
{loop name="auth-export" type="auth" role="ADMIN" resource="admin.export" access="VIEW"}
|
||||
<tr>
|
||||
<td><a href="{url path='/admin/export'}">{intl l="Export"}</a></td>
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
<select id="item_name" required="required" name="item_name" class="submit-on-change form-control">
|
||||
<option value="">{intl l='Please select the module to translate'}</option>
|
||||
{loop type="module" name="translate-module" backend_context=1 order="alpha"}
|
||||
{loop type="module" name="translate-module" backend_context=1 order="title"}
|
||||
<option value="{$ID}" {if $item_name == $ID}selected="selected"{/if}>{$TITLE}</option>
|
||||
{/loop}
|
||||
</select>
|
||||
|
||||
@@ -16,9 +16,13 @@ return array(
|
||||
'Address' => 'Address',
|
||||
'Address %nb' => 'Address %nb',
|
||||
'Address Update' => 'Address update',
|
||||
'All brands' => 'All brands',
|
||||
'All brands in %store' => 'All brands in %store',
|
||||
'All contents' => 'All contents',
|
||||
'All contents in' => 'All contents in',
|
||||
'All product in brand %title' => 'All product in brand %title',
|
||||
'All products' => 'All products',
|
||||
'All products for brand %title in %store' => 'All products for brand %title in %store',
|
||||
'All products in' => 'All products in',
|
||||
'Amount' => 'Amount',
|
||||
'Availability' => 'Availability',
|
||||
@@ -26,6 +30,8 @@ return array(
|
||||
'Back' => 'Back',
|
||||
'Billing address' => 'Billing address',
|
||||
'Billing and delivery' => 'Billing and delivery',
|
||||
'Brand information' => 'Brand information',
|
||||
'Brands' => 'Brands',
|
||||
'Cancel' => 'Cancel',
|
||||
'Cart' => 'Cart',
|
||||
'Categories' => 'Categories',
|
||||
@@ -88,6 +94,7 @@ return array(
|
||||
'Login Information' => 'Login Information',
|
||||
'Main Navigation' => 'Main Navigation',
|
||||
'Minimum 2 characters.' => 'Minimum 2 characters.',
|
||||
'More information about this brand' => 'More information about this brand',
|
||||
'Multi-payment platform' => 'Multi-payment platform',
|
||||
'My Account' => 'My Account',
|
||||
'My Address Books' => 'My Address Books',
|
||||
@@ -106,15 +113,16 @@ return array(
|
||||
'No Content in this folder.' => 'No Content in this folder.',
|
||||
'No articles currently' => 'No articles currently',
|
||||
'No deliveries available for this cart and this country' => 'No deliveries available for this cart and this country',
|
||||
'No products available in this brand' => 'No products available in this brand',
|
||||
'No products available in this category' => 'No products available in this category',
|
||||
'No results found' => 'No results found',
|
||||
'No.' => 'No.',
|
||||
'Offers' => 'Offers',
|
||||
'Ok' => 'Ok',
|
||||
'Order Payment' => 'Order with payment obligation',
|
||||
'Order details' => 'Order details',
|
||||
'Order number' => 'Order number',
|
||||
'Orders over $50' => 'Orders over $50',
|
||||
'Order Payment' => 'Order with payment obligation',
|
||||
'Out of Stock' => 'Out of stock',
|
||||
'Pagination' => 'Pagination',
|
||||
'Password' => 'Password',
|
||||
|
||||
@@ -16,9 +16,13 @@ return array(
|
||||
'Address' => 'Adresse',
|
||||
'Address %nb' => 'Adresse n°',
|
||||
'Address Update' => 'Mise à jour de l\'adresse',
|
||||
'All brands' => 'Toutes les marques',
|
||||
'All brands in %store' => 'Toutes les marques %store',
|
||||
'All contents' => 'Tous les contenus',
|
||||
'All contents in' => 'tous les contenus de',
|
||||
'All product in brand %title' => 'Tous les produits de la marque %title',
|
||||
'All products' => 'Tous les produits',
|
||||
'All products for brand %title in %store' => 'Tous les produits %title de %store',
|
||||
'All products in' => 'Tous les produits de',
|
||||
'Amount' => 'Montant',
|
||||
'Availability' => 'Disponibilité',
|
||||
@@ -26,6 +30,8 @@ return array(
|
||||
'Back' => 'Retour',
|
||||
'Billing address' => 'Adresse de facturation',
|
||||
'Billing and delivery' => 'Facturation et livraison',
|
||||
'Brand information' => 'Marque',
|
||||
'Brands' => 'Marques',
|
||||
'Cancel' => 'Annuler',
|
||||
'Cart' => 'Panier',
|
||||
'Categories' => 'Rubriques',
|
||||
@@ -88,6 +94,7 @@ return array(
|
||||
'Login Information' => 'Informations de connexion',
|
||||
'Main Navigation' => 'Navigation principale',
|
||||
'Minimum 2 characters.' => '2 caractères minimum.',
|
||||
'More information about this brand' => 'Plus de détails sur cette marque',
|
||||
'Multi-payment platform' => 'Plateforme de paiement multiple',
|
||||
'My Account' => 'Mon compte',
|
||||
'My Address Books' => 'Mes carnets d\'adresses',
|
||||
@@ -106,15 +113,16 @@ return array(
|
||||
'No Content in this folder.' => 'Aucun contenu dans ce dossier.',
|
||||
'No articles currently' => 'Aucun article en ce moment',
|
||||
'No deliveries available for this cart and this country' => 'Aucun mode de livraison disponible pour ce panier et ce pays',
|
||||
'No products available in this brand' => 'Aucun produit de cette marque n\'est disponible',
|
||||
'No products available in this category' => 'Aucun produit dans cette catégorie.',
|
||||
'No results found' => 'Aucun résultat',
|
||||
'No.' => 'N°',
|
||||
'Offers' => 'Offres',
|
||||
'Ok' => 'Ok',
|
||||
'Order Payment' => 'Commande avec obligation de paiement',
|
||||
'Order details' => 'Détail de commande',
|
||||
'Order number' => 'Commande numéro',
|
||||
'Orders over $50' => 'Commande supérieure à 50€',
|
||||
'Order Payment' => 'Commande avec obligation de paiement',
|
||||
'Out of Stock' => 'Hors stock',
|
||||
'Pagination' => 'Pagination',
|
||||
'Password' => 'Mot de passe',
|
||||
@@ -146,10 +154,10 @@ return array(
|
||||
'Price descending' => 'Prix décroissant',
|
||||
'Proceed checkout' => 'Continuer la commande',
|
||||
'Product Empty Button' => 'Ajouter mon premier produit',
|
||||
'Product Empty Message' => 'Ajouter rapidement un produit.
|
||||
<ol>
|
||||
<li>Cochez <strong>Nouveau</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Nouveautés.</li>
|
||||
<li>Cochez <strong>En promo</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Offres.</li>
|
||||
'Product Empty Message' => 'Ajouter rapidement un produit.
|
||||
<ol>
|
||||
<li>Cochez <strong>Nouveau</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Nouveautés.</li>
|
||||
<li>Cochez <strong>En promo</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Offres.</li>
|
||||
</ol>',
|
||||
'Product Empty Title' => 'Bienvenue',
|
||||
'Product Name' => 'Nom du produit',
|
||||
|
||||
157
templates/frontOffice/default/brand.html
Normal file
157
templates/frontOffice/default/brand.html
Normal file
@@ -0,0 +1,157 @@
|
||||
{extends file="layout.tpl"}
|
||||
|
||||
{* Body Class *}
|
||||
{block name="body-class"}page-content{/block}
|
||||
|
||||
{* Page Title *}
|
||||
{block name='no-return-functions' append}
|
||||
{loop name="brand.seo.title" type="brand" id="{brand attr="id"}"}
|
||||
{$page_title = {$META_TITLE}}
|
||||
{/loop}
|
||||
{/block}
|
||||
|
||||
{* Meta *}
|
||||
{block name="meta"}
|
||||
{loop name="brand.seo.meta" type="brand" id="{brand attr="id"}"}
|
||||
{if $META_DESCRIPTION}
|
||||
<meta name="description" content="{$META_DESCRIPTION}">{/if}
|
||||
{if $META_KEYWORDS}
|
||||
<meta name="keywords" content="{$META_KEYWORDS}">{/if}
|
||||
{/loop}
|
||||
{/block}
|
||||
|
||||
{* Feeds *}
|
||||
{block name="feeds"}
|
||||
<link rel="alternate" type="application/rss+xml" title="{intl l='All product in brand %title' title={brand attr='title'}}" href="{url path="/feed/brand/{lang attr='locale'}/{brand attr='id'}"}"/>
|
||||
{/block}
|
||||
|
||||
{* Breadcrumb *}
|
||||
{block name='no-return-functions' append}
|
||||
{$breadcrumbs = []}
|
||||
{loop type="brand" name="brand-breadcrumb" id="{brand attr="id"}"}
|
||||
{$breadcrumbs[] = ['title' => {$TITLE}, 'url'=> {$URL}]}
|
||||
{/loop}
|
||||
{/block}
|
||||
|
||||
{block name="main-content"}
|
||||
<div class="main layout-col-2-left">
|
||||
{$limit={$smarty.get.limit|default:8}}
|
||||
{$product_page={$smarty.get.page|default:1}}
|
||||
{$product_order={$smarty.get.order|default:'alpha'}}
|
||||
{$mode=$smarty.get.mode|default:'grid'}
|
||||
|
||||
<article class="col-main {$mode}" role="main" aria-labelledby="main-label">
|
||||
{loop name="brand.info" type="brand" current="yes"}
|
||||
<section class="brand-description">
|
||||
<h1 id="main-label" class="page-header">{$TITLE}</h1>
|
||||
|
||||
{loop name="brand.image" type="image" source="brand" id={$LOGO_IMAGE_ID} width=218 height=146 resize_mode="borders"}
|
||||
<p><img itemprop="image" src="{$IMAGE_URL}" alt="{$TITLE}"></p>
|
||||
{/loop}
|
||||
|
||||
{if $CHAPO}
|
||||
<div class="chapo">
|
||||
{$CHAPO}
|
||||
</div>
|
||||
{/if}
|
||||
{if $DESCRIPTION}
|
||||
<div class="description">
|
||||
{$DESCRIPTION nofilter}
|
||||
</div>
|
||||
{/if}
|
||||
{if $POSTSCRIPTUM}
|
||||
<small class="postscriptum">
|
||||
{$POSTSCRIPTUM}
|
||||
</small>
|
||||
{/if}
|
||||
</section>
|
||||
|
||||
{ifloop rel="product_list"}
|
||||
<hr/>
|
||||
{assign var="amount" value="{count type="product" brand="$ID"}"}
|
||||
<div class="toolbar toolbar-top" role="toolbar">
|
||||
<div class="sorter-container">
|
||||
<span class="amount">{if ($amount > 1)}{intl l="%nb Items" nb="{$amount}"}{else}{intl l="%nb Item" nb="{$amount}"}{/if}</span>
|
||||
|
||||
<span class="limiter">
|
||||
<label for="limit-top">{intl l="Show"}</label>
|
||||
<select id="limit-top" name="limit">
|
||||
<option value="{url path={navigate to="current"} limit="4"}" {if $limit==4}selected{/if}>4</option>
|
||||
<option value="{url path={navigate to="current"} limit="8"}" {if $limit==8}selected{/if}>8</option>
|
||||
<option value="{url path={navigate to="current"} limit="12"}" {if $limit==12}selected{/if}>12</option>
|
||||
<option value="{url path={navigate to="current"} limit="50"}" {if $limit==50}selected{/if}>50</option>
|
||||
<option value="{url path={navigate to="current"} limit="100000"}" {if $limit==100000}selected{/if}>All
|
||||
</option>
|
||||
</select>
|
||||
<span class="per-page">{intl l="per page"}</span>
|
||||
</span><!-- /.limiter -->
|
||||
|
||||
<span class="sort-by">
|
||||
<label for="sortby-top">{intl l="Sort By"}</label>
|
||||
<select id="sortby-top" name="sortby">
|
||||
{*<option value="{url path="{brand attr="url"}" order="manual"}">{intl l="Position"}</option>*}
|
||||
<option value="{url path={navigate to="current"} limit=$limit order="alpha"}" {if $product_order=="alpha"}selected{/if}>{intl l="Name ascending"}</option>
|
||||
<option value="{url path={navigate to="current"} limit=$limit order="alpha_reverse"}" {if $product_order=="alpha_reverse"}selected{/if}>{intl l="Name descending"}</option>
|
||||
<option value="{url path={navigate to="current"} limit=$limit order="min_price"}" {if $product_order=="min_price"}selected{/if}>{intl l="Price ascending"}</option>
|
||||
<option value="{url path={navigate to="current"} limit=$limit order="max_price"}" {if $product_order=="max_price"}selected{/if}>{intl l="Price descending"}</option>
|
||||
</select>
|
||||
</span><!-- /.sort-by -->
|
||||
|
||||
<span class="view-mode">
|
||||
<span class="view-mode-label">{intl l="View as"}:</span>
|
||||
<span class="view-mode-btn">
|
||||
<a href="{url path={navigate to="current"} mode="grid"}" data-toggle="view" role="button" title="{intl l='Grid'}" rel="nofollow" class="btn btn-grid"><i class="icon-grid"></i></a>
|
||||
<a href="{url path={navigate to="current"} mode="list"}" data-toggle="view" role="button" title="{intl l="List"}" rel="nofollow" class="btn btn-list"><i class="icon-list"></i></a>
|
||||
</span>
|
||||
</span><!-- /.view-mode -->
|
||||
</div><!-- /.sorter -->
|
||||
</div><!-- /.sorter-container -->
|
||||
|
||||
<div id="category-products">
|
||||
<div class="products-content">
|
||||
<ul class="product-col-4">
|
||||
{loop type="product" name="product_list" brand=$ID limit=$limit page=$product_page order=$product_order}
|
||||
{include file="includes/single-product.html" product_id=$ID hasBtn=true hasDescription=true hasQuickView=true width="218" height="146"}
|
||||
{/loop}
|
||||
</ul>
|
||||
</div>
|
||||
</div><!-- /#category-products -->
|
||||
|
||||
<div class="toolbar toolbar-bottom" role="toolbar">
|
||||
{if $amount > $limit}
|
||||
<div class="pagination-container" role="pagination" aria-labelledby="pagination-label-{$toolbar}}">
|
||||
<strong id="pagination-label-{$toolbar}}" class="pagination-label">{intl l="Pagination"}</strong>
|
||||
<ul class="pagination">
|
||||
<li{if $product_page le 1} class="disabled"{/if}>
|
||||
<a href="{url path={navigate to="current"} page={$product_page-1} }" title="{intl l="Previous"}" class="prev"><i class="icon-prev"></i></a>
|
||||
</li>
|
||||
{pageloop rel="product_list"}
|
||||
<li{if $PAGE eq $CURRENT} class="active"{/if}>
|
||||
<a href="{url path={navigate to="current"} page=$PAGE }"> {$PAGE} </a></li>
|
||||
{if $PAGE eq $LAST}
|
||||
<li{if $CURRENT eq $LAST} class="disabled"{/if}>
|
||||
<a href="{url path={navigate to="current"} page={$NEXT} }" title="{intl l="Next"}" class="next"><i class="icon-next"></i></a>
|
||||
</li>
|
||||
{/if}
|
||||
{/pageloop}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
</div><!-- /.toolbar toolbar-bottom -->
|
||||
{/ifloop}
|
||||
|
||||
{elseloop rel="product_list"}
|
||||
<div class="address-warning">
|
||||
{intl l="No products available in this brand"}
|
||||
</div>
|
||||
{/elseloop}
|
||||
|
||||
{/loop}
|
||||
</article>
|
||||
|
||||
<aside class="col-left" role="complementary" itemscope itemtype="http://schema.org/WPSideBar">
|
||||
{include file="includes/brand-menu.html"}
|
||||
</aside>
|
||||
|
||||
</div><!-- /.layout -->
|
||||
{/block}
|
||||
@@ -7,33 +7,72 @@
|
||||
{/loop}
|
||||
{if $_context_ == "catalog"}
|
||||
<channel>
|
||||
{if $_id_ == "" }
|
||||
<title>{intl l="All products in"} {$store_name}</title>
|
||||
<link>{url path="/"}</link>
|
||||
<description>{$store_name}</description>
|
||||
<language>{$locale|replace:'_':'-'|lower}</language>
|
||||
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
|
||||
<generator>Thelia 2.0</generator>
|
||||
{else}
|
||||
{loop type="category" name="category" id=$_id_ lang=$_lang_ }
|
||||
<title>{intl l="All products in"} {$TITLE} - {$store_name}</title>
|
||||
<link>{$URL}</link>
|
||||
<description>{$CHAPO}</description>
|
||||
<language>{$LOCALE|replace:'_':'-'|lower}</language>
|
||||
<pubDate>{format_date date=$UPDATE_DATE format="r"}</pubDate>
|
||||
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
|
||||
<generator>Thelia 2.0</generator>
|
||||
{if $_id_ == "" }
|
||||
<title>{intl l="All products in"} {$store_name}</title>
|
||||
<link>{url path="/"}</link>
|
||||
<description>{$store_name}</description>
|
||||
<language>{$locale|replace:'_':'-'|lower}</language>
|
||||
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
|
||||
<generator>Thelia 2.0</generator>
|
||||
{else}
|
||||
{loop type="category" name="category" id=$_id_ lang=$_lang_ }
|
||||
<title>{intl l="All products in"} {$TITLE} - {$store_name}</title>
|
||||
<link>{$URL}</link>
|
||||
<description>{$CHAPO}</description>
|
||||
<language>{$LOCALE|replace:'_':'-'|lower}</language>
|
||||
<pubDate>{format_date date=$UPDATE_DATE format="r"}</pubDate>
|
||||
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
|
||||
<generator>Thelia 2.0</generator>
|
||||
{/loop}
|
||||
{/if}
|
||||
{loop type="product" name="product" category_default=$_id_ lang=$_lang_ order="id_reverse" }
|
||||
<item>
|
||||
<title>{$TITLE}</title>
|
||||
<link>{$URL}</link>
|
||||
<description>{$CHAPO}</description>
|
||||
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
|
||||
<guid>{$URL}</guid>
|
||||
</item>
|
||||
{/loop}
|
||||
{/if}
|
||||
{loop type="product" name="product" category_default=$_id_ lang=$_lang_ order="id_reverse" }
|
||||
<item>
|
||||
<title>{$TITLE}</title>
|
||||
</channel>
|
||||
{elseif $_context_ == "brand"}
|
||||
<channel>
|
||||
{if $_id_ == "" }
|
||||
<title>{intl l="All brands in %store" store="$store_name"}</title>
|
||||
<link>{url path="/"}</link>
|
||||
<description>{$store_name}</description>
|
||||
<language>{$locale|replace:'_':'-'|lower}</language>
|
||||
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
|
||||
<generator>Thelia 2.0</generator>
|
||||
{loop type="brand" name="brand-list" lang=$_lang_ order="id-reverse" }
|
||||
<item>
|
||||
<title>{$TITLE}</title>
|
||||
<link>{$URL}</link>
|
||||
<description>{$CHAPO}</description>
|
||||
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
|
||||
<guid>{$URL}</guid>
|
||||
</item>
|
||||
{/loop}
|
||||
{else}
|
||||
{loop type="brand" name="brand-desc" lang=$_lang_ id=$_id_}
|
||||
<title>{intl l="All products for brand %title in %store" title="$TITLE" store="$store_name"}</title>
|
||||
<link>{$URL}</link>
|
||||
<description>{$CHAPO}</description>
|
||||
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
|
||||
<guid>{$URL}</guid>
|
||||
</item>
|
||||
{/loop}
|
||||
<language>{$locale|replace:'_':'-'|lower}</language>
|
||||
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
|
||||
<generator>Thelia 2.0</generator>
|
||||
{/loop}
|
||||
{/if}
|
||||
|
||||
{loop type="product" name="products-in-brand" brand=$_id_ lang=$_lang_ order="id_reverse" }
|
||||
<item>
|
||||
<title>{$TITLE}</title>
|
||||
<link>{$URL}</link>
|
||||
<description>{$CHAPO}</description>
|
||||
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
|
||||
<guid>{$URL}</guid>
|
||||
</item>
|
||||
{/loop}
|
||||
</channel>
|
||||
{else}
|
||||
<channel>
|
||||
|
||||
12
templates/frontOffice/default/includes/brand-menu.html
Normal file
12
templates/frontOffice/default/includes/brand-menu.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<section id="brands" class="block block-nav" role="navigation" aria-labelledby="brands-label">
|
||||
<div class="block-heading"><h3 class="block-title" id="brands-label">{intl l="Brands"}</h3></div>
|
||||
<div class="block-content">
|
||||
<nav class="nav-brands">
|
||||
<ul id="brand" class="accordion">
|
||||
{loop name="brands-list" type="brand"}
|
||||
<li><a href="{$URL}">{$TITLE} ({count type="product" brand="{$ID}"})</a></li>
|
||||
{/loop}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</section>
|
||||
@@ -6,13 +6,11 @@
|
||||
{/if}
|
||||
<article itemscope itemtype="http://schema.org/Product">
|
||||
<!-- Use the meta tag to specify content that is not visible on the page in any way -->
|
||||
{loop name="brand.feature" type="feature" product=$product_id title="brand"}
|
||||
{loop name="brand.value" type="feature_value" feature=$ID product=$product_id}
|
||||
{loop name="brand" type="brand" product=$product_id }
|
||||
<meta itemprop="brand" content="{$TITLE}">
|
||||
{/loop}
|
||||
{/loop}
|
||||
{loop name="brand.feature" type="feature" product=$product_id title="isbn"}
|
||||
{loop name="brand.value" type="feature_value" feature=$ID product=$product_id}
|
||||
{loop name="isbn.feature" type="feature" product=$product_id title="isbn"}
|
||||
{loop name="isbn.value" type="feature_value" feature=$ID product=$product_id}
|
||||
<meta itemprop="productID" content="isbn:{$TITLE}">
|
||||
{/loop}
|
||||
{/loop}
|
||||
|
||||
@@ -48,13 +48,12 @@
|
||||
<article itemscope itemtype="http://schema.org/Product">
|
||||
<!-- Use the meta tag to specify content that is not visible on the page in any way -->
|
||||
{$product_id=$ID}
|
||||
{loop name="brand.feature" type="feature" product="{$ID}" title="brand"}
|
||||
{loop name="brand.value" type="feature_value" feature="{$ID}" product="$product_id"}
|
||||
<meta itemprop="brand" content="{$TITLE}">
|
||||
{/loop}
|
||||
{loop name="brand.feature" type="brand" product="{$ID}"}
|
||||
<meta itemprop="brand" content="{$TITLE}">
|
||||
{/loop}
|
||||
{loop name="brand.feature" type="feature" product=$ID title="isbn"}
|
||||
{loop name="brand.value" type="feature_value" feature=$ID product=$product_id}
|
||||
|
||||
{loop name="isbn.feature" type="feature" product=$ID title="isbn"}
|
||||
{loop name="isbn.value" type="feature_value" feature=$ID product=$product_id}
|
||||
<meta itemprop="productID" content="isbn:{$TITLE}">
|
||||
{/loop}
|
||||
{/loop}
|
||||
|
||||
@@ -67,6 +67,7 @@ GNU General Public License : http://www.gnu.org/licenses/
|
||||
{* Feeds *}
|
||||
<link rel="alternate" type="application/rss+xml" title="{intl l='All products'}" href="{url path="/feed/catalog/{lang attr="locale"}"}" />
|
||||
<link rel="alternate" type="application/rss+xml" title="{intl l='All contents'}" href="{url path="/feed/content/{lang attr="locale"}"}" />
|
||||
<link rel="alternate" type="application/rss+xml" title="{intl l='All brands'}" href="{url path="/feed/brand/{lang attr='locale'}"}" />
|
||||
{block name="feeds"}{/block}
|
||||
|
||||
{* HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries *}
|
||||
|
||||
@@ -1,43 +1,44 @@
|
||||
{extends file="layout.tpl"}
|
||||
|
||||
{* Body Class *}
|
||||
{block name="body-class"}page-password{/block}
|
||||
|
||||
{* Breadcrumb *}
|
||||
{block name='no-return-functions' append}
|
||||
{$breadcrumbs = [
|
||||
['title' => {intl l="Password"}, 'url'=>{url path="/password"}]
|
||||
]}
|
||||
{/block}
|
||||
|
||||
|
||||
{block name="main-content"}
|
||||
<div class="main">
|
||||
<article class="col-main" role="main" aria-labelledby="main-label">
|
||||
<h1 id="main-label" class="page-header">{intl l="Password Forgotten"}</h1>
|
||||
{form name="thelia.front.customer.lostpassword"}
|
||||
<form id="form-forgotpassword" action="{url path="/password"}" method="post">
|
||||
{form_hidden_fields form=$form}
|
||||
<p>{intl l="Please enter your email address below."} {intl l="You will receive a link to reset your password."}</p>
|
||||
{form_field form=$form field="email"}
|
||||
<div class="form-group group-email {if $error}has-error{elseif !$error && $value != ""}has-success{/if}">
|
||||
<label for="{$label_attr.for}">{$label}</label>
|
||||
<div class="control-input">
|
||||
<input type="email" name="{$name}" value="{$value}" id="{$label_attr.for}" class="form-control" maxlength="255" aria-required="true" autofocus required>
|
||||
{if $error}
|
||||
<span class="help-block">{$message}</span>
|
||||
{elseif !$error && $value != ""}
|
||||
<span class="help-block"><span class="icon-ok"></span> {intl l="You will receive a link to reset your password."}</span>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
<div class="group-btn">
|
||||
<a href="{url path="/login"}" class="btn btn-cancel">{intl l="Cancel"}</a>
|
||||
<button type="submit" class="btn btn-forgot">{intl l="Send"}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/form}
|
||||
</article>
|
||||
</div>
|
||||
{/block}
|
||||
{extends file="layout.tpl"}
|
||||
|
||||
{* Body Class *}
|
||||
{block name="body-class"}page-password{/block}
|
||||
|
||||
{* Breadcrumb *}
|
||||
{block name='no-return-functions' append}
|
||||
{$breadcrumbs = [
|
||||
['title' => {intl l="Password"}, 'url'=>{url path="/password"}]
|
||||
]}
|
||||
{/block}
|
||||
|
||||
|
||||
{block name="main-content"}
|
||||
<div class="main">
|
||||
<article class="col-main" role="main" aria-labelledby="main-label">
|
||||
<h1 id="main-label" class="page-header">{intl l="Password Forgotten"}</h1>
|
||||
{form name="thelia.front.customer.lostpassword"}
|
||||
<form id="form-forgotpassword" action="{url path="/password"}" method="post">
|
||||
{form_hidden_fields form=$form}
|
||||
<p>{intl l="Please enter your email address below."} {intl l="You will receive a link to reset your password."}</p>
|
||||
{if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
|
||||
{form_field form=$form field="email"}
|
||||
<div class="form-group group-email {if $error}has-error{elseif !$error && $value != ""}has-success{/if}">
|
||||
<label for="{$label_attr.for}">{$label}</label>
|
||||
<div class="control-input">
|
||||
<input type="email" name="{$name}" value="{$value}" id="{$label_attr.for}" class="form-control" maxlength="255" aria-required="true" autofocus required>
|
||||
{if $error}
|
||||
<span class="help-block">{$message}</span>
|
||||
{elseif !$error && $value != ""}
|
||||
<span class="help-block"><span class="icon-ok"></span> {intl l="You will receive a link to reset your password."}</span>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/form_field}
|
||||
<div class="group-btn">
|
||||
<a href="{url path="/login"}" class="btn btn-cancel">{intl l="Cancel"}</a>
|
||||
<button type="submit" class="btn btn-forgot">{intl l="Send"}</button>
|
||||
</div>
|
||||
</form>
|
||||
{/form}
|
||||
</article>
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
@@ -36,13 +36,12 @@
|
||||
<article id="product" class="col-main" role="main" itemscope itemtype="http://schema.org/Product">
|
||||
|
||||
<!-- Use the meta tag to specify content that is not visible on the page in any way -->
|
||||
{loop name="brand.feature" type="feature" product="{$ID}" title="brand"}
|
||||
{loop name="brand.value" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
|
||||
<meta itemprop="brand" content="{$TITLE}">
|
||||
{/loop}
|
||||
{loop name="brand.feature" type="brand" product="{$ID}"}
|
||||
<meta itemprop="brand" content="{$TITLE}">
|
||||
{/loop}
|
||||
{loop name="brand.feature" type="feature" product="{$ID}" title="isbn"}
|
||||
{loop name="brand.value" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
|
||||
|
||||
{loop name="isbn.feature" type="feature" product="{$ID}" title="isbn"}
|
||||
{loop name="isbn.value" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
|
||||
<meta itemprop="productID" content="isbn:{$TITLE}">
|
||||
{/loop}
|
||||
{/loop}
|
||||
@@ -102,6 +101,10 @@
|
||||
<h1 class="name"><span itemprop="name">{$TITLE}</span></h1>
|
||||
{if $REF}<span itemprop="sku" class="sku">{intl l='Ref.'}: {$REF}</span>{/if}
|
||||
|
||||
{loop name="brand_info" type="brand" product="{$ID}"}
|
||||
<p><a href="{$URL}" title="{intl l="More information about this brand"}"><span itemprop="brand">{$TITLE}</span></a></p>
|
||||
{/loop}
|
||||
|
||||
{if $POSTSCRIPTUM}<div class="short-description">
|
||||
<p>{$POSTSCRIPTUM}</p>
|
||||
</div>{/if}
|
||||
@@ -211,30 +214,59 @@
|
||||
</section>
|
||||
|
||||
{strip}
|
||||
{capture "additional"}
|
||||
{ifloop rel="feature_info"}
|
||||
{capture "additional"}
|
||||
{ifloop rel="feature_info"}
|
||||
|
||||
<ul>
|
||||
{loop name="feature_info" type="feature" product="{$ID}"}
|
||||
{ifloop rel="feature_value_info"}
|
||||
{ifloop rel="feature_value_info"}
|
||||
<li>
|
||||
<strong>{$TITLE}</strong> :
|
||||
{loop name="feature_value_info" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
|
||||
{$TITLE}
|
||||
{/loop}
|
||||
</li>
|
||||
{/ifloop}
|
||||
{/ifloop}
|
||||
{/loop}
|
||||
</ul>
|
||||
|
||||
{/ifloop}
|
||||
{/capture}
|
||||
{/ifloop}
|
||||
{/capture}
|
||||
{/strip}
|
||||
|
||||
{strip}
|
||||
{capture "brand_info"}
|
||||
{loop name="brand_info" type="brand" product="{$ID}"}
|
||||
<p><strong><a href="{$URL}">{$TITLE}</a></strong></p>
|
||||
|
||||
{loop name="brand.image" type="image" source="brand" id={$LOGO_IMAGE_ID} width=218 height=146 resize_mode="borders"}
|
||||
<p><a href="{$URL}"><img itemprop="image" src="{$IMAGE_URL}" alt="{$TITLE}"></a></p>
|
||||
{/loop}
|
||||
|
||||
{if $CHAPO}
|
||||
<div class="chapo">
|
||||
{$CHAPO}
|
||||
</div>
|
||||
{/if}
|
||||
{if $DESCRIPTION}
|
||||
<div class="description">
|
||||
{$DESCRIPTION nofilter}
|
||||
</div>
|
||||
{/if}
|
||||
{if $POSTSCRIPTUM}
|
||||
<small class="postscriptum">
|
||||
{$POSTSCRIPTUM}
|
||||
</small>
|
||||
{/if}
|
||||
{/loop}
|
||||
{/capture}
|
||||
{/strip}
|
||||
|
||||
<section id="product-tabs">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="active" role="presentation"><a id="tab1" href="#description" data-toggle="tab" role="tab">{intl l="Description"}</a></li>
|
||||
{if $smarty.capture.additional ne ""}<li role="presentation"><a id="tab2" href="#additional" data-toggle="tab" role="tab">{intl l="Additional Info"}</a></li>{/if}
|
||||
{if $smarty.capture.brand_info ne ""}<li role="presentation"><a id="tab3" href="#brand_info" data-toggle="tab" role="tab">{intl l="Brand information"}</a></li>{/if}
|
||||
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
@@ -242,9 +274,14 @@
|
||||
<p>{$DESCRIPTION|default:'N/A' nofilter}</p>
|
||||
</div>
|
||||
{if $smarty.capture.additional ne ""}
|
||||
<div class="tab-pane" id="additional" role="tabpanel" aria-labelledby="tab2">
|
||||
{$smarty.capture.additional nofilter}
|
||||
</div>
|
||||
<div class="tab-pane" id="additional" role="tabpanel" aria-labelledby="tab2">
|
||||
{$smarty.capture.additional nofilter}
|
||||
</div>
|
||||
{/if}
|
||||
{if $smarty.capture.brand_info ne ""}
|
||||
<div class="tab-pane" id="brand_info" role="tabpanel" aria-labelledby="tab3">
|
||||
{$smarty.capture.brand_info nofilter}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user