Jump to content
Latest News: (loading..)


  • Content count

  • Joined

  • Last visited

  • Days Won


Reputation Activity

  1. Like
    ArtcoInc got a reaction from De Dokta in Invoice Editor 1.0   
    It has been my experience that the PDF invoices are saved, as per the Dr's instructions above. But, the HTML invoices are not saved. Instead, they are created dynamically each time they are accessed.
  2. Like
    ArtcoInc reacted to Tsimi in Out of Stock Message in shopping_cart.php   
    I needed to change the appearance of the out of stock message inside the shopping_cart.php to save some space when viewing the shop in sm or xs mode so i came up with this tiny little change which i would like to share.
    what did i do:
    removed *** and replaced with background color for better and easier viewing.
    deactivated checkout button inside the shopping_cart.php if allow checkout is set to false
    changed files:

    inside the general.php
    *(you can change the color code of the background here and don't forget to adjust the message text to your color.)

    find this code around line 139
        if ($stock_left < 0) {       $out_of_stock = '<span class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '</span>';     }    
    replace with
        if ($stock_left < 0) {       //$out_of_stock = '<span class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '</span>';       $out_of_stock = '<tr style="background:#ffffb1;">';     } inside the shopping_cart.php

    find this code around line 80
    $products_name .= '<tr>'; replace with
          if (STOCK_CHECK == 'true') {             $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);             if (tep_not_null($stock_check)) {               $any_out_of_stock = 1;               $products_name .= $stock_check;             }  else {              $products_name .= '<tr>';             }           }       //$products_name .= '<tr>'; find this code around line 85
          if (STOCK_CHECK == 'true') {         $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);         if (tep_not_null($stock_check)) {           $any_out_of_stock = 1;           $products_name .= $stock_check;         }       }      
    and replace with
    /*       if (STOCK_CHECK == 'true') {         $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);         if (tep_not_null($stock_check)) {           $any_out_of_stock = 1;           $products_name .= $stock_check;         }       } */ find this code around line 136
      <div class="buttonSet">     <div class="text-right"><?php echo tep_draw_button(IMAGE_BUTTON_CHECKOUT, 'glyphicon glyphicon-chevron-right', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'), 'primary', NULL, 'btn-success'); ?></div>   </div> and replace with
      <div class="buttonSet">     <?php               if ($any_out_of_stock == 1) {             echo '<div class="text-right" style="cursor:not-allowed;">' . tep_draw_button(IMAGE_BUTTON_CHECKOUT, 'glyphicon glyphicon-chevron-right', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'), 'primary', NULL, 'btn-success disabled') . '</div>';         } else {             echo '<div class="text-right">' . tep_draw_button(IMAGE_BUTTON_CHECKOUT, 'glyphicon glyphicon-chevron-right', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'), 'primary', NULL, 'btn-success') . '</div>';          }     ?>       </div> inside the includes/languages/english/shopping_cart.php
    *(if color is changed text needs to be adjusted here, text for sample color is yellow)

    find this code around line 19
    define('OUT_OF_STOCK_CANT_CHECKOUT', 'Products marked with ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' dont exist in desired quantity in our stock.<br />Please alter the quantity of products marked with (' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '), Thank you'); define('OUT_OF_STOCK_CAN_CHECKOUT', 'Products marked with ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' dont exist in desired quantity in our stock.<br />You can buy them anyway and check the quantity we have in stock for immediate deliver in the checkout process.'); replace with
    //define('OUT_OF_STOCK_CANT_CHECKOUT', 'Products marked with ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' dont exist in desired quantity in our stock.<br />Please alter the quantity of products marked with (' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '), Thank you'); //define('OUT_OF_STOCK_CAN_CHECKOUT', 'Products marked with ' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . ' dont exist in desired quantity in our stock.<br />You can buy them anyway and check the quantity we have in stock for immediate deliver in the checkout process.'); define('OUT_OF_STOCK_CANT_CHECKOUT', 'Products marked in <u>yellow</u> don\'t exist in desired quantity in our stock.<br />Please alter the quantity of products marked in yellow, Thank you'); define('OUT_OF_STOCK_CAN_CHECKOUT', 'Products marked in <u>yellow</u> don\'t exist in desired quantity in our stock.<br />You can buy them anyway and check the quantity we have in stock for immediate delivery in the checkout process.'); That's it.
  3. Like
    ArtcoInc reacted to GLWalker in Amend the Template Structure   
    No harm leaving the header and footer files, the code placed in template_top and bottom would just be moved into those files, much like it was before but with the addition changes for wrapping the area.
    My main thought on doing away with those files was the .00000001% gain by not having to include 2 more files, and looking at the previous column left and right that were removed in favor of the code directly in the template_bottom file.
    I will change the struture on my fork and resubmit.
    I would however like to know thoughts on using HTML5 section, header, and aside elements. We do already use nav and footer elements, so it seems that adding in the other markup makes sense to those, both human and bot,  that follow HTML5 standards.
  4. Like
    ArtcoInc reacted to GLWalker in Amend the Template Structure   
    Per my previous post, I would like to make a proposal for slight change to the template structure/markup for better theme control and overall layout.
    Ive been looking at a lot of the bootstrip examples and do feel we would be more on target by changing the structure to follow as outlined below:
    <!DOCTYPE html> <html> <head></head> <body> <nav>navigation_content</nav> <div class="row"> <div class="col-sm-12">messageStack_header</div> </div> <header id="modular-header" class="BOOTSTRAP_CONTAINER"> <div id="header" class="row"> header_content </div> </header> <section id="bodyWrapper" class="BOOTSTRAP_CONTAINER"> <div class="row"> <div id="bodyContent" class="col-md-* col-md-push-*"> <div class="row"> <div class="col-xs-12"> <div class="alert alert-danger">error_message</div> </div> </div> <div class="row"> <div class="col-xs-12"> <div class="alert alert-info">info_message</div> </div> </div> <div class="contentContainer">main_content_per_page</div> </div> <!-- bodyContent //--> <aside id="columnLeft" class="col-md-* col-md-pull-*"> boxes_column_left </aside> <aside id="columnRight" class="col-md-*"> boxes_column_right </aside> </div><!-- row --> </section> <!--bodyWrapper--> <footer id="modular-footer" class="BOOTSTRAP_CONTAINER"> <div id="footer" class="row"> footer_content </div> <div id="footer-extra" class="row"> footer_suffix_content </div> </footer> </body> </html> Pay no emphasis to the HTML5 elements, they are only there for empahasis!
    Basically every section would have its own container wrapped around it, yet eveything is still stackable and in order.
    row classes have been inserted where need be before any dections that would use a col-sm-* class
    error and info messages have been moved down after the bodyContent opening div to place them better into the view of everything and avoid breaking design by having them float under the header.
    id's applied to each section mainly for design purposes, and allows to set the bootstrap contianer for each section - wait thats design!
    I only wonder if placing the footer and footer-extra into one container should be broke into 2 parts, so that the footer-extra has the ability to act like the top nav with nothing wrapping it but itself.
    I really wouldnt even include the header and footer anymore either, just the code to grab the content.
    So thats my proposal of the day, have tested it on my local and everything lays out as were used to seeing.
  5. Like
    ArtcoInc reacted to De Dokta in Invoice Editor 1.0   
    Do you have more than 999999 invoices? :P Or do you expect any time soon to exceed this limit? Then you may change the num_invoice field from int(6) to int(7), 8, 10, 100 or whatever you want........
    "%02u" adds a leading zero for single-digit numbers. I just think it looks better. :-
    The German laws do not say that I must start the counting of invoices each year with 1 - they only say that every invoice number must be unique. But since I built the invoice editor for our shop and I think it is clear when I start every year again with the invoice number 1, I just decided to chose this way. Our invoice numbers consist of a prefix, the counter, the current month and the current year e.g. VS25/022014. In this way, I can assign each invoice at a glance a month and year! The mentioned invoice number for example tells me that it was the 25. invoice of the year 2014 and was created in February. And the prefix tells me that it was a sale in our online shop. -_-
  6. Like
    ArtcoInc reacted to Tsimi in Bootstrap Quantity Box   
    @@Dan Cole
    can you please try this once and tell me how it goes.
    $products_name .= '<td><div class="col-xs-12 col-sm-6 col-md-4" style="margin-top:10px;"> <div class="input-group"> <span class="input-group-btn"> <button onclick="javascript:changeValue(document.getElementById(\'add_id_'.$products[$i]['id'].'\'),-1);return false;" type="button" class="btn btn-default" data-type="minus" data-field="cart_quantity"> <span class="glyphicon glyphicon-minus"></span> </button> </span>' . '<input type="text" name="cart_quantity[]" class="form-control text-center" id="add_id_'.$products[$i]['id'].'" value="' . $products[$i]['quantity'] . '">' . '<span class="input-group-btn"> <button onclick="javascript:changeValue(document.getElementById(\'add_id_'.$products[$i]['id'].'\'),1);return false;" type="button" class="btn btn-default" data-type="plus" data-field="cart_quantity"> <span class="glyphicon glyphicon-plus"></span> </button> </span> </div></div>'; $products_name .= '<div class="col-xs-12 col-sm-6 col-md-8" style="margin-top:10px;">' . tep_draw_hidden_field('products_id[]', $products[$i]['id']) . ' ' . tep_draw_button(NULL, 'glyphicon glyphicon-refresh', NULL, NULL, NULL, 'btn-info') . ' ' . tep_draw_button(NULL, 'glyphicon glyphicon-remove', tep_href_link(FILENAME_SHOPPING_CART, 'products_id=' . $products[$i]['id'] . '&action=remove_product'), NULL, NULL, 'btn-danger') . '</div></td>'; and add a
    class="hidden-xs" to the products images <td> tag to hide the image in xs view mode.
    Resolutions starting at 348px width shouldn't be any problem. Anything lower than that will cause problems with the plus/minus input field.
  7. Like
    ArtcoInc reacted to MrPhil in IP Address   
    To the best of my knowledge, there is no way to do a guaranteed mapping of IP address to physical location, anywhere in the world. The Internet was not set up with that purpose in mind. Until that situation changes, all you have to work with are shipping address (delivery of physical goods) and billing address (downloadables). If any taxing authority demands to know the physical address of where a download was made, please publicly ask them how to find this out, without violating privacy laws. I'll bet one hand has no idea of what the other hand is doing...
    A similar situation exists with using ZIP codes (US postal codes) to map to tax jurisdiction for state/local sales tax determination. A ZIP code can span towns or cities within a county, counties within a state, and even across state borders. In some states, such as New York, it's technically illegal to use ZIP codes to make the final determination of sales tax rate -- you are liable if you collect the wrong rate. When a tax rate can change between two houses in a given ZIP code (because the ZIP code crosses a town or county line), there is no way to know (except to maintain a huge database of physical addresses and what tax jurisdiction they're in).
  8. Like
    ArtcoInc reacted to Harald Ponce de Leon in Can be a good idea to have multilingual install in next releases?   
    An ideal way to do this is to have the installer display extra languages that can be downloaded and used straight away. This allows us to keep the core download package in english, and to provide a way for languages to be submitted and be kept up to date by the community through a new section on our website.
  9. Like
    ArtcoInc got a reaction from vampirehunter in Purchase without account for 2.3.4 and BS2334   
    I have used both products. Both work very well, and I have received fantastic support from both developers.
    In my last conversation with Matt (the developer of Better Checkout), he said that he had not finished updating Better Checkout for osC 234, specifically the Content Modules (account and login). He may have finished updating it since then, though.
  10. Like
    ArtcoInc reacted to acidvertigo in Bootstrap 3 in 2.3.4 - Responsive from the Get Go   
    I want just add a tip for the future, what about to organize the template file for boxes, content modiules, future templates like html email in a unic folder for all, as example /catalog/templates/ ?
  11. Like
    ArtcoInc reacted to acidvertigo in Bootstrap 3 in 2.3.4 - Responsive from the Get Go   
    Forgot to say that also a template loader in osc_template class can be nice
  12. Like
    ArtcoInc reacted to De Dokta in 234bs Shopping Cart buttons   
    In two lines it should be something like that:
    <div class="buttonSet">     <span class="buttonAction">         <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#quotesModal">           <?php echo GET_QUOTES; ?>         </button>     </span>   </div> <div class="buttonSet">   <?php           $back = sizeof($navigation->path)-2;           if (isset($navigation->path[$back])) {             echo '<span class="pull-left">' . tep_draw_button(IMAGE_BUTTON_CONTINUE_SHOPPING, 'glyphicon-chevron-left', tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']), 'primary', NULL, 'btn-success') . '</span>';           } ?>           <span class="pull-right"><?php echo tep_draw_right_button(IMAGE_BUTTON_CHECKOUT, 'glyphicon-chevron-right', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'), 'primary', NULL, 'btn-success'); ?>     </span>   </div>   J.J.

  13. Like
    ArtcoInc got a reaction from Tsimi in Shipping Quote in Cart - Support Thread   
    I have installed @@Tsimi 's version in my 234bs store, and it works great! Thank you!
    I also have the Active Countries add-on installed, in order to control what countries (and States) we sell to. Since it made no sense to quote shipping costs to countries we won't ship to, I modified Tsimi's code to include Active Countries. This way, we will only provide a shipping quote to those countries we ship to.
    It's a simple modification ...
    in: shipping_in_cart.php
    (around line 14)
    *** Replace ***
    $countries = tep_get_countries(); for ($i=0, $n=sizeof($countries); $i<$n; $i++) {     $countries_array[] = array('id' => $countries[$i]['countries_id'], 'text' => $countries[$i]['countries_name']); } *** With ***
    $countries = tep_get_active_countries(); for ($i=0, $n=sizeof($countries); $i<$n; $i++) {     $countries_array[] = array('id' => $countries[$i]['id'], 'text' => $countries[$i]['text']); } Once again, thank you, Tsimi!
  14. Like
    ArtcoInc reacted to Tsimi in Shipping Quote in Cart - Support Thread   
    Forgot to add the spinner.gif inside the package, my apologies.
    You can either download it from here or take it from any osC 2.3.3.x package. Look inside the catalog/ext/jquery/bxGallery/ folder.
    And put it inside the images/icons/ folder.
    One more thing, this add-on seems to have it's trouble with the KissER Error message Add-on. So you have to turn the KissER off for it to work.
    (Thanks Malcolm :thumbsup: )
  15. Like
    ArtcoInc reacted to Tsimi in Shipping Quote in Cart - Support Thread   
    Bootstrap Modal Version
    Package includes:
    2x new files
    1x install.txt
    1x screenshot
    This does the same thing as the original add-on but instead of being embedded into the shopping cart page this version shows a modal. (screenshot included)
    This version works only with osCommerce Bootstrap version (community build)!
  16. Like
    ArtcoInc reacted to GLWalker in osCommerce 2.3. Bootstrap Nav menu   
    The following code snippets will extend the categories class as found in the osCommerce to Bootstrap community build. Please note it only works on this version as no other version is using this category class (in production).
    Its up to you where you place this class, you can make a file and add it with the other classes, just add it to template_top.php for quick setup, or go all out and take all the code and make a module.
    So first lets extend the category class with need markup for a bootstrap nav menu.
    /* $Id$ explode_category_tree osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2010 osCommerce extended class author: G.L. Walker Copyright (c) 2014 G.L. Walker Released under the GNU General Public License */ class explode_category_tree extends category_tree { var $parent_group_start_string = null, $parent_group_end_string = null, $parent_group_apply_to_root = false, $root_start_string = '<li class="dropdown">', $root_end_string = '</li>', $parent_start_string = '<ul class="dropdown-menu">', $parent_end_string = '</ul>', $child_start_string = '<li>', $child_end_string = '</li>'; function _buildHoz($parent_id, $level = 0) { if(isset($this->_data[$parent_id])) { foreach($this->_data[$parent_id] as $category_id => $category) { if($this->breadcrumb_usage === true) { $category_link = $this->buildBreadcrumb($category_id); } else { $category_link = $category_id; } if(($this->follow_cpath === true) && in_array($category_id, $this->cpath_array)) { $link_title = $this->cpath_start_string . $category['name'] . $this->cpath_end_string; } else { $link_title = $category['name']; } if (isset($this->_data[$category_id]) && ($level != 0)) { $result .= '<li class="dropdown dropdown-submenu"><a href="#" tabindex="-1" class="dropdown-toggle" data-toggle="dropdown">'; $caret = false; } elseif(isset($this->_data[$category_id]) && (($this->max_level == '0') || ($this->max_level > $level + 1))) { $result .= $this->root_start_string; $result .= '<a href="#" tabindex="-1" class="dropdown-toggle" data-toggle="dropdown">'; $caret = '<span class="caret"></span>'; } else { $result .= $this->child_start_string; $result .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath=' . $category_link) . '">'; $caret = false; } $result .= str_repeat($this->spacer_string, $this->spacer_multiplier * $level); $result .= $link_title . (($caret != false) ? $caret : null) . '</a>'; if(isset($this->_data[$category_id]) && (($this->max_level == '0') || ($this->max_level > $level + 1))) { // uncomment below to show parent category link // //$root_link_title = '<span class="hidden-xs"><span class="glyphicon glyphicon-th-list"></span> ' . $link_title . '</span><li class="divider"></li>'; // divider added for clarity - comment out if you no like // //$root_link_title .= '<li class="visible-xs divider"></li>'; $result .= $this->parent_start_string; $result .= '<li><a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath=' . $category_link) . '">' . $root_link_title . '</a></li>'; $result .= $this->_buildHoz($category_id, $level + 1); $result .= $this->parent_end_string; $result .= $this->child_end_string; } else { $result .= $this->root_end_string; } } } return $result; } function getExTree() { return $this->_buildHoz($this->root_category_id); } } /* end explode_category_tree */ Now you need to add a function somewhere, either in html_output.php or just slap it in template_top if doing a quick setup:
    function build_hoz($class='') { global $cPath, $level; if (empty($class)) $class = 'nav navbar-nav'; $OSCOM_CategoryTree = new explode_category_tree(); $data = '<ul class="' . $class . '">' . $OSCOM_CategoryTree->getExTree() . '</ul>'; return $data; } Notice the class variable, you may or may not need to use it according to the later steps.
    Now here is the css markup to add to your stylesheet:
    .dropdown-submenu { position:relative;} .dropdown-menu > .dropdown > .dropdown-menu, .dropdown-submenu > .dropdown-menu{top:0;left:100%;margin-top:-6px;;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} .dropdown-menu > .dropdown > a:after, .dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#cccccc;margin-top:5px;margin-right:-10px;} .dropdown-submenu:hover > a:after{border-left-color:#555;} And you may or may not need the javascript, it depends on a couple of things, I'll let you figure it out, but start by adding it to template_bottom.php

    <script> $(document).ready(function(){ $('ul.dropdown-menu > li.dropdown > a.dropdown-toggle .caret').removeClass('caret'); $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); }); }); </script> If you do not have any subcategories, and you are using a  nav menu the top categories displaying across the menu, you wont need any of the javascript. If you want to nest the category menu inside a single dropdown link, you will only need the first line after document ready(or you can actually modify the extended class)  I simply gave a way of doing things that would fit a variety of applications. If I am confusing you, just add everything.
    Now inside your markup for a bootstrap nav menu their are 2 ways you can output the category tree

    <nav class="navbar navbar-default navbar-no-corners navbar-no-margin" role="navigation"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-navbar-collapse"> <span class="sr-only"><?php echo HEADER_TOGGLE_NAV; ?></span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="collapse navbar-collapse" id="bs-navbar-collapse"> <div class="container-fluid"> <ul class="nav navbar-nav"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Categories<span class="caret"></span></a> <?php echo build_hoz('dropdown-menu');?> </li> </ul> <?php echo build_hoz(); ?> </div> </div> </nav> I combined the 2 together in the above code. You can pretty much make it part of the navbar top links, or next it inside one top link.
    Ive tested this up to eight sub-categories deep with great results - but if you go that crazy on a live shop, you probably need a consultant to help you better categorize- maybe an auto parts store may need that many.
  17. Like
    ArtcoInc reacted to De Dokta in Automatic Supplier Order   
    I don't know an addon which does this. But it's no big thing to add another tep_mail to the checkout_process.php (where the mail to your customer is generated) to send an order to your supplier. Collect the data that your supplier needs to fulfill your order, put them into the tep_mail string and then your supplier automatically gets an order whenever a customer orders something in your store.
    That's quite simple if you have only one supplier - with several suppliers it would be a little bit more complicated, but not impossible.
  18. Like
    ArtcoInc reacted to dculley in osCommerce Online Merchant v2.3.4   
    I finely found the error in the checkout_success.php.   A missing closing </div>.  That did not show up in ( or thers) until the upgrade to 2.3.4.  Going to tavern now. :)
  19. Like
    ArtcoInc reacted to Harald Ponce de Leon in osCommerce Online Merchant v2.3.4   
    I wouldn't exactly call it MVC ;)
    Currently only the Login, My Account, and Checkout Success pages support Content Modules. If you would like to add content to or rearrange content on those pages, doing so with Content Modules means no more source code changes are required.
    The My Account page is different as it is built from an array of links. Content Modules on this page have the capability of adding/replacing/removing links from the My Account page.
    Other pages will be updated to support Content Modules in the next v2.3.x releases.
    No. Content Modules require a group to belong to, which the group code is then called from the relevant page to load the modules.
    No. What ends up being in v3 and down the line in v2.4 will be more flexible.
    Content Modules are located in includes/modules/content/ inside group directories. Here are the pages and their relevant group codes:
    My Account -> account Checkout Success -> checkout_success Login -> login Both Login and Checkout Success pages call their content modules before the template is loaded. This allows content modules to perform actions under certain conditions and to perform page redirects where necessary. The main My Account page does not perform any processing at all so its content modules are loaded in the middle of the template.
    Content Modules are called with their group code:
    $page_content = $oscTemplate->getContent('login'); For the login page, to avoid having each login content module have duplicate code to process the login, a $login_customer_id variable is processed - if it is set with a customer ID then the login page continues to register the customer in their session. It is up to the login content module to assign this variable as soon as it has authenticated the customer.
    For example, Log In with PayPal authenticates the customer then assigns $login_customer_id with their customer ID which login detects and registers them in their session. It is possible to create a Google Login content module which authenticates the customer through Google, then that module must assign $login_customer_id to complete their session.
    Some pages may need to initialize code before its first content module is processed. For these cases before the first content module is processed, it looks in the includes/modules/pages/ directory for a file matching the following name:
    tp_CODE.php The code matches the Content Module group being called. If such a file exists, it is executed then the content modules are processed.
    This is used for the My Account page to initialize the base set of links that are shown on the My Account page.
  20. Like
    ArtcoInc reacted to geoffreywalton in osCommerce Online Merchant v2.3.4   
    Don't get me wrong I think it is a good idea to list what needs to be done but lets tell people what they need to do but in plain english not coded speak.
    I think
    To make a more secure shop, in the shop admin go to Configuration >> Administrators and edit the adminstrator, enter a password and tick the "Protect With htaccess/htpasswd" box.
    is much clearer than
    The Administration Tool should be further protected using htaccess/htpasswd and can be set-up using the Configuration -> Administrators page
    I think shop owners would understand that.
    Then something along the lines of
    You should also check the permissions on directories and files to check they are secure. This can be done on the Administration Tool -> Tools -> Security Directory Permissions page.
    And even add an extra step of
    Finally check the general state of the site using Tools >> Security Checks.
    I'll have a go at git and see if I can get my head round github, branches and other associated foliage and upload some enhancements (not corrections)!!!!
  21. Like
    ArtcoInc reacted to joli1811 in Information Pages Unlimited v1.0   
    Actually most of the welcome messages never worked unless they were commented out in the language files it was always a bug
    when I now install I modify the second extra SQL to only install the TEXT MAIN
    Now your thought about different messages for holidays is interesting sure it could be done if
    1: there was a TEXT MAIN/ TEXTMAIN1 / etc and inserted in database and reflected in the index.php.
    Another thought would be,  I experimented a bit with this with Lambros but forget where the post is
    is to make a page say Christmas and then edit it and make it a sub category of itself  that way the page is hidden  but you have ready to cut and paste.
    or also interesting is if you take this code and insert example is page id 60 anywhere it will reflect page id 60 that you created in admin so theoretically  if you pasted that in the right place in the index.php and changed the page id according to season and the pages were hidden sub category pages 
    just by changing the id you would have your quick seasonal changes
    PS: Not really tested but should work :rolleyes: maybe haha
    <?php $information_query = tep_db_query("SELECT information_title, information_description FROM " . TABLE_INFORMATION . " WHERE visible='1' AND information_id='60' AND language_id='" . (int)$languages_id ."'"); $information = tep_db_fetch_array($information_query); $title = stripslashes($information['information_title']); $page_description = stripslashes($information['information_description']); ?>
  22. Like
    ArtcoInc reacted to De Dokta in 234bs - Breadcrumb Separator   
    I do not know if it's bootstrap specific or generally for css applies: When I wanted to change my breadcrumb separator, I have thoroughly tested the usual html entities in all known variants, but none of them worked! Apart from the hardcoded version Unicode seems to be the only working solution - in any case the only one I could find........
  23. Like
    ArtcoInc reacted to MrPhil in 234bs - Breadcrumb Separator   
    The double closing guillemet (>>) is Latin-1 \BB or Unicode \00BB. If you give an HTML named entity, & raquo; will work with any encoding, as will & #x00BB; or & #187;. Note that this is the UFT-16 code number, which is what HTML wants regardless of the page encoding.
    Just a word of caution: make sure if you must give a hard-coded (binary) character in CSS or HTML/PHP that it matches the encoding that your page will be displayed in (or, it's UTF-16 and guaranteed to be converted to the proper display encoding). I've seen so many complaints about templates and such where someone typed in, say, a >> using Latin-1 encoding, and then someone else tries using this code for a UTF-8 page display, and they get the dreaded "?-in-black-diamond" invalid character glyph. HTML and PHP code must have either named or numeric HTML entities, and never anything outside the ASCII range (x00-x7F) as binary characters. I don't know offhand what the CSS rules are, but if you stick to Unicode (UTF-16 values) it is probably OK (if it was tested and worked in the examples given).
    Incidentally, U+226B is "math much greater than" and U+27EB is "math double closing angle bracket". U+00BB has traditionally been used as a breadcrumb separator, simply because it was available in Latin-1. I personally prefer U+21D2 (right pointing double arrow) because it is more semantically meaningful, but the choice is yours.
    I still don't trust this forum software not to expand the entities I gave, so I stuck and extra space after the the &.
  24. Like
    ArtcoInc reacted to De Dokta in 234bs - Breadcrumb Separator   
    add to the user.css:
    .breadcrumb > li + li:before {
      content: ">>";
    or if you prefer unicode:
    .breadcrumb > li + li:before {
      content:"\003E \003E";
  25. Like
    ArtcoInc reacted to burt in Order Totals modules need a bit of a fix - Data Types in tables   
    The point is, even a tiny change in (say) the database could lead to needing wholesale changes to code in the checkout process, account history, payment modules and so on. So "recoding the system" is possibly close to the truth.