Merge pull request #371 from roadster31/coupons

Coupons
This commit is contained in:
Manuel Raynaud
2014-05-05 10:58:59 +02:00
46 changed files with 1094 additions and 1152 deletions

View File

@@ -22,6 +22,7 @@ return array(
'Actions' => 'Actions',
'Activate this log destination' => 'Activer cette destination',
'Add' => 'Ajouter',
'Add a condition' => 'Ajouter une condition',
'Add a new Customer' => 'Ajouter un client',
'Add a new address' => 'Ajouter une nouvelle adresse',
'Add a new category' => 'Ajouter une catégorie',
@@ -60,7 +61,6 @@ return array(
'Amount' => 'Montant',
'An error occured' => 'Une erreur est survenue',
'And' => 'Et',
'Application field' => 'Champs d\'application',
'Apply' => 'Appliquer',
'Associated countries' => 'Pays dans la zone',
'Associations' => 'Associations',
@@ -83,7 +83,6 @@ return array(
'Browse files' => 'Parcourir les fichiers',
'Browse this category' => 'Parcourir cette catégorie',
'Browse this folder' => 'Parcourir ce dossier',
'Can\'t be cumulative' => 'Ne peut pas se cumuler',
'Can\'t load documents, please refresh this page.' => 'Impossible de charger les documents. Rechargez la page',
'Can\'t load images, please refresh this page.' => 'Impossible de charger l\'image. Rechargez la page',
'Can\'t reorder documents, please refresh this page.' => 'Impossible de trier les documents. Rechargez la page',
@@ -101,7 +100,9 @@ return array(
'Cellular phone number' => 'Numéro de portable',
'Change this administrator' => 'Modifier cet administrateur',
'Change this attribute' => 'Modifier cette déclinaison',
'Change this condition' => 'Modifier cette condition',
'Change this country' => 'Modifier ce pays',
'Change this coupon' => 'Modifier ce code promo',
'Change this currency' => 'Modifier cette devise',
'Change this feature' => 'Modifier cette caractéristique',
'Change this language' => 'Modifier cette langue',
@@ -125,13 +126,13 @@ return array(
'Close' => 'Fermer',
'Close administation session' => 'Quitter l\'interface d\'administration',
'Code' => 'Code',
'Code :' => 'Code : ',
'Combinable with other promotions' => 'Cumulable avec d\'autres promotions',
'Combination EAN Code' => 'Combinaison de code EAN',
'Combination builder' => 'Générateur de combinaison',
'Combination reference' => 'Référence de la combinaison',
'Company' => 'Entreprise',
'Condition\'s category :' => 'Rubrique de la condition',
'Conditions' => 'Conditions',
'Condition category :' => 'Catégorie de condition',
'Condition description' => 'Type de condition',
'Configuration' => 'Configuration',
'Configuration mailing system' => 'Configuration du système de mailing',
'Configure' => 'Configurer',
@@ -151,8 +152,10 @@ return array(
'Country title' => 'Titre du pays',
'Coupon' => 'Code promo',
'Coupon code' => 'Code promo',
'Coupon code * :' => 'Code promo * :',
'Coupon conditions' => 'Conditions d\'utilisation',
'Coupon type * :' => 'Type de promotion * :',
'Coupons' => 'Codes promo',
'Coupons : ' => 'Codes promo : ',
'Create' => 'Créer',
'Create a customer address' => 'Créer une adresse',
'Create a new administrator' => 'Créer un nouvel administrateur',
@@ -249,6 +252,7 @@ return array(
'Delete this attribute' => 'Supprimer cette déclinaison',
'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',
'Delete this content' => 'Supprimer ce contenu',
'Delete this country' => 'Supprimer ce pays',
'Delete this currency' => 'Supprimer cette devise',
@@ -275,7 +279,7 @@ return array(
'Description' => 'Description',
'Destinations' => 'Destinations',
'Details' => 'Détails',
'Disabled coupons' => 'Codes promo désactivés',
'Disabled' => 'Désactivé',
'Discount' => 'Remise',
'Do not use a product template' => 'Ne pas utiliser de gabarit',
'Do you really want to add this attribute to all product templates ?' => 'Voulez-vous vraiment ajouter cette déclinaison de tous les gabarits de produit ?',
@@ -287,6 +291,7 @@ return array(
'Do you really want to delete this attribute value ?' => 'Voulez-vous vraiment supprimer cette déclinaison ?',
'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 ?',
'Do you really want to delete this content ?' => 'Voulez-vous vraiment supprimer ce contenu ?',
'Do you really want to delete this country ?' => 'Voulez-vous vraiment supprimer ce pays ?',
'Do you really want to delete this currency ?' => 'Voulez-vous vraiment supprimer cette devise ?',
@@ -295,6 +300,7 @@ return array(
'Do you really want to delete this feature ? It will be removed from all product templates.' => 'Voulez-vous vraiment supprimer cette caractéristique ? Elle sera supprimée de tous les gabarits de produit',
'Do you really want to delete this feature value ?' => 'Voulez-vous vraiment supprimer cette valeur de caractéristique ?',
'Do you really want to delete this folder and all its content ?' => 'Voulez-vous vraiment supprimer ce dossier et tous ses contenus ?',
'Do you really want to delete this image ?' => 'Confirmez-vous la suppression de cette image ?',
'Do you really want to delete this language ?' => 'Voulez-vous vraiment supprimer cette langue ?',
'Do you really want to delete this mailing template ?' => 'Voulez-vous vraiment supprimer ce template de mailing ?',
'Do you really want to delete this module ?' => 'Voulez-vous vraiment supprimer ce module ?',
@@ -305,7 +311,6 @@ return array(
'Do you really want to delete this tax rule ?' => 'Voulez-vous vraiment supprimer cette règle de taxe ?',
'Do you really want to delete this template ? It will be removed from all products.' => 'Voulez-vous vraiment supprimer ce gabarit ? Il sera supprimé de tous les produits.',
'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?',
'Do you really want to enable this element ?' => 'Voulez-vous vraiment activer cet élément ?',
'Do you really want to remove the content from this folder ?' => 'Voulez-vous vraiment enlever le contenu de ce dossier ?',
'Do you really want to remove the product from this category ?' => 'êtes-vous sur de vouloir enlever le produit de cette rubrique',
'Do you really want to remove this accessory from the product ?' => 'êtes-vous sur de vouloir supprimer cet accessoire ?',
@@ -332,8 +337,6 @@ return array(
'E-mail templates' => 'Templates E-mail',
'EAN Code' => 'Code EAN',
'Ecotax is a tax wich add a defined amount (throug a product feature) to the product price.' => 'L\'écotaxe est une taxe qui ajoute un montant défini (grâce à une caractéristique produit) au prix du produit.',
'Edit' => 'Editer',
'Edit %title' => 'Modifier %title',
'Edit a country' => 'Modifier un pays',
'Edit a currency' => 'Modifier une devise',
'Edit a customer' => 'Éditer un client',
@@ -400,6 +403,7 @@ return array(
'Editing %title' => 'En cours de modification de %title',
'Editing attribute "%name"' => 'En cours de modification de la déclinaison "%name"',
'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"',
'Editing document "%name"' => 'Modification du document "%name"',
'Editing feature "%name"' => 'En cours de modification de la caractéristique "%name"',
@@ -419,7 +423,7 @@ return array(
'Email used when you send an email to your customers (Order confirmations, etc).' => 'Adresse email utilisé pour envoyer les mails à vos clients',
'Enable remote SMTP use : ' => 'Activer l\'utilisation d\'un serveur SMTP distant:',
'Enable/Disable' => 'Activer/Désactiver',
'Enabled coupons' => 'Codes promo disponibles',
'Enabled' => 'Activé',
'Encryption' => 'Chiffrement',
'Encryption :' => 'Chiffrement :',
'Enter here all possible attribute values.' => 'Entrez ici toutes les valeurs de déclinaison possible.',
@@ -458,7 +462,8 @@ return array(
'Example :' => 'Exemple :',
'Existing combinations will be deleted. Do you want to continue ?' => 'Les combinaisons existantes seront supprimées. Voulez-vous continuer ?',
'Expiration date' => 'Date de fin de validité',
'Expiration date :' => 'Date de fin de validité : ',
'Expiration date * :' => 'Date d\'expiration * :',
'Expired' => 'Expiré',
'Export' => 'Export',
'Exports' => 'Exports',
'Failed to get converted prices. Please try again.' => 'Erreur lors de la récupération des prix convertis. Veuillez réessayer.',
@@ -485,6 +490,7 @@ return array(
'Folder title' => 'Titre du dossier',
'Folders' => 'Dossiers',
'Folders in %fold' => 'Dossier dans %fold',
'Format: %fmt, e.g. %date' => 'Format: %fmt, ex. %date ',
'French 19.6% VAT is a tax which add a 19.6% tax to the product price.' => 'La TVA française de 20% est une taxe qui ajoute 20% au prix du produit.',
'French 19.6% VAT with ecotax is the applicance of the ecotax (on the product price) then the applicance of the 19.6% tax (on the product price + the ecotax amount).' => 'La TVA française de 20% avec écotaxe est l\'application de l\'écotaxe (sur le prix du produit) puis l\'application de la taxe de20% (sur le prix du produit + le montant écotaxe).',
'From' => 'De',
@@ -526,12 +532,6 @@ return array(
'Invoice date' => 'Date de facturation',
'Invoice informations' => 'Informations de facturation',
'Invoice reference' => 'Facture ref',
'Is available on special offers' => 'Est valide sur les offres promotionnelles',
'Is cumulative' => 'Est cumulable',
'Is disabled' => 'Désactivé',
'Is enabled' => 'Est activé',
'Is removing postage' => 'Offre les frais de port',
'Is unlimited' => 'Est illimité',
'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',
@@ -569,8 +569,7 @@ return array(
'Manage resource rights' => 'Gestion de droits pour les ressources',
'Manage taxes' => 'Gérer les taxes',
'Manage the tax rule taxes appliance order' => 'Gérer les règles de taxe et leur ordre d\'application',
'Max usage :' => 'Utilisations max : ',
'May be cumulative' => 'Peut être cumulé',
'Maximum usage count :' => 'Nombre maximum d\'utilisations',
'Message created on %date_create. Last modification: %date_change' => 'Message créé le %date_create. Dernière modification le %date_change',
'Message level' => 'Message level',
'Messages which have a level greater or equal to the selected level will be added to the log destinations. ' => 'Les messages avec un niveau d\'erreur supérieur ou égal à celui sélectionné seront rajoutés dans les logs',
@@ -635,8 +634,8 @@ return array(
'Phone' => 'Téléphone',
'Phone number' => 'Numéro de téléphone',
'Please retry' => 'Merci de réessayer',
'Please save your Coupon in oder to affect it some conditions' => 'Veuillez sauvegarder votre code promo afin de pouvoir lui affecter des conditions',
'Please select a condition category' => 'Merci d\'entrer le type de condition',
'Please save this coupon first to define coupon conditions' => 'Enregistrez ce nouveau code promo pour définir les conditions d\'utilisation',
'Please select a condition' => 'Choisissez une condition',
'Please select a coupon type' => 'Merci d\'entrer le type de code',
'Please select another condition' => 'Merci de sélectionner une autre condition',
'Please select items to translate' => 'Veuillez sélectionner un élément',
@@ -688,6 +687,7 @@ return array(
'Profile created on %date_create. Last modification: %date_change' => 'Profil crée le %date_create. Dernière modification le %date_change ',
'Profiles' => 'Profils',
'Promotion' => 'Promo',
'Provides free shipping' => 'Offre le port',
'Published by OpenStudio' => 'Développé par OpenStudio',
'Purpose' => 'Objet',
'Quantity' => 'Quantité',
@@ -731,7 +731,6 @@ return array(
'Save changes' => 'Enregistrer les modifications',
'Save this address' => 'Sauvegarder cette adresse',
'Save this condition' => 'Enregistrer cette condition',
'Save your modifications' => 'Enregistrer les modifications',
'Search' => 'Recherche',
'Search for \'%term\'' => 'Recherche de \'%term\'',
'Select a category and click (+) to add it to the additional category list' => 'Sélectionner une rubrique et cliquez sur (+) pour la rajouter dans la liste des rubrique associées',
@@ -861,12 +860,12 @@ return array(
'This category doesn\'t contains any products. To add a new product, <strong>click the + button</strong> above.' => 'Cette rubrique n\'a aucun produit. Pour créer un nouveau produit, <strong>cliquer sur le bouton +</strong> ci-dessus. ',
'This category has no sub-categories.' => 'Cette rubrique n\'a pas de sous-rubrique.',
'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette rubrique n\'a pas de sous-rubrique. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.',
'This coupon is disabled, you can enable at the bottom of this form.' => 'Le code promo est désactivé. Vous pouvez l\'activer au début de ce formulaire',
'This customer has not defined any delivery address' => 'Ce client n\'a pas saisi aucune adresse de livraison',
'This delivery module handles all shipping zones.' => 'Ce module livre dans toutes les zones de livraison.',
'This folder doesn\'t contains any contents. To add a new content, <strong>click the + button</strong> above.' => 'Ce dossier n\'a aucun contenu. Pour ajouter un nouveau contenu, <strong>cliquez sur le bouton + ci-dessus</strong>.',
'This folder has no sub-folders.' => 'Ce dossier n\'a pas de sous-dossiers.',
'This folder has no sub-folders. To create a new one, click the + button above.' => 'Ce dossier n\'a pas de sous-dossiers. Afin de créer un nouveau, cliquez sur le bouton + ci-dessus.',
'This is the code entered by your customers to use this coupon' => 'Il s\'agit du code qui sera saisi par vos clients',
'This is the message purpose, such as \'Order confirmation\'.' => 'Titre du message (ex : confirmation de commande)',
'This is the subject of the e-mail, such as \'Your order is confirmed\'.' => 'Sujet du message (ex : votre commande est validée)',
'This mailing template could not be changed.' => 'Le template de mailing ne peut pas être changé',
@@ -887,7 +886,7 @@ return array(
'Timeout' => 'Délai d\'attente expiré',
'Timeout :' => 'Délai d\'attente expiré : ',
'Title' => 'Titre',
'Title :' => 'Titre : ',
'Title * :' => 'Titre * : ',
'To' => 'A',
'To create a new content, select an existing folder, or create a new one.' => 'Pour créer un nouveau contenu, sélectionnez un dossier existant ou créez en un nouveau',
'To create a new product, select an existing category, or create a new one.' => 'Pour créer un nouveau produit, veuillez sélectionner une rubrique existante ou en créer une nouvelle',
@@ -906,18 +905,19 @@ return array(
'Transaction reference' => 'Référence de la transaction',
'Translation' => 'Traductions',
'Translations' => 'Traductions',
'Type :' => 'Type : ',
'Unassigned countries' => 'Pays sans zone de livraison',
'Unit taxed price' => 'Prix unitaire TTC',
'Unit. price' => 'Prix unitaire',
'Unlimited' => 'Illimité',
'Unlimited number of uses' => 'Nombre d\'utilisations illimité',
'Update' => 'Mettre à jour',
'Update an administrator' => 'Mettre à jour cet administrateur',
'Update coupon' => 'Mettre à jour le code',
'Update rates' => 'Mettre à jour les taux',
'Update tax rule taxes' => 'Mettre à jour les taxes de la règle de taxe',
'Update this image' => 'Modifier cette image',
'Usage left' => 'Utilisation restante',
'Usage count' => 'Nombre d\'utilisations',
'Usages left' => 'Utulisations restantes',
'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>.',
'Use HTML message defined below' => 'Utiliser le message HTML définie ci-dessous',
'Use Text message defined below' => 'Utiliser la version texte définie ci-dessous',
@@ -929,6 +929,7 @@ return array(
'Username' => 'Nom d\'utilisateur',
'Username :' => 'Nom d\'utilisateur : ',
'Using a domain or subdomain for each language' => 'Utiliser un domaine ou un sous domaine pour chaque langue',
'Valid on special offers' => 'Valide pour les offres spéciales',
'Value' => 'Valeur',
'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change',
'Variable name' => 'Nom de la variable',
@@ -943,10 +944,6 @@ return array(
'Warning' => 'Attention',
'Weight<br />(Kg)' => 'Poids<br />(Kg)',
'Welcome' => 'Bienvenue',
'Will be available on special offers' => 'Sera disponible pour les produits en promotion',
'Will remove postage' => 'Supprimera les frais de port',
'Won\'t be available on special offers' => 'N\'est pas disponible pour les offres spéciales',
'Won\'t remove postage' => 'Ne supprimera pas les frais de port',
'Yes' => 'Oui',
'Yesterday sales' => 'Ventes de la veille',
'You can attach here some content to this category' => 'Vous pouvez lier ici des contenus à cette rubrique',
@@ -976,15 +973,14 @@ return array(
'd-m-Y' => 'd-m-Y',
'date form' => 'formulaire de date',
'date in yyyy-mm-dd format' => 'date in yyyy-mm-dd format',
'days left' => 'jours restants',
'deactivate' => 'désactiver',
'deactivation' => 'désactivation',
'delete image' => 'Supprimer l\'image',
'en_US' => 'en_US',
'firstname & lastname' => 'Prénom & nom',
'hour in hh:mm:ss format' => 'hour in hh:mm:ss format',
'last order' => 'Dernière commande',
'long description' => 'description longue',
'max usage' => 'utilisations max',
'newsletter subscribers' => 'Inscrits à la newsletter',
'order amount' => 'Montant de la commande',
'orders for this customer' => 'commandes pour ce client',
@@ -997,5 +993,4 @@ return array(
'tracking reference' => 'Reference Tracking',
'uncheck all' => 'tout décocher',
'you can combine taxes in tax rules and chose if they are applied one after the other or at the same time : it allows to apply taxes on an already taxed price or not.' => 'vous pouvez combiner des taxes en règles de taxe et choisir si elle sont appliquées l\'une après l\'autre ou en même temps: cela permet d\'appliquer des taxes sur un produit déjà taxé ou non.',
'yyyy-mm-dd' => 'yyyy-mm-dd',
);

View File

@@ -560,12 +560,12 @@ $(function() {
}
});
// Initialize folder (id={$folder_id}) select value
// Initialize folder select value
{if $folder_id != 0}
$('#folder_id').val("{$folder_id}").change();
{/if}
// Initialize accessory category id (id={$accessory_category_id}) select value
// Initialize accessory category id select value
{if $accessory_category_id != 0}
$('#accessory_category_id').val("{$accessory_category_id}").change();
{/if}

View File

@@ -4,7 +4,7 @@ $(function($){
$.couponManager = {};
// Condition being updated category id
$.couponManager.conditionToUpdateServiceId = -1;
$.couponManager.conditionToUpdateServiceId = '';
// Condition being updated index
$.couponManager.conditionToUpdateIndex = false;
@@ -20,6 +20,7 @@ $(function($){
$.couponManager.intlPleaseRetry = '';
$.couponManager.intlPleaseSelectAnotherCondition = '';
$.couponManager.intlDoYouReallyWantToSetCouponAvailableForEveryOne = '';
$.couponManager.intlDoYouReallyWantToDeleteThisCondition = '';
// *****************************************
// ****************** Delete ***************
@@ -28,11 +29,13 @@ $(function($){
$.couponManager.onClickDeleteCondition = function() {
$('.condition-delete-btn').on('click', function (e) {
e.preventDefault();
var $this = $(this);
var index = $this.attr('data-conditionIndex');
$.couponManager.conditionToUpdateServiceId = -1;
$.couponManager.conditionToUpdateIndex = false;
$.couponManager.removeConditionAjax(index);
if (confirm($.couponManager.intlDoYouReallyWantToDeleteThisCondition)) {
var $this = $(this);
var index = $this.data('condition-index');
$.couponManager.conditionToUpdateServiceId = '';
$.couponManager.conditionToUpdateIndex = false;
$.couponManager.removeConditionAjax(index);
}
});
};
$.couponManager.onClickDeleteCondition();
@@ -53,7 +56,7 @@ $(function($){
$('#condition-list').html($.couponManager.intlPleaseSelectAnotherCondition);
}
}
}).done(function(data) {
}).done(function() {
// Reload condition summaries ajax
$.couponManager.displayConditionsSummary();
});
@@ -92,9 +95,10 @@ $(function($){
).done(function() {
$.couponManager.displayConditionsSummary();
$('#condition-add-operators-values').html('');
$('#condition-add-type').find('.typeToolTip').html('');
// Set the condition selector to default
$("#category-condition option").filter(function() {
return $(this).val() == '-1';
return $(this).val() == '';
}).prop('selected', true);
}).fail(function() {
$('#condition-add-operators-values').html(
@@ -115,8 +119,8 @@ $(function($){
$('.condition-update-btn').on('click', function (e) {
e.preventDefault();
var $this = $(this);
$.couponManager.conditionToUpdateServiceId = $this.attr('data-serviceId');
$.couponManager.conditionToUpdateIndex = $this.attr('data-conditionIndex');
$.couponManager.conditionToUpdateServiceId = $this.data('service-id');
$.couponManager.conditionToUpdateIndex = $this.data('condition-index');
$.couponManager.updateConditionSelectFromConditionInterfaceAjax(
$.couponManager.conditionToUpdateIndex,
@@ -135,7 +139,7 @@ $(function($){
var $this = $(this);
var mainDiv = $('#condition-add-type');
var optionSelected = $('option:selected', this);
mainDiv.find('.typeToolTip').html(optionSelected.attr('data-description'));
mainDiv.find('.typeToolTip').html(optionSelected.data('description'));
// Only if add mode
if (false != $.couponManager.conditionToUpdateIndex) {
@@ -179,7 +183,7 @@ $(function($){
}
}).done(function(data) {
$('#condition-add-operators-values').html(data);
if ($.couponManager.conditionToUpdateServiceId == -1) {
if ($.couponManager.conditionToUpdateServiceId == '') {
// Placeholder can't be saved
$('#condition-save-btn').hide();
} else {
@@ -204,28 +208,13 @@ $(function($){
};
// ***********************************************
// *************** Manager Coupon ****************
// ***********************************************
// Reload effect inputs when changing effect
$.couponManager.onEffectChange = function() {
var mainDiv = $('#coupon-type');
var optionSelected = mainDiv.find('#type option:selected');
mainDiv.find('.typeToolTip').html(optionSelected.attr('data-description'));
mainDiv.find('#type').on('change', function () {
var optionSelected = $('option:selected', this);
$.couponManager.displayEfffect(optionSelected);
});
};
$.couponManager.onEffectChange();
$.couponManager.displayEfffect = function(optionSelected) {
var mainDiv = $('#coupon-type');
mainDiv.find('.typeToolTip').html(optionSelected.attr('data-description'));
mainDiv.find('.typeToolTip').html(optionSelected.data('description'));
var inputsDiv = mainDiv.find('.inputs');
inputsDiv.html('<div class="loading" ></div>');
@@ -248,6 +237,20 @@ $(function($){
});
};
// Reload effect inputs when changing effect
$.couponManager.onEffectChange = function() {
var mainDiv = $('#coupon-type');
var optionSelected = mainDiv.find('#type option:selected');
mainDiv.find('.typeToolTip').html(optionSelected.data('description'));
mainDiv.find('#type').on('change', function () {
var optionSelected = $('option:selected', this);
$.couponManager.displayEfffect(optionSelected);
});
};
$.couponManager.onEffectChange();
$.couponManager.displayConditionsSummary = function() {
var mainDiv = $('#condition-list');
mainDiv.html('<div class="loading" ></div>');
@@ -274,7 +277,9 @@ $(function($){
// Set max usage to unlimited or not
$.couponManager.onUsageUnlimitedChange = function() {
var $isUnlimited = $('#is-unlimited');
$maxUsage = $('#max-usage');
var $maxUsage = $('#max-usage');
if ($maxUsage.val() == -1) {
$isUnlimited.prop('checked', true);
$maxUsage.hide();
@@ -296,5 +301,6 @@ $(function($){
}
});
};
$.couponManager.onUsageUnlimitedChange();
});

View File

@@ -380,7 +380,7 @@ $(function() {
}
});
// Initialize folder (id={$folder_id}) select value
// Initialize folder select value
{if $folder_id != 0}
$('#folder_id').val("{$folder_id}").change();
{/if}

View File

@@ -268,7 +268,7 @@ form_content = {$smarty.capture.delete_folder_dialog nofilter}
});
});
// Initialize folder (id=
// Initialize folder select value
{if $folder_id != 0}
$('#folder_id').val("{$folder_id}").change();
{/if}

View File

@@ -17,12 +17,8 @@
</ul>
</nav>
<div class="page-header">
<h1>{intl l='Coupons : '}<small>{intl l='Create a new coupon'}</small></h1>
</div>
{form name="thelia.admin.coupon.creation"}
{include file='coupon/form.html' formAction={url path={$formAction}} noConditions=true}
{include file='coupon/form.html' formAction={url path={$formAction}} noConditions=true title={intl l='Create a new coupon'}}
{/form}
</section> <!-- #wrapper -->
@@ -48,6 +44,7 @@
$.couponManager.urlAjaxAdminCouponDrawInputs = "{$urlAjaxAdminCouponDrawInputs}";
$.couponManager.intlPleaseRetry = '{intl l='Please retry'}';
$.couponManager.intlDoYouReallyWantToSetCouponAvailableForEveryOne = '{intl l='Do you really want to set this coupon available to everyone ?'}';
$.couponManager.intlDoYouReallyWantToDeleteThisCondition = '{intl l='Do you really want to delete this condition ?'}';
});
</script>

View File

@@ -14,22 +14,25 @@
<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/coupon'}">{intl l='Coupon'}</a></li>
<li><a href="{url path='admin/coupon'}">{intl l='Coupons'}</a></li>
</ul>
</nav>
{module_include location='coupon_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" id="folder_list">
<caption>
{intl l='Enabled coupons'}
{intl l='Coupons'}
{module_include location='coupon_list_caption'}
{loop type="auth" name="can_create" role="ADMIN" resource="admin.coupon" access="CREATE"}
<a class="btn btn-default btn-primary action-btn" title="{intl l='Create a new coupon'}" href="{$urlCreateCoupon}">
<a class="btn btn-default btn-primary action-btn" title="{intl l='Create a new coupon'}" href="{url path='/admin/coupon/create'}">
<span class="glyphicon glyphicon-plus-sign"></span>
</a>
{/loop}
@@ -37,98 +40,119 @@
<thead>
<tr>
<th>{block name="coupon-label-code"}{intl l='Code'}{/block}</th>
<th>{block name="coupon-label-title"}{intl l='Title'}{/block}</th>
<th>{block name="coupon-label-expiration-date"}{intl l='Days before expiration'}{/block}</th>
<th>{block name="coupon-label-usage-left"}{intl l='Usage left'}{/block}</th>
<th class="sorter-false filter-false">{block name="coupon-label-action"}{/block}</th>
</tr>
</thead>
<tbody>
{loop type="coupon" name="list_coupon" is_enabled="1" backend_context="true"}
<tr>
<td>{block name="coupon-code"}<a href="{$urlReadCoupon|replace:'0':$ID}">{$CODE}</a>{/block}</td>
<td>{block name="coupon-title"}{$TITLE}{/block}</td>
<td>{block name="coupon-expiration-date"}{$DAY_LEFT_BEFORE_EXPIRATION}{/block}</td>
<td>
{block name="coupon-usage-left"}
{if $USAGE_LEFT == -1}
<span class="label label-success">
{intl l="Unlimited"}
</span>
{elseif $USAGE_LEFT}
<span class="label label-success">
{$USAGE_LEFT}
</span>
{else}
<span class="label label-warning">
0
</span>
{/if}
{/block}
</td>
<td>
{block name="coupon-action"}
<a href="{$urlEditCoupon|replace:'0':$ID}" class="btn btn-default btn-primary btn-medium">
<span class="glyphicon glyphicon-edit"></span> {intl l='Edit'}
</a>
{/block}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
</div>
</div>
<th>{admin_sortable_header
current_order=$coupon_order
order='code'
reverse_order='code-reverse'
path={url path='/admin/coupon'}
request_parameter_name='coupon_order'
label="{intl l='Code'}"
}
</th>
<div class="row">
<div class="col-md-12">
<div class="general-block-decorator">
<div class="table-responsive">
<table class="table table-striped table-condensed" id="folder_list">
<caption>
{intl l='Disabled coupons'}
</caption>
<thead>
<tr>
<th>{block name="coupon-label-code"}{intl l='Code'}{/block}</th>
<th>{block name="coupon-label-title"}{intl l='Title'}{/block}</th>
<th>{block name="coupon-label-expiration-date"}{intl l='Expiration date'}{/block}</th>
<th>{block name="coupon-label-usage-left"}{intl l='Usage left'}{/block}</th>
<th class="sorter-false filter-false">{block name="coupon-label-action"}{/block}</th>
<th>{admin_sortable_header
current_order=$coupon_order
order='title'
reverse_order='title-reverse'
path={url path='/admin/coupon'}
request_parameter_name='coupon_order'
label="{intl l='Title'}"
}
</th>
<th class="text-center">{admin_sortable_header
current_order=$coupon_order
order='enabled'
reverse_order='enabled-reverse'
path={url path='/admin/coupon'}
request_parameter_name='coupon_order'
label="{intl l='Status'}"
}
</th>
<th class="text-center">{admin_sortable_header
current_order=$coupon_order
order='expiration-date'
reverse_order='expiration-date-reverse'
path={url path='/admin/coupon'}
request_parameter_name='coupon_order'
label="{intl l='Expiration date'}"
}
</th>
<th class="text-center">{admin_sortable_header
current_order=$coupon_order
order='days-left'
reverse_order='days-left-reverse'
path={url path='/admin/coupon'}
request_parameter_name='coupon_order'
label="{intl l='Days before expiration'}"
}
</th>
<th class="text-center">{admin_sortable_header
current_order=$coupon_order
order='usages-left'
reverse_order='usages-left-reverse'
path={url path='/admin/coupon'}
request_parameter_name='coupon_order'
label="{intl l='Usages left'}"
}
</th>
{module_include location='coupon_table_header'}
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{loop type="coupon" name="list_coupon" is_enabled="0" backend_context="true"}
{loop type="coupon" name="list_coupon" order={$coupon_order|default:'code'} backend_context="true"}
<tr>
<td>{block name="coupon-code"}<a href="{$urlReadCoupon|replace:'0':$ID}">{$CODE}</a>{/block}</td>
<td>{block name="coupon-title"}{$TITLE}{/block}</td>
<td>{block name="coupon-expiration-date"}{$EXPIRATION_DATE}{/block}</td>
<td>
{block name="coupon-usage-left"}
{if $USAGE_LEFT == -1}
<span class="label label-success">
{intl l="Unlimited"}
</span>
{elseif $USAGE_LEFT}
<span class="label label-success">
{$USAGE_LEFT}
</span>
{else}
<span class="label label-warning">
0
</span>
{/if}
{/block}
{loop type="auth" name="can_change" role="ADMIN" resource="admin.coupon" access="UPDATE"}
<a title="{intl l='Change this coupon'}" href="{url path="/admin/coupon/update/$ID"}">{$CODE}</a>
{/loop}
{elseloop rel="can_change"}
{$CODE}
{/elseloop}
</td>
<td>
{block name="coupon-action"}
<a href="{$urlEditCoupon|replace:'couponId':$ID}" class="btn btn-default btn-primary btn-medium">
<span class="glyphicon glyphicon-edit"></span> {intl l='Edit'}
</a>
{/block}
<td>{$TITLE}</td>
<td class="text-center">
{if $IS_ENABLED}
<span class="label label-success">{intl l="Enabled"}</span>
{else}
<span class="label label-default">{intl l="Disabled"}</span>
{/if}
</td>
<td class="text-center">{format_date date=$EXPIRATION_DATE output="date"}</td>
<td class="text-center">
{if $DAY_LEFT_BEFORE_EXPIRATION <= 0}
<span class="label label-default">{intl l='Expired'}</span>
{else}
{$DAY_LEFT_BEFORE_EXPIRATION}
{/if}
</td>
<td class="text-center">
{if $USAGE_LEFT == -1}
{intl l="Unlimited"}
{elseif $USAGE_LEFT}
{$USAGE_LEFT}
{else}
<span class="label label-default">0</span>
{/if}
</td>
{module_include location='coupon_table_row'}
<td class="text-center">
{loop type="auth" name="can_change" role="ADMIN" resource="admin.coupon" access="UPDATE"}
<a title="{intl l='Change this coupon'}" href="{url path="/admin/coupon/update/$ID"}"><i class="glyphicon glyphicon-edit"></i></a>
{/loop}
</td>
</tr>
{/loop}
@@ -136,6 +160,9 @@
</table>
</div>
</div>
{module_include location='coupon_bottom'}
</div>
</div>

View File

@@ -1,173 +0,0 @@
{extends file="admin-layout.tpl"}
{block name="check-resource"}admin.coupon{/block}
{block name="check-access"}view{/block}
{block name="page-title"}{intl l='Coupon'}{/block}
{block name="main-content"}
<div class="coupons">
<div id="wrapper" class="container">
{loop type="coupon" name="read_coupon" id={$couponId} backend_context="true"}
<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/coupon'}">{intl l='Coupon'}</a></li>
<li>{$CODE}</li>
</ul>
</nav>
<div class="row">
<div class="col-md-12">
<div class="general-block-decorator">
<div class="table-responsive">
{if !$IS_ENABLED}
<div class="alert alert-info">
<span class="glyphicon glyphicon-question-sign"></span>
{intl l='This coupon is disabled, you can enable at the bottom of this form.'}
</div>
{/if}
<table class="table table-striped">
<tbody>
<tr>
<td>{intl l='Title'}</td>
<td>{$TITLE}</td>
</tr>
<tr>
<td colspan="2">
{if $IS_ENABLED}
<span class="label label-success">
{intl l="Is enabled"}
</span>
{else}
<span class="label label-warning">
{intl l="Is disabled"}
</span>
{/if}
</td>
</tr>
<tr>
<td colspan="2">
{$SUMMARY}
</td>
</tr>
<tr>
<td>{intl l='Amount'}</td>
<td>{$AMOUNT}</td>
</tr>
<tr>
<td>{intl l='Expiration date'}</td>
<td>{$EXPIRATION_DATE} ({$DAY_LEFT_BEFORE_EXPIRATION} {intl l="days left"})</td>
</tr>
<tr>
<td>{intl l='Usage left'}</td>
<td>
{if $USAGE_LEFT == -1}
<span class="label label-success">
{intl l="Unlimited"}
</span>
{elseif $USAGE_LEFT}
<span class="label label-success">
{$USAGE_LEFT}
</span>
{else}
<span class="label label-warning">
0
</span>
{/if}
</td>
</tr>
<tr>
<td colspan="2">
{if $IS_CUMULATIVE}
<span class="label label-success">
{intl l="May be cumulative"}
</span>
{else}
<span class="label label-warning">
{intl l="Can't be cumulative"}
</span>
{/if}
</td>
</tr>
<tr>
<td colspan="2">
{if $IS_REMOVING_POSTAGE}
<span class="label label-warning">
{intl l="Will remove postage"}
</span>
{else}
<span class="label label-success">
{intl l="Won't remove postage"}
</span>
{/if}
</td>
</tr>
<tr>
<td colspan="2">
{if $IS_AVAILABLE_ON_SPECIAL_OFFERS}
<span class="label label-warning">
{intl l="Will be available on special offers"}
</span>
{else}
<span class="label label-success">
{intl l="Won't be available on special offers"}
</span>
{/if}
</td>
</tr>
<tr>
<td>{intl l='Application field'}</td>
<td>
<ul class="list-unstyled">
{foreach from=$APPLICATION_CONDITIONS item=condition name=conditionsForeach}
{if !$smarty.foreach.conditionsForeach.first}
<li><span class="label label-info">{intl l='And'}</span></li>
{/if}
<li>{$condition nofilter}</li>
{/foreach}
</ul>
</td>
</tr>
<tr>
<td colspan="2">{$SHORT_DESCRIPTION}</td>
</tr>
<tr>
<td colspan="2">{$DESCRIPTION}</td>
</tr>
<tr>
<td colspan="2">
<a href="{$urlEditCoupon}" class="btn btn-default btn-primary btn-medium pull-right">
<span class="glyphicon glyphicon-edit"></span> {intl l='Edit'}
</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
{/loop}
</div> <!-- #wrapper -->
</div>
{include file='includes/confirmation-modal.html' id="enable" message="{intl l='Do you really want to enable this element ?'}"}
{/block}
{block name="javascript-initialization"}
{javascripts file='assets/js/main.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{/block}
{block name="javascript-last-call"}
{module_include location='coupon-read-js'}
{/block}

View File

@@ -14,12 +14,12 @@
<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/coupon'}">{intl l='Coupon'}</a></li>
<li>{intl l="Editing %title" title="$couponCode"}</li>
<li>{intl l='Editing coupon "%title"' title="$couponCode"}</li>
</ul>
</nav>
{form name="thelia.admin.coupon.creation"}
{include file='coupon/form.html' formAction={url path={$formAction}} form=$form noConditions=false}
{include file='coupon/form.html' formAction={url path={$formAction}} form=$form noConditions=false title={intl l='Editing coupon "%title"' title=$couponCode}}
{/form}
</div> <!-- #wrapper -->
</div>
@@ -52,6 +52,7 @@
$.couponManager.intlPleaseRetry = '{intl l='Please retry'}';
$.couponManager.intlPleaseSelectAnotherCondition = '{intl l='Please select another condition'}';
$.couponManager.intlDoYouReallyWantToSetCouponAvailableForEveryOne = '{intl l='Do you really want to set this coupon available to everyone ?'}';
$.couponManager.intlDoYouReallyWantToDeleteThisCondition = '{intl l='Do you really want to delete this condition ?'}';
$('#condition-save-btn').hide();
});

View File

@@ -0,0 +1,11 @@
<div id="condition-add-operators-values" class="form-group">
<label for="operator">{$label}</label>
<div class="row">
<div class="col-lg-6">
{$operatorSelectHtml nofilter}
</div>
<div class="input-group col-lg-6">
<input type="text" class="form-control" id="{$inputKey}-value" name="{$inputKey}[value]" value="{$currentValue}">
</div>
</div>
</div>

View File

@@ -0,0 +1,11 @@
<div id="condition-add-operators-values" class="form-group">
<label for="operator">{$label}</label>
<div class="row">
<div class="col-lg-6">
{$operatorSelectHtml nofilter}
</div>
<div class="input-group col-lg-6">
{$quantitySelectHtml nofilter}
</div>
</div>
</div>

View File

@@ -0,0 +1,20 @@
<div class="form-group">
<label for="operator">{$label}</label>
<div class="row">
<div class="col-lg-6">
{$operatorSelectHtml nofilter}
</div>
<div class="col-lg-4">
<input type="text" class="form-control" id="{$field_1_name}-value" name="{$field_1_name}[value]" value="{$value}" placeholder="{intl l='Amount'}">
</div>
<div class="col-lg-2">
<input type="hidden" id="{$field_2_name}-operator" name="{$field_2_name}[operator]" value="=="/>
{$currencySelectHtml nofilter}
</div>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<select class="form-control" id="{$inputKey}-operator" name="{$inputKey}[operator]">
{foreach $operators as $key => $operator}
<option value="{$key}"{if $key == $value}selected="selected"{/if}>{$operator}</option>
{/foreach}
</select>

View File

@@ -0,0 +1,5 @@
<select class="form-control" id="{$inputKey}-value" name="{$inputKey}[value]">
{foreach $currencies as $key => $currency}
<option value="{$key}"{if $key == $value}selected="selected"{/if}>{$currency}</option>
{/foreach}
</select>

View File

@@ -0,0 +1,9 @@
<input type="number" value="{$value}" class="form-control" id="{$inputKey}-value" name="{$inputKey}[value]" placeholder="Enter quantity" />
{* Use a text field instead
<select class="form-control" id="{$inputKey}-value" name="{$inputKey}[value]">
{for $index=$min to $max}
<option value="{$index}" {if $index == $value}selected="selected"{/if}>{$index}</option>
{/for}
</select>
*}

View File

@@ -1,5 +1,5 @@
{* List all condition with their summary *}
{foreach from=$conditions item=condition key=i name=conditionsForeach}
{foreach from=$conditions item=condition name=conditionsForeach}
<tr>
<td>
{if !$smarty.foreach.conditionsForeach.first}
@@ -7,13 +7,15 @@
{/if}
{$condition.summary nofilter}
</td>
<td>
<a data-serviceId="{$condition.serviceId}" data-conditionIndex="{$condition.index}" class="btn btn-default btn-primary btn-medium condition-update-btn" href="{$urlEdit}">
<span class="glyphicon glyphicon-edit"></span> {intl l='Edit'}
<td class="text-center">
<a title="{intl l='Change this condition'}" data-service-id="{$condition.serviceId}" data-condition-index="{$condition.index}" class="condition-update-btn" href="{$urlEdit}">
<span class="glyphicon glyphicon-edit"></span>
</a>
{if $conditions|count != 1}
<a data-conditionIndex="{$condition.index}" data-target="#delete" data-toggle="confirm" class="btn btn-default btn-danger btn-medium condition-delete-btn" href="{$urlDelete}">
<span class="glyphicon glyphicon-remove"></span> {intl l='Delete'}
<a title="{intl l='Delete this condition'}" data-condition-index="{$condition.index}" data-target="#delete" data-toggle="confirm" class="condition-delete-btn" href="{$urlDelete}">
<span class="glyphicon glyphicon-remove"></span>
</a>
{/if}
</td>

View File

@@ -3,9 +3,10 @@
<div class="row">
<div class="col-md-12 general-block-decorator">
<div class="row">
<div class="col-md-7 title">
{intl l='Edit %title' title={$couponCode}}
<div class="col-md-12 title title-without-tabs">
{$title}
</div>
</div>
@@ -25,27 +26,31 @@
{if !$noConditions}
{include
file = "includes/inner-form-toolbar.html"
hide_submit_buttons = false
file = "includes/inner-form-toolbar.html"
hide_submit_buttons = false
page_url = "{url path="{$formAction}"}"
page_url = {url path=$formAction}
close_url = {url path='/admin/coupon'}
}
{else}
{include
file = "includes/inner-form-toolbar.html"
hide_submit_buttons = false
hide_save_and_close_button = true
hide_flags = true
page_url = {url path=$formAction}
close_url = {url path='/admin/coupon'}
}
{/if}
<div class="row">
<div class="col-md-4">
<div class="col-md-3">
{form_field form=$form field='code'}
<div class="form-group {if $error}has-error{/if}">
<label class="control-label" for="code">{intl l='Code :'}</label>
<input id="code" class="form-control" type="text" name="{$name}" value="{$value}" placeholder="{intl l='code'}">
{if $error}{$message}{/if}
</div>
{/form_field}
{form_field form=$form field='title'}
<div class="form-group {if $error}has-error{/if}">
<label for="title" class="control-label" >{intl l='Title :'}</label>
<input id="title" class="form-control" type="text" name="{$name}" value="{$value}" placeholder="{intl l='title'}">
<label class="control-label" for="code">{intl l='Coupon code * :'}</label>
<input required id="code" class="form-control" type="text" name="{$name}" value="{$value}" placeholder="{intl l='code'}">
<span class="help-block">{intl l='This is the code entered by your customers to use this coupon'}</span>
{if $error}{$message}{/if}
</div>
{/form_field}
@@ -55,7 +60,7 @@
<label for="is-enabled" class="checkbox control-label">
<input id="is-enabled" type="checkbox" name="{$name}" {if $value}value="1" checked{/if} />
{if $error}{$message}{/if}
{intl l='Is enabled'}
{intl l='Enabled'}
</label>
</div>
{/form_field}
@@ -65,7 +70,7 @@
<label for="is-available-on-special-offers" class="checkbox control-label">
<input id="is-available-on-special-offers" type="checkbox" name="{$name}" {if $value}value="1" checked{/if} />
{if $error}{$message}{/if}
{intl l='Is available on special offers'}
{intl l='Valid on special offers'}
</label>
</div>
{/form_field}
@@ -75,7 +80,7 @@
<label for="is-cumulative" class="checkbox control-label">
<input id="is-cumulative" type="checkbox" name="{$name}" {if $value}value="1" checked{/if} />
{if $error}{$message}{/if}
{intl l='Is cumulative'}
{intl l='Combinable with other promotions'}
</label>
</div>
{/form_field}
@@ -85,19 +90,16 @@
<label for="is-removing-postage" class="checkbox control-label">
<input id="is-removing-postage" type="checkbox" name="{$name}" {if $value}value="1" checked{/if} />
{if $error}{$message}{/if}
{intl l='Is removing postage'}
{intl l='Provides free shipping'}
</label>
</div>
{/form_field}
{form_field form=$form field='expirationDate'}
<div class="form-group {if $error}has-error{/if}">
<label for="expiration-date" class="control-label">{intl l='Expiration date :'}</label>
<div class="input-append date" data-date="12/02/2012" data-date-format="dd/mm/yyyy">
<input type="text" id="expiration-date" name="{$name}" class="form-control datepicker" data-date-format="yyyy-mm-dd" value="{if $defaultDate}{$defaultDate}{else}{$value}{/if}" placeholder="{intl l='yyyy-mm-dd'}">
{if $error}{$message}{/if}
<span class="add-on"><span class="icon-th"></span></span>
</div>
<label for="expiration-date" class="control-label">{intl l='Expiration date * :'}</label>
<input required type="date" id="expiration-date" name="{$name}" class="form-control" value="{if $defaultDate}{$defaultDate}{else}{$value}{/if}" placeholder="{intl l='Format: %fmt, e.g. %date' fmt=$dateFormat date={$smarty.now|date_format:$dateFormat}}">
{if $error}{$message}{/if}
</div>
{/form_field}
@@ -105,126 +107,132 @@
<div class="form-group {if $error}has-error{/if}">
<label for="is-unlimited" class="checkbox control-label">
<input id="is-unlimited" type="checkbox" name="is-unlimited" >
{intl l='Is unlimited'}
<input id="is-unlimited" type="checkbox" name="is-unlimited" {if $value == '' || $value == -1}checked="checked"{/if}>
{intl l='Unlimited number of uses'}
</label>
<label id="max-usage-label" for="max-usage" class="control-label">{intl l='Max usage :'}</label>
<input id="max-usage" type="text" class="form-control" name="{$name}" value="{if !$value}-1{else}{$value}{/if}" placeholder="{intl l='max usage'}">
<label id="max-usage-label" for="max-usage" class="control-label">{intl l='Maximum usage count :'}</label>
<input id="max-usage" type="text" class="form-control" name="{$name}" value="{if $value == ''}-1{else}{$value}{/if}" placeholder="{intl l='Usage count'}">
{if $error}{$message}{/if}
</div>
{/form_field}
</div>
<div class="col-md-8">
<div id="coupon-type" class="well clearfix">
<div class="col-md-6">
{form_field form=$form field='type'}
<div class="form-group {if $error}has-error{/if}">
<label for="type" class="control-label">{intl l='Type :'}</label>
<select name="{$name}" id="type" class="col-md-12 form-control">
<option value="-1" data-description="" data-inputName="">{intl l='Please select a coupon type'}</option>
{foreach from=$availableCoupons item=availableCoupon}
<option value="{$availableCoupon.serviceId}" data-description="{$availableCoupon.toolTip}" data-inputName="{$availableCoupon.inputName}" {if $value == $availableCoupon.serviceId}selected{/if}>
{$availableCoupon.name}
</option>
{/foreach}
</select>
{if $error}{$message}{/if}
<span class="help-block typeToolTip">{$availableCoupons.0.toolTip}</span>
</div>
{/form_field}
</div>
<div class="col-md-3">
<div id="coupon-type">
{form_field form=$form field='type'}
<div class="form-group {if $error}has-error{/if}">
<label for="type" class="control-label">{intl l='Coupon type * :'}</label>
<select required name="{$name}" id="type" class="col-md-12 form-control">
<option value="" data-description="" data-inputName="">{intl l='Please select a coupon type'}</option>
{foreach from=$availableCoupons item=availableCoupon}
<option value="{$availableCoupon.serviceId}" data-description="{$availableCoupon.toolTip}" data-inputName="{$availableCoupon.inputName}" {if $value == $availableCoupon.serviceId}selected{/if}>
{$availableCoupon.name}
</option>
{/foreach}
</select>
{if $error}{$message}{/if}
<span class="help-block typeToolTip">{$availableCoupons.0.toolTip}</span>
</div>
{/form_field}
<div class="col-md-6 inputs">
<div class="inputs">
{form_field form=$form field='amount'}
{$couponInputsHtml nofilter}
{$couponInputsHtml nofilter}
{/form_field}
</div>
</div>
{form_field form=$form field='shortDescription'}
<div class="form-group {if $error}has-error{/if}">
<label for="short-description" class="control-label">{intl l='Short description :'}</label>
<textarea id="short-description" name="{$name}" class="form-control" placeholder="{intl l='short description'}" class="span12" rows="5">{$value nofilter}</textarea>
{if $error}{$message}{/if}
</div>
{/form_field}
</div>
<div class="clearfix"></div>
<div class="col-md-12">
{form_field form=$form field='description'}
<div class="form-group {if $error}has-error{/if}">
<label for="description" class="control-label">{intl l='Long description :'}</label>
<textarea id="description" name="{$name}" placeholder="{intl l='long description'}" class="form-control wysiwyg" rows="10">{$value nofilter}</textarea>
{if $error}{$message}{/if}
</div>
{/form_field}
{if $noConditions}
<button id="save-coupon-btn" type="submit" class="btn btn-default btn-primary">{intl l='Save your modifications'}</button>
{/if}
</div>
</div>
</form>
</div>
</div>
</div>
{if $noConditions}
{include file='includes/notifications.html' message={intl l='Please save your Coupon in oder to affect it some conditions'}}
{else}
<div class="row">
<div class="col-md-12 general-block-decorator">
<div class="table-responsive">
<table class="table table-striped table-condensed" id="folder_list">
<caption class="clearfix">
{intl l='Conditions'}
</caption>
<thead>
<tr>
<th>{intl l='Conditions'}</th>
<th>{intl l='Actions'}</th>
</tr>
</thead>
<tbody id="condition-list">
{include file='coupon/conditions.html' conditions=$conditions}
</tbody>
</table>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 general-block-decorator">
<div class="form-container">
<form id="condition-form" action="{$urlAjaxSaveConditions}" {form_enctype form=$form} method="POST" >
<div class="well clearfix">
<a id="condition-save-btn" title="{intl l='Save this condition'}" class="btn btn-default btn-primary pull-right" data-toggle="confirm" data-script="">
<span class="glyphicon glyphicon-plus-sign"></span> {intl l='Save this condition'}
</a>
<div id="condition-add-type" class="form-group col-md-4">
<label for="categoryCondition">{intl l='Condition\'s category :'}</label>
<select name="categoryCondition" id="category-condition" class="form-control">
<option value="-1" data-description="">{intl l='Please select a condition category'}</option>
{foreach from=$availableConditions item=availableCondition}
<option value="{$availableCondition.serviceId}" data-description="{$availableCondition.toolTip}">{$availableCondition.name}</option>
{/foreach}
</select>
<span class="help-block typeToolTip"></span>
</div>
<div id="condition-add-operators-values" class="form-group col-md-6"></div>
</div>
<div class="col-md-6">
{loop type="lang" name="get-flag" id=$edit_language_id}
{form_field form=$form field='title'}
<div class="form-group {if $error}has-error{/if}">
<label for="title" class="control-label" >{intl l='Title * :'}</label>
<div class="input-group">
<input required id="title" class="form-control" type="text" name="{$name}" value="{$value}" placeholder="{intl l='title'}">
<span class="input-group-addon"><img src="{image file="assets/img/flags/{$CODE}.png"}" alt="{$TITLE}" /></span>
</div>
{if $error}{$message}{/if}
</div>
{/form_field}
{form_field form=$form field='shortDescription'}
<div class="form-group {if $error}has-error{/if}">
<label for="short-description" class="control-label">{intl l='Short description :'} <img src="{image file="assets/img/flags/{$CODE}.png"}" alt="{$TITLE}" /></label>
<textarea id="short-description" name="{$name}" class="form-control" placeholder="{intl l='short description'}" rows="3">{$value nofilter}</textarea>
{if $error}{$message}{/if}
</div>
{/form_field}
{form_field form=$form field='description'}
<div class="form-group {if $error}has-error{/if}">
<label for="description" class="control-label">{intl l='Long description :'} <img src="{image file="assets/img/flags/{$CODE}.png"}" alt="{$TITLE}" /></label>
<textarea id="description" name="{$name}" placeholder="{intl l='long description'}" class="form-control wysiwyg" rows="3">{$value nofilter}</textarea>
{if $error}{$message}{/if}
</div>
{/form_field}
{/loop}
</div>
</div>
</form>
</div>
</div>
</div>
{/if}
<div class="row">
{if $noConditions}
<div class="col-md-12">
<p class="title title-without-tabs">{intl l="Coupon conditions"}</p>
<br />
{include file='includes/notifications.html' type='info' dismissable=false message={intl l='Please save this coupon first to define coupon conditions'}}
</div>
{else}
<div class="col-md-6">
<p class="title title-without-tabs">{intl l="Coupon conditions"}</p>
<div class="table-responsive">
<table class="table table-striped table-condensed" id="folder_list">
<thead>
<tr>
<th>{intl l='Condition description'}</th>
<th class="text-center">{intl l='Actions'}</th>
</tr>
</thead>
<tbody id="condition-list">
{include file='coupon/conditions.html' conditions=$conditions}
</tbody>
</table>
</div>
</div>
<div class="col-md-6">
<p class="title title-without-tabs">{intl l="Add a condition"}</p>
<form id="condition-form" action="{$urlAjaxSaveConditions}" {form_enctype form=$form} method="POST" >
<div id="condition-add-type" class="form-group">
<label for="categoryCondition">{intl l='Condition category :'}</label>
<select name="categoryCondition" id="category-condition" class="form-control">
<option value="" data-description="">{intl l='Please select a condition'}</option>
{foreach from=$availableConditions item=availableCondition}
<option value="{$availableCondition.serviceId}" data-description="{$availableCondition.toolTip}">{$availableCondition.name}</option>
{/foreach}
</select>
<span class="help-block typeToolTip"></span>
</div>
<div id="condition-add-operators-values" class="form-group">
</div>
<a id="condition-save-btn" title="{intl l='Save this condition'}" class="btn btn-default btn-primary pull-right" data-toggle="confirm" data-script="">
<span class="glyphicon glyphicon-plus-sign"></span> {intl l='Save this condition'}
</a>
</form>
</div>
{/if}
</div>
</div>
</div>

View File

@@ -0,0 +1,9 @@
<div class="form-group input-{$fieldName}">
<label for="{$fieldName}" class="control-label">{$label}</label>
<div class="input-group">
<input id="{$fieldName}" type="money" class="form-control" name="thelia_coupon_creation[{$fieldName}]" value="{$value}" placeholder="14.50">
{loop type="currency" name="get-symbol" default_only="true"}
<div class="input-group-addon">{$SYMBOL}</div>
{/loop}
</div>
</div>

View File

@@ -0,0 +1,8 @@
<input type="hidden" name="thelia_coupon_creation[{$typeKey}]" value="0"/>
<div class="form-group input-{$fieldId}">
<label for="{$fieldId}" class="control-label">{$label}</label>
<div class="input-group">
<input id="{$fieldId}" class="form-control" name="[$fieldName][{$fieldId}]" type="text" value="{$value}"/>
<div class="input-group-addon">%</div>
</div>
</div>

View File

@@ -0,0 +1,4 @@
<div class="form-group input-{$fieldName}">
<label for="{$fieldName}" class="control-label">{$label}</label>
<input id="{$fieldName}" type="money" class="form-control" name="thelia_coupon_creation[{$fieldName}]" value="{$value}">
</div>

View File

@@ -2,7 +2,6 @@
{block name="page-title"}{intl l='Edit a document'}{/block}
{block name="check-resource"}admin.document{/block}
{block name="check-access"}update{/block}
{block name="main-content"}

View File

@@ -226,7 +226,7 @@
});
});
// Initialize folder (id={$folder_id}) select value
// Initialize folder select value
{if $folder_id != 0}
$('#folder_id').val("{$folder_id}").change();
{/if}

View File

@@ -1,24 +1,24 @@
{extends file="admin-layout.tpl"}
{* -- We do not check admin login on this page *}
{block name="check-auth"}{/block}
{block name="page-title"}{intl l='An error occured'}{/block}
{block name="main-content"}
<div id="wrapper" class="container">
<div class="row">
<div class="col-md-12">
<div class="general-block-decorator text-center">
<h1>{intl l="Oops! An Error Occurred"}</h1>
{block name="error-message"}<p>{$error_message}</p>{/block}
<a href="{url path='/admin'}" class="btn btn-default btn-info btn-lg"><span class="glyphicon glyphicon-home"></span> {intl l="Go to administration home"}</a>
</div>
</div>
</div>
</div>
{extends file="admin-layout.tpl"}
{* -- We do not check admin login on this page *}
{block name="check-auth"}{/block}
{block name="page-title"}{intl l='An error occured'}{/block}
{block name="main-content"}
<div id="wrapper" class="container">
<div class="row">
<div class="col-md-12">
<div class="general-block-decorator text-center">
<h1 style="padding: 40px 0">{intl l="Oops! An Error Occurred"}</h1>
{block name="error-message"}<p style="padding: 20px 0">{$error_message}</p>{/block}
<a href="{url path='/admin'}" class="btn btn-default btn-info btn-lg"><span class="glyphicon glyphicon-home"></span> {intl l="Go to administration home"}</a>
</div>
</div>
</div>
</div>
{/block}

View File

@@ -2,7 +2,6 @@
{block name="page-title"}{intl l='Edit an image'}{/block}
{block name="check-resource"}admin.image{/block}
{block name="check-access"}update{/block}
{block name="main-content"}

View File

@@ -4,7 +4,9 @@ A toolbar displayed in forms, to display language change flags, submit and close
Parameters:
- hide_flags: true / false. If true, the flags will not be visible
- hide_submit_buttons: true / false. If true, only the close button will be deplayed.
- hide_submit_buttons: true / false. If true, only the close button will be displayed.
- hide_save_buttons: true / false. If true, the "Save" button will be hidden
- hide_save_and_close_button: true / false. If true, the "Save and close" button will be hidden
- show_currencies: true/false. If true, show the currency selection bar
- page_url: the current page URL. Default is $current_url. Used to switchedition anguage.
- close_url: no default. URL displayed when close button is clicked. If empty, the close button is not displayed.
@@ -48,8 +50,12 @@ Parameters:
<div class="col-md-6 inner-actions">
{if $hide_submit_buttons != true}
<button type="submit" name="save_mode" value="stay" class="form-submit-button btn btn-sm btn-default btn-success" title="{intl l='Save'}">{intl l='Save'} <span class="glyphicon glyphicon-ok"></span></button>
<button type="submit" name="save_mode" value="close" class="form-submit-button btn btn-sm btn-default btn-info" title="{intl l='Save and close'}">{intl l='Save and close'} <span class="glyphicon glyphicon-remove"></span></button>
{if $hide_save_buttons != true}
<button type="submit" name="save_mode" value="stay" class="form-submit-button btn btn-sm btn-default btn-success" title="{intl l='Save'}">{intl l='Save'} <span class="glyphicon glyphicon-ok"></span></button>
{/if}
{if $hide_save_and_close_button != true}
<button type="submit" name="save_mode" value="close" class="form-submit-button btn btn-sm btn-default btn-info" title="{intl l='Save and close'}">{intl l='Save and close'} <span class="glyphicon glyphicon-remove"></span></button>
{/if}
{/if}
{if ! empty($close_url)}
<a href="{$close_url}" class="page-close-button btn btn-sm btn-default">{intl l='Close'} <span class="glyphicon glyphicon-remove"></span></a>