Jump to content

Welcome, Guest!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

cprats

Backer
  • Content Count

    126
  • Joined

  • Last visited

  • Days Won

    3

cprats last won the day on July 24

cprats had the most liked content!

Community Reputation

19 Good

About cprats

  • Rank
    Carles Prats

Recent Profile Visitors

425 profile views
  1. There may be a bug in the forum. You quote a message by "me" I didn't write. It appears as if it was mine, but I did not post that text.
  2. I ask if that work you did there to set up this subscription system couldn't be transformed into a module for TB to be sold through your marketplace.
  3. I've seen this: https://thirtybees.com/blog/twilighting-patreon/?utm_source=back-office&utm_medium=rss&utm_campaign=back-office-ES&utm_content=download Awesome! @lesley why not turning that code into a module doing exactly this?
  4. Store updated to 1.1. Fast and smooth. Only one fixing to the theme needed to keep community theme instead the new default one, with the much appreciated help of @wakabayashi:
  5. Yes, I use one page checkout. I can't understand what must I move. I am using TB's community-theme-default 1.0 Here is the code of themes/community-theme-default/order-carrier.tpl. Could you please highlight what I should move? Thank-you. {if !$opc} {capture name=path}{l s='Shipping:'}{/capture} {assign var='current_step' value='shipping'} <div id="carrier_area"> <h1 class="page-heading">{l s='Shipping:'}</h1> {include file="$tpl_dir./order-steps.tpl"} {include file="$tpl_dir./errors.tpl"} <form id="form" action="{$link->getPageLink('order', true, NULL, "{if $multi_shipping}multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" method="post" name="carrier_area"> {else} <div id="carrier_area" class="opc-main-block"> <h1 class="page-heading step-num"><span>2</span> {l s='Delivery methods'}</h1> <div id="opc_delivery_methods" class="opc-main-block"> <div id="opc_delivery_methods-overlay" class="opc-overlay" style="display: none;"></div> {/if} <div class="order_carrier_content box"> {if isset($virtual_cart) && $virtual_cart} <input id="input_virtual_carrier" class="hidden" type="hidden" name="id_carrier" value="0"> <div class="alert alert-warning">{l s='No carrier is needed for this order.'}</div> {else} <div id="HOOK_BEFORECARRIER"> {if isset($carriers) && isset($HOOK_BEFORECARRIER)} {$HOOK_BEFORECARRIER} {/if} </div> {if isset($isVirtualCart) && $isVirtualCart} <div class="alert alert-warning">{l s='No carrier is needed for this order.'}</div> {else} <div class="delivery_options_address"> {if isset($delivery_option_list)} {foreach $delivery_option_list as $id_address => $option_list} <p class="carrier_title"> {if isset($address_collection[$id_address])} {l s='Choose a shipping option for this address:'} {$address_collection[$id_address]->alias} {else} {l s='Choose a shipping option'} {/if} </p> <div class="delivery_options"> {foreach $option_list as $key => $option} <div class="delivery_option"> <div> <table class="resume table table-bordered{if !$option.unique_carrier} hide{/if}"> <tr> <td class="delivery_option_radio"> <input id="delivery_option_{$id_address|intval}_{$option@index}" class="delivery_option_radio" type="radio" name="delivery_option[{$id_address|intval}]" data-key="{$key}" data-id_address="{$id_address|intval}" value="{$key}"{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} checked="checked"{/if}> </td> <td class="delivery_option_logo"> <label for="delivery_option_{$id_address|intval}_{$option@index}"> {foreach $option.carrier_list as $carrier} {if $carrier.logo} <img class="order_carrier_logo" src="{$carrier.logo|escape:'htmlall':'UTF-8'}" alt="{$carrier.instance->name|escape:'htmlall':'UTF-8'}"> {elseif !$option.unique_carrier} {$carrier.instance->name|escape:'htmlall':'UTF-8'} {if !$carrier@last} - {/if} {/if} {/foreach} </label> </td> <td> <label for="delivery_option_{$id_address|intval}_{$option@index}"> {if $option.unique_carrier} {foreach $option.carrier_list as $carrier} <strong>{$carrier.instance->name|escape:'htmlall':'UTF-8'}</strong> {/foreach} {if isset($carrier.instance->delay[$cookie->id_lang])} <br>{l s='Delivery time:'}&nbsp;{$carrier.instance->delay[$cookie->id_lang]|escape:'htmlall':'UTF-8'} {/if} {/if} {if count($option_list) > 1} <br> {if $option.is_best_grade} {if $option.is_best_price} <span class="best_grade best_grade_price best_grade_speed">{l s='The best price and speed'}</span> {else} <span class="best_grade best_grade_speed">{l s='The fastest'}</span> {/if} {elseif $option.is_best_price} <span class="best_grade best_grade_price">{l s='The best price'}</span> {/if} {/if} </label> </td> <td class="delivery_option_price"> <label for="delivery_option_{$id_address|intval}_{$option@index}"> <div class="delivery_option_price"> {if $option.total_price_with_tax && !$option.is_free && (!isset($free_shipping) || (isset($free_shipping) && !$free_shipping))} {if $use_taxes == 1} {if $priceDisplay == 1} {convertPrice price=$option.total_price_without_tax}{if $display_tax_label} {l s='(tax excl.)'}{/if} {else} {convertPrice price=$option.total_price_with_tax}{if $display_tax_label} {l s='(tax incl.)'}{/if} {/if} {else} {convertPrice price=$option.total_price_without_tax} {/if} {else} {l s='Free'} {/if} </div> </label> </td> </tr> </table> {if !$option.unique_carrier} <table class="delivery_option_carrier{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} selected{/if} resume table table-bordered{if $option.unique_carrier} hide{/if}"> <tr> {if !$option.unique_carrier} <td rowspan="{$option.carrier_list|@count}" class="delivery_option_radio"> <input id="delivery_option_{$id_address|intval}_{$option@index}" class="delivery_option_radio" type="radio" name="delivery_option[{$id_address|intval}]" data-key="{$key}" data-id_address="{$id_address|intval}" value="{$key}"{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} checked="checked"{/if}> </td> {/if} {assign var="first" value=current($option.carrier_list)} <td class="delivery_option_logo{if $first.product_list[0].carrier_list[0] eq 0} hide{/if}"> {if $first.logo} <img class="order_carrier_logo" src="{$first.logo|escape:'htmlall':'UTF-8'}" alt="{$first.instance->name|escape:'htmlall':'UTF-8'}"> {elseif !$option.unique_carrier} {$first.instance->name|escape:'htmlall':'UTF-8'} {/if} </td> <td class="{if $first.product_list[0].carrier_list[0] eq 0} hide{/if}"> <input type="hidden" value="{$first.instance->id|intval}" name="id_carrier"> {if isset($first.instance->delay[$cookie->id_lang])} <i class="icon icon-info-sign"></i> {strip} {$first.instance->delay[$cookie->id_lang]|escape:'htmlall':'UTF-8'} &nbsp; {if count($first.product_list) <= 1} ({l s='For this product:'} {else} ({l s='For these products:'} {/if} {/strip} {foreach $first.product_list as $product} {if $product@index == 4} <abbr title=" {/if} {strip} {if $product@index >= 4} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ">&hellip;</abbr>) {/if} {else} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ) {/if} {/if} {/strip} {/foreach} {/if} </td> <td rowspan="{$option.carrier_list|@count}" class="delivery_option_price"> <div class="delivery_option_price"> {if $option.total_price_with_tax && !$option.is_free && (!isset($free_shipping) || (isset($free_shipping) && !$free_shipping))} {if $use_taxes == 1} {if $priceDisplay == 1} {convertPrice price=$option.total_price_without_tax}{if $display_tax_label} {l s='(tax excl.)'}{/if} {else} {convertPrice price=$option.total_price_with_tax}{if $display_tax_label} {l s='(tax incl.)'}{/if} {/if} {else} {convertPrice price=$option.total_price_without_tax} {/if} {else} {l s='Free'} {/if} </div> </td> </tr> {foreach $option.carrier_list as $carrier} {if $carrier@iteration != 1} <tr> <td class="delivery_option_logo{if $carrier.product_list[0].carrier_list[0] eq 0} hide{/if}"> {if $carrier.logo} <img class="order_carrier_logo" src="{$carrier.logo|escape:'htmlall':'UTF-8'}" alt="{$carrier.instance->name|escape:'htmlall':'UTF-8'}"> {elseif !$option.unique_carrier} {$carrier.instance->name|escape:'htmlall':'UTF-8'} {/if} </td> <td class="{if $carrier.product_list[0].carrier_list[0] eq 0} hide{/if}"> <input type="hidden" value="{$first.instance->id|intval}" name="id_carrier"> {if isset($carrier.instance->delay[$cookie->id_lang])} <i class="icon icon-info-sign"></i> {strip} {$carrier.instance->delay[$cookie->id_lang]|escape:'htmlall':'UTF-8'} &nbsp; {if count($first.product_list) <= 1} ({l s='For this product:'} {else} ({l s='For these products:'} {/if} {/strip} {foreach $carrier.product_list as $product} {if $product@index == 4} <abbr title=" {/if} {strip} {if $product@index >= 4} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ">&hellip;</abbr>) {/if} {else} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ) {/if} {/if} {/strip} {/foreach} {/if} </td> </tr> {/if} {/foreach} </table> {/if} </div> </div> {/foreach} </div> <div class="hook_extracarrier" id="HOOK_EXTRACARRIER_{$id_address}"> {if isset($HOOK_EXTRACARRIER_ADDR) && isset($HOOK_EXTRACARRIER_ADDR.$id_address)}{$HOOK_EXTRACARRIER_ADDR.$id_address}{/if} </div> {foreachelse} {assign var='errors' value=' '|explode:''} <div class="alert alert-warning" id="noCarrierWarning"> {foreach $cart->getDeliveryAddressesWithoutCarriers(true, $errors) as $address} {if empty($address->alias)} {l s='No carriers available.'} {else} {assign var='flag_error_message' value=false} {foreach $errors as $error} {if $error == Carrier::SHIPPING_WEIGHT_EXCEPTION} {$flag_error_message = true} {l s='The product selection cannot be delivered by the available carrier(s): it is too heavy. Please amend your cart to lower its weight.'} {elseif $error == Carrier::SHIPPING_PRICE_EXCEPTION} {$flag_error_message = true} {l s='The product selection cannot be delivered by the available carrier(s). Please amend your cart.'} {elseif $error == Carrier::SHIPPING_SIZE_EXCEPTION} {$flag_error_message = true} {l s='The product selection cannot be delivered by the available carrier(s): its size does not fit. Please amend your cart to reduce its size.'} {/if} {/foreach} {if !$flag_error_message} {l s='No carriers available for the address "%s".' sprintf=$address->alias} {/if} {/if} {if !$address@last} <br> {/if} {foreachelse} {l s='No carriers available.'} {/foreach} </div> {/foreach} {/if} </div> <div id="extra_carrier" style="display: none;"></div> {if $opc} <p class="carrier_title">{l s='Leave a message'}</p> <div> <p>{l s='If you would like to add a comment about your order, please write it in the field below.'}</p> <textarea class="form-control" cols="120" rows="2" name="message" id="message">{strip} {if isset($oldMessage)}{$oldMessage|escape:'html':'UTF-8'}{/if} {/strip}</textarea> </div> {/if} {if $recyclablePackAllowed} <p class="carrier_title">{l s='Recyclable Packaging'}</p> <div class="checkbox recyclable"> <label for="recyclable"> <input type="checkbox" name="recyclable" id="recyclable" value="1"{if $recyclable == 1} checked="checked"{/if}> {l s='I would like to receive my order in recycled packaging.'} </label> </div> {/if} {if $giftAllowed} {if $opc} <hr style=""> {/if} <p class="carrier_title">{l s='Gift'}</p> <div class="checkbox gift"> <label for="gift"> <input type="checkbox" name="gift" id="gift" value="1"{if $cart->gift == 1} checked="checked"{/if}> {l s='I would like my order to be gift wrapped.'} {if $gift_wrapping_price > 0} &nbsp;<i>({l s='Additional cost of'} <span class="price" id="gift-price"> {if $priceDisplay == 1} {convertPrice price=$total_wrapping_tax_exc_cost} {else} {convertPrice price=$total_wrapping_cost} {/if} </span> {if $use_taxes && $display_tax_label} {if $priceDisplay == 1} {l s='(tax excl.)'} {else} {l s='(tax incl.)'} {/if} {/if}) </i> {/if} </label> </div> <p id="gift_div"> <label for="gift_message">{l s='If you\'d like, you can add a note to the gift:'}</label> <textarea rows="2" cols="120" id="gift_message" class="form-control" name="gift_message">{$cart->gift_message|escape:'html':'UTF-8'}</textarea> </p> {/if} {/if} {/if} {if $conditions && $cms_id && (! isset($advanced_payment_api) || !$advanced_payment_api)} {if $opc} <hr style=""> {/if} {if isset($override_tos_display) && $override_tos_display} {$override_tos_display} {else} <div class="box"> <div class="checkbox"> <label for="cgv"> <input type="checkbox" name="cgv" id="cgv" value="1" {if $checkedTOS}checked="checked"{/if}> {l s='I agree to the terms of service and will adhere to them unconditionally.'} </label> <a href="{$link_conditions|escape:'html':'UTF-8'}" class="iframe" rel="nofollow">{l s='(Read the Terms of Service)'}</a> </div> </div> {/if} {/if} </div> {if !$opc} <p class="cart_navigation clearfix"> <input type="hidden" name="step" value="3"> <input type="hidden" name="back" value="{$back}"> {if !$is_guest} {if $back} <a href="{$link->getPageLink('order', true, NULL, "step=1&back={$back}{if $multi_shipping}&multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn-lg btn-default"> <i class="icon icon-chevron-left"></i> {l s='Continue shopping'} </a> {else} <a href="{$link->getPageLink('order', true, NULL, "step=1{if $multi_shipping}&multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn-lg btn-default"> <i class="icon icon-chevron-left"></i> {l s='Continue shopping'} </a> {/if} {else} <a href="{$link->getPageLink('order', true, NULL, "{if $multi_shipping}multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn-lg btn-default"> <i class="icon icon-chevron-left"></i> {l s='Continue shopping'} </a> {/if} {if isset($virtual_cart) && $virtual_cart || (isset($delivery_option_list) && !empty($delivery_option_list))} <button type="submit" name="processCarrier" class="btn btn-lg btn-success pull-right standard-checkout"> <span> {l s='Proceed to checkout'} <i class="icon icon-chevron-right right"></i> </span> </button> {/if} </p> </form> {else} </div> {/if} </div> {strip} {if !$opc} {addJsDef orderProcess='order'} {if isset($virtual_cart) && !$virtual_cart && $giftAllowed && $cart->gift == 1} {addJsDef cart_gift=true} {else} {addJsDef cart_gift=false} {/if} {addJsDef orderUrl=$link->getPageLink("order", true)|escape:'quotes':'UTF-8'} {addJsDefL name=txtProduct}{l s='Product' js=1}{/addJsDefL} {addJsDefL name=txtProducts}{l s='Products' js=1}{/addJsDefL} {/if} {if $conditions} {addJsDefL name=msg_order_carrier}{l s='You must agree to the terms of service before continuing.' js=1}{/addJsDefL} {/if} {/strip}
  6. I just was referring to the fact that I can't change the theme, so I need to keep the community default instead of the new one. I have aging customers who dislike big changes.
  7. Could you solve it? Or we must wait that the team fixes the issue?
  8. I had the same issue with community-theme-default v.1.1.0 I need to keep the design I have on the website and I don't want to change the theme. Any solution for this?
  9. Another problem: TB1.0.8 to TB1.1 Ignore community theme set to Yes to avoid it being replaced by the new one, as I need to keep the design. Update running with cache off, overrides and non TB modules off, all apparently correct. When finished, error 500 when after adding a product to the cart you click "proceed to checkout". No error encrypted data neither any other message. I had to revert to 1.0.8 again. Any way to fix this keeping the community theme used till 1.0.8 instead of changing to the new one?
  10. I've installed Arte e Informatica free GDPR module just because I needed a "Confirm I have read..." checkbox for the contact form, and I discovered this module thanks to your post. No need to use it with the register form or order confirmation, as I use Block Customer Privacy by TB. I am on TB 1.0.8 yet, and I will upgrade to 1.1 in the coming days. Two languages enabled: English & Spanish Just a couple of questions. First question: Translation for the checkbox does not work. On the back office, I set the Spanish translation, but when I click "Save" it goes back to the English text. I had to provisionally insert both English & Spanish texts in the English translation box to have it in both languages in the contact form. Spanish translations for My Account -> Personal data management do work because they are in modules/artfreegdpr/translations/es.php, but links to contact form lead to the English page of the contact form also. Second question: This is how this checkbox looks like on the contact form: On smartphones the checkbox is half hidden, out of the screen left margin, but checkable anyway, as clicking on the text also does the job. As this Arte e Informatica module is for PS 1.6.x, I guess it was designed for the default bootstrap theme. Any idea of how to adjust this to TB community theme? Thanks in advance.
  11. Yes, this was the issue. After making the changes you suggested I could uninstall the module. Thank-you very much!
  12. Hi, I get this error 500 when I try to uninstall PayPal module (module version 5.4.2, thirtybees version 1.0.8): ## ThirtyBeesException **[] is not a valid configuration key** *at line* **1005** *in file* `classes/Configuration.php` ```php 1000. * @since 1.0.8 1001. */ 1002. protected static function validateKey($key) 1003. { 1004. if ( ! Validate::isConfigName($key)) { 1005. => $e = new PrestaShopException(sprintf( 1006. Tools::displayError('[%s] is not a valid configuration key'), 1007. Tools::htmlentitiesUTF8($key) 1008. )); 1009. die($e->displayMessage()); 1010. } ``` - **ConfigurationCore::validateKey** - [line `813` - `classes/Configuration.php`] - [1 Arguments] ```php 808. * @throws PrestaShopException 809. * @throws PrestaShopDatabaseException 810. */ 811. public static function deleteByName($key) 812. { 813. => static::validateKey($key); 814. 815. $result = Db::getInstance()->execute( 816. ' 817. DELETE FROM `'._DB_PREFIX_.static::$definition['table'].'_lang` 818. WHERE `'.static::$definition['primary'].'` IN ( ``` ```Argument [0] ``` - **ConfigurationCore::deleteByName** - [line `292` - `modules/paypal/paypal.php`] - [1 Arguments] ```php 287. public function deleteConfiguration() 288. { 289. \Configuration::deleteByName(static::LIVE); 290. 291. \Configuration::deleteByName(static::IMMEDIATE_CAPTURE); 292. => \Configuration::deleteByName(static::DEBUG_MODE); 293. \Configuration::deleteByName(static::STORE_COUNTRY); 294. 295. \Configuration::deleteByName(static::LOGIN_ENABLED); 296. \Configuration::deleteByName(static::CLIENT_ID); 297. \Configuration::deleteByName(static::SECRET); ``` ```Argument [0] ``` - **PayPal->deleteConfiguration** - [line `275` - `modules/paypal/paypal.php`] ```php 270. * 271. * @return bool Indicates whether the module was uninstalled successfully 272. */ 273. public function uninstall() 274. { 275. => $this->deleteConfiguration(); 276. 277. return parent::uninstall(); 278. } 279. 280. /** ``` - **PayPal->uninstall** - [line `1648` - `controllers/admin/AdminModulesController.php`] ```php 1643. } 1644. if (count($this->errors)) { 1645. continue; 1646. } 1647. // Get the return value of current method 1648. => $echo = $module->{$method}(); 1649. // After a successful install of a single module that has a configuration method, to the configuration page 1650. if ($key == 'install' && $echo === true && strpos(Tools::getValue('install'), '|') === false && method_exists($module, 'getContent')) { 1651. Tools::redirectAdmin(static::$currentIndex.'&token='.$this->token.'&configure='.$module->name.'&conf=12'); 1652. } 1653. } ``` - **AdminModulesControllerCore->postProcessCallback** - [line `1511` - `controllers/admin/AdminModulesController.php`] ```php 1506. } 1507. } 1508. 1509. // Call appropriate module callback 1510. if (!isset($ppmReturn)) { 1511. => $this->postProcessCallback(); 1512. } 1513. 1514. if ($back = Tools::getValue('back')) { 1515. Tools::redirectAdmin($back); 1516. } ``` - **AdminModulesControllerCore->postProcess** - [line `251` - `classes/controller/Controller.php`] ```php 246. if ($this->checkAccess()) { 247. if (!$this->content_only && ($this->display_header || (isset($this->className) && $this->className))) { 248. $this->setMedia(); 249. } 250. 251. => $this->postProcess(); 252. 253. if (!empty($this->redirect_after)) { 254. $this->redirect(); 255. } 256. ``` - **ControllerCore->run** - [line `837` - `classes/Dispatcher.php`] ```php 832. if (isset($paramsHookActionDispatcher)) { 833. Hook::exec('actionDispatcher', $paramsHookActionDispatcher); 834. } 835. 836. // Running controller 837. => $controller->run(); 838. } catch (PrestaShopException $e) { 839. $e->displayMessage(); 840. } 841. } 842. ``` - **DispatcherCore->dispatch** - [line `63` - `admin/index.php`] ```php 58. if (!isset($_REQUEST['controller']) && isset($_REQUEST['tab'])) { 59. $_REQUEST['controller'] = strtolower($_REQUEST['tab']); 60. } 61. 62. // Prepare and trigger admin dispatcher 63. => Dispatcher::getInstance()->dispatch();
  13. I've just signed up with Patreon to support the thirtybees project. I don't know the developers, I am not a friend or a relative of them, I am just an e-commerce owner who was tired of Prestashop's continuous issues and troubles, and lack of attention in their forum when problems arose. I didn't want to update to PS1.7 because most of my modules would have stopped working. So more than a year ago I decided to try thirtybees. And I found it was lovely: no problems, fast response with the very few issues I had, even developers offering themselves to arrange things in my own server side, developers interacting with users in the forum. We all want everything for free, but if we have an e-commerce it's because we have a business, so we make profits thanks, also, to the work behind thirtybees. And we all want improvements and updates, and bugs fixed, and things working. The most honest thing we can do is to pay for the excellent service we receive. So, I encourage you to support thirtybees here, and it starts as low as $5/mo: https://www.patreon.com/thirtybees/posts?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=tyshare2 Think about this: changing your PS1.6 modules for PS1.7 ones would have cost you a fortune. Thirtybees has saved you a lot of money. Sharing this benefit with thirtybees is not just a good idea, but a profitable investment for we all: thirtybees will continue improving. And of course, it also a way to say "thank-you!".
×
×
  • Create New...