Jump to content
Latest News: (loading..)


Popular Content

Showing most liked content since 10/07/2009 in all areas

  1. 12 points
    Harald Ponce de Leon

    Progress Update

    Hi All.. A quick progress update regarding what we've been working on recently. A new Community Team is being formed to help moderate community submitted content and to help with community relations and issues. This not only helps the developers in the team to focus more on code development and less on moderation, but also broadens the voice in the team when community related issues arise and are addressed. This new approach to the team is being ironed out and we'll be glad to invite more active users in the community to help out once everything is running smoothly again. For the curious, those we have initially invited can be seen on the forum staff page. An internal build of v2.3.5 has been in testing and this weekend will be spent fixing the known issues. A majority of reported issues and pull requests at Github have been addressed and will also make their way into v2.3.6 (the Community Bootstrap edition). These releases are planned to be the last in the v2.3.x release series to place all resources on v2.4/v3.0. Accommodations will be made if the community wish to continue working on v2.3.6 for future v2.3.x releases. More information about this will be announced with the releases. The next test builds will be made available to Ambassadors for a wider testing audience. Both releases will be officially pushed out this month. The forum software has been updated to the latest release series and introduces a new Clubs section to the forum. We've moved our partner announcements forum channels to the Clubs section where our partners can customize their own club sections further with logos and additional discussion channels. We're planning on adding multilingual Clubs in the near future, and also community requested clubs (eg, for community release editions). The upgrade of the forum software version was originally postponed due to changes made with user accounts and the integration we have with our main website. This also plays a role with the marketplace integration in v2.4 where user accounts are required. An online update for 2.4 will be pushed out soon to test the marketplace integration and user account logins/creations with. Release dates for v2.4 will be provided when the marketplace integration online update has been pushed out. Two new websites were planned to be launched in Q4 but are being pushed back to Q1 2018 to push our next releases out first. The new websites are for a proper commercial support inquiry / job marketplace website (to replace the not-so-user-friendly forum channel here in the forums), and a new user profile website (for Ambassadors) to highlight ones profile across all of our websites (submissions from our forums, live sites, and apps marketplace websites), with the focus on the person behind the screen name. Hope everyone has a great festive season!
  2. 10 points

    28d, 2018

    Third installment of the 28d Project. I missed last year for reasons, but this year it's back. I'm running it slightly differently to previous versions, as this time there will be no option to buy each days package - that was frustratingly difficult to manage - sorry. Instead there will be a very simple "buy now" price for everything, and that will go up in price as February goes by, therefore those who can buy earlier...pay less...and those who buy later...pay more. Hit the [Follow] button in the right hand corner of this page as I shall be updating this post as the days go by. Should anyone wish to pre-buy...thank you for your consideration and support. PM me and we can arrange it. Don't know what the 28d Project is? I make code available during February (each year, usually). This is code that I have created or updated and make available for an all-in price. Had a couple of questions by PM; Edge Compatible: Yes Gold Compatible: Yes(ish), you might need to update some files to the Edge version, I will point these out in the individual "readme" for each. Certainly nothing to be worried about! PHP7 Compatible: Yes Official osCommerce Compatible: No, sorry Core Code Changes: Will be kept to an absolute minimum, you guys know I hate to change Core and I know you guys hate Core Code Changes...but sometimes, it is, unfortunately, unavoidable. Progress: I have 21 things coded and ready for finalised checking. 1 thing is being live tested by a shop. 6 or 7 things more to write; ideas would be welcomed for small to medium things Thanks for all the PMs and Feedback so far!
  3. 10 points

    Admin to Bootstrap NO HTML changes

    Convert via jQuery your osCommerce admin to bootstrap the easy way, tutorial below the video. Video updated to V8 https://youtu.be/7v7LvPLyRYQ admin/includes/stylesheet.css (back-up & Replace): /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2014 osCommerce Released under the GNU General Public License */ /* body { font-family: Verdana, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 0.7em; } */ body { display: none; } /* links */ a { color: #000000; font-weight: normal; text-decoration: none; } a:hover { text-decoration: underline; } a.headerLink { color: #ffffff; font-weight: bold; text-decoration: none; } a.headerLink:hover { text-decoration: underline; } a.menuBoxHeadingLink { color: #616060; font-weight: bold; text-decoration: none; } a.menuBoxHeadingLink:hover { } a.menuBoxContentLink { color: #616060; font-weight: normal; text-decoration: none; } a.menuBoxContentLink:hover { text-decoration: underline; } a.splitPageLink { color: #0000FF; font-weight: normal; text-decoration: none; } a.splitPageLink:hover { text-decoration: underline; background-color: #FFFF33; } /* menu box */ .menuBoxHeading { color: #616060; background-color: #ffffff; } .menuBoxContent { color: #616060; } /* page */ /*body { background-color: #ffffff; color: #000000; margin: 0px; }*/ /*.headerBar { background-color: #B3BAC5; }*/ /*.headerBarContent { color: #ffffff; font-weight: bold; padding: 2px; }*/ /*.columnLeft { background-color: #F0F1F1; border-color: #999999; border-width: 1px; border-style: solid; padding: 2px; }*/ /*.pageHeading { font-size: 1.5em; color: #727272; font-weight: bold; }*/ /* data table .dataTableHeadingRow { background-color: #C9C9C9; } .dataTableHeadingContent { color: #ffffff; font-weight: bold; } .dataTableRow { background-color: #F0F1F1; } .dataTableRowSelected { background-color: #DEE4E8; } .dataTableRowOver { background-color: #FFFFFF; cursor: pointer; cursor: hand; } .dataTableContent { color: #000000; } */ /* info box .infoBoxHeading { color: #ffffff; background-color: #B3BAC5; } .infoBoxContent { color: #000000; background-color: #DEE4E8; } */ /* message box */ .messageBox { } .messageStackError, .messageStackWarning { background-color: #ffb3b5; } .messageStackSuccess { background-color: #99ff00; } /* forms CHECKBOX, INPUT, RADIO, SELECT, TEXTAREA, FILE { font-family: Verdana, "Helvetica Neue", Helvetica, Arial, sans-serif; } FORM { display: inline; } */ /* account .formArea { background-color: #f1f9fe; border-color: #7b9ebd; border-style: solid; border-width: 1px; } .formAreaTitle { font-family: Tahoma, Helveticy, Verdana, Arial, sans-serif; font-weight: bold; } */ /* attributes */ /*.attributes-odd { background-color: #f4f7fd; }*/ /*.attributes-even { background-color: #ffffff; }*/ /* miscellaneous */ .specialPrice { color: #ff0000; } .oldPrice { text-decoration: line-through; } .fieldRequired { color: #ff0000; } .errorText { color: #ff0000; } /* new messageStack styles .secInfo, .secSuccess, .secWarning, .secError { border: 1px solid; margin: 10px 0px; padding: 5px 10px 5px 50px; background-repeat: no-repeat; background-position: 10px center; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; } .secInfo { border-color: #00529B; background-image: url('../images/ms_info.png'); background: url('../images/ms_info.png') no-repeat 10px center, url('../images/ms_info_bg.png') repeat-x; background-color: #BDE5F8; } .secSuccess { border-color: #4F8A10; background-image: url('../images/ms_success.png'); background: url('../images/ms_success.png') no-repeat 10px center, url('../images/ms_success_bg.png') repeat-x; background-color: #DFF2BF; } .secWarning { border-color: #9F6000; background-color: #FEEFB3; background-image: url('../images/ms_warning.png'); background: url('../images/ms_warning.png') no-repeat 10px center, url('../images/ms_warning_bg.png') repeat-x; background-color: #FEEFB3; } .secError { border-color: #D8000C; background-image: url('../images/ms_error.png'); background: url('../images/ms_error.png') no-repeat 10px center, url('../images/ms_error_bg.png') repeat-x; background-color: #FFBABA; } .secInfo p, .secSuccess p, .secWarning p, .secError p { padding: 2px; } #adminAppMenu { float: left; width: 190px; padding: 5px; } #adminAppMenu h3 { } #adminAppMenu ul { list-style: none; margin: -5px 0 -5px -10px; padding: 0; } #contentText { margin-left: 200px; }*/ /* Custom jQuery UI */ .ui-widget { } .ui-dialog { min-width: 500px; } /* buttons .tdbLink a { } .tdbLink button { } */ .selectwidthauto{ width:auto !important; } in admin/includes/template_top.php : [Viewport] DIRECTLY AFTER: <head> ADD: <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> [bootstrap css] BEFORE: <link rel="stylesheet" type="text/css" href="includes/stylesheet.css"> ADD: <link href="../ext/bootstrap/css/bootstrap.min.css" rel="stylesheet"> [Font-awesome css] BEFORE: <script type="text/javascript" src="<?php echo tep_catalog_href_link('ext/flot/jquery.flot.min.js', '', 'SSL'); ?>"></script> ADD: <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> [Flot chart resize fix] AFTER: <script type="text/javascript" src="<?php echo tep_catalog_href_link('ext/flot/jquery.flot.time.min.js', '', 'SSL'); ?>"></script> ADD: <script type="text/javascript" src="<?php echo tep_catalog_href_link('ext/flot/jquery.flot.resize.min.js', '', 'SSL'); ?>"></script> OPTIONAL SUMMERNOTE WYSIWYG DIRECTLY ABOVE </head> ADD: <!-- include summernote css/js--> <link href="//cdnjs.cloudflare.com/ajax/libs/summernote/0.8.9/summernote.css" rel="stylesheet"> <script src="//cdnjs.cloudflare.com/ajax/libs/summernote/0.8.9/summernote.js"></script> admin/includes/template_bottom.php BEFORE: </body> ADD: <script> $(function() { //Prepare the DOM $(document).on("click", ".menu", function(){ osCMenu(this); }); $('body').prepend( "<div id='container-wrapper' class='container-fluid'><div class='row'></div></div>" ); columnLeft = $("<div class='col-md-2 menu-col'/>"); columnCenter = $("<div class='col-md-10 body-content-col'/>"); $('body .row').append(columnLeft, columnCenter); //Administrator Header Bar $('body').css('padding-top', '70px'); $('#adminAppMenu').appendTo('.menu-col'); //prepare table conversion $('table tbody tr.headerBar').parent().parent().addClass('table-2-nav'); //Convert logo to brand $('.table-2-nav a:first').addClass('navbar-brand'); $('.table-2-nav img:first').addClass('img-responsive').css('margin-top','-15px'); //wrap the logo and build the default nav $('.table-2-nav a:first').wrap( "<nav class='navbar navbar-default navbar-fixed-top'><div class='container-fluid'><div class='navbar-header'></div></nav>" ); //extend nav with toggle bar-button $('.navbar-header').prepend( "<button type='button' class='navbar-toggle collapsed' data-toggle='collapse' data-target='#bs-example-navbar-collapse-1' aria-expanded='false'><span class='sr-only'>Toggle navigation</span><span class='icon-bar'></span><span class='icon-bar'></span><span class='icon-bar'></span></button> "); //create the visible navigation menu $('nav div:first').append("<div class='collapse navbar-collapse' id='bs-example-navbar-collapse-1'><ul class='nav navbar-nav navbar-nav-left'></ul><ul class='nav navbar-nav navbar-nav-right pull-right'></ul></div>"); //collect links var navLeftLinks = $('#bs-example-navbar-collapse-1 ul.navbar-nav-left'); var navRightLinks = $('#bs-example-navbar-collapse-1 ul.navbar-nav-right'); $('.table-2-nav .headerBarContent:first a').each(function () { var $this = $(this); var list = $("<li/>"); list.append( $this ); navLeftLinks.append(list); }); navLeftLinks.prepend('<li><a href="#" class="menu"><i class="fa fa-caret-square-o-left" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Show/Hide menu"></i></a></li>'); var str = "<?php echo HEADER_TITLE_ADMINISTRATION; ?>"; var newhtml = $('ul.navbar-nav-left').html().replace(str, '<i class="fa fa-home" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="'+str+'"></i>'); $('ul.navbar-nav-left').html(newhtml); var str = "<?php echo HEADER_TITLE_ONLINE_CATALOG; ?>"; var newhtml = $('ul.navbar-nav-left').html().replace(str, '<i class="fa fa-cart-arrow-down" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="'+str+'"></i>'); $('ul.navbar-nav-left').html(newhtml); var str = "<?php echo HEADER_TITLE_SUPPORT_SITE; ?>"; var newhtml = $('ul.navbar-nav-left').html().replace(str, '<i class="fa fa-life-ring" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="'+str+'"></i>'); $('ul.navbar-nav-left').html(newhtml); $('[data-toggle="tooltip"]').tooltip(); navLeftLinks.css('font-size','20px') //Collect log-in/-off link with Administrator name NavText = $('.table-2-nav .headerBarContent:nth-child(2)').html(); NavTextPlaceHolder = $("<p class='navbar-text navbar-right'>"); NavTextPlaceHolder.append( NavText ); navRightLinks.prepend(NavTextPlaceHolder); $('.navbar-text a:first').addClass('navbar-link'); //Show the Bootstrapped navigation bar $( "nav" ).insertBefore( $( ".table-2-nav" ) ); //Admin Language in navbar $("form[name=adminlanguage]").addClass('navbar-form navbar-right').prepend( "<div class='input-group language'></div>" ); $('select[name=language]').appendTo('.input-group.language'); $( "form[name=adminlanguage]" ).insertBefore( "nav ul.navbar-nav-right" ); //Convert osCommerce's page-headers to bootstrap $('table .pageHeading:first').contents().unwrap().wrap( "<div class='page-header'><h1></h1></div>"); $('.page-header').prependTo('.body-content-col').css('padding-bottom','0').css('margin','0'); //Search field in navbar $("form[name=search]").addClass('navbar-form navbar-search-form navbar-left').prepend( "<div class='input-group search'></div>" ); $('input[name=search]').before(function () { return $('<span class="input-group-addon search"/>', { for: this.name }).addClass('selectwidthauto').append(this.previousSibling); }).addClass('form-control selectwidthauto'); $("span.search").prependTo('.input-group.search'); $('input[name=search]').appendTo('.input-group.search'); $( "form[name=search]" ).insertAfter( "nav ul.navbar-nav-left" ); //Categories GoTo select in navbar $("form[name=goto]").addClass('navbar-form navbar-left').prepend( "<div class='input-group goto'></div>" ); $('select[name=cPath]').before(function () { return $('<span class="input-group-addon goto"/>', { for: this.name }).addClass('selectwidthauto').append(this.previousSibling); }).addClass('form-control selectwidthauto'); $("span.goto").prependTo('.input-group.goto'); $('select[name=cPath]').appendTo('.input-group.goto'); $( "form[name=goto]" ).insertAfter( "nav .navbar-search-form" ); //Orders Search field in navbar $("form[name=orders]").addClass('navbar-form navbar-search-form navbar-left').prepend( "<div class='input-group orders'></div>" ); $('input[name=oID]').before(function () { return $('<span class="input-group-addon orders"/>', { for: this.name }).addClass('selectwidthauto').append(this.previousSibling); }).addClass('form-control selectwidthauto'); $("span.orders").prependTo('.input-group.orders'); $('input[name=oID]').appendTo('.input-group.orders'); $( "form[name=orders]" ).append('<input type="hidden" name="action" value="edit">').insertAfter( "nav ul.navbar-nav-left" ); //Categories GoTo select in navbar $("form[name=status]").addClass('navbar-form navbar-left').prepend( "<div class='input-group status'></div>" ); $('select[name=status]').before(function () { return $('<span class="input-group-addon status"/>', { for: this.name }).addClass('selectwidthauto').append(this.previousSibling); }).addClass('form-control selectwidthauto'); $("span.status").prependTo('.input-group.status'); $('select[name=status]').appendTo('.input-group.status'); $( "form[name=status]" ).insertAfter( "nav .navbar-search-form" ); //Remove osCommerce's table-based navigation $('.table-2-nav').remove(); //Bootstrap the osCommerce's primary content table (center table) $('table tbody tr.dataTableHeadingRow').parent().parent().addClass('bootstrapped-table table table-responsive table-condensed table-hover table-striped table-bordered'); $('table tbody tr.dataTableRowSelected').addClass('warning') //Bootstrap the osCommerce's right table (edit data) $('table tbody tr.infoBoxHeading').parent().parent().addClass('infoBox-table info-table table table-responsive table-condensed table-bordered'); $('.info-table').next("table").addClass('infoBoxContent-table table table-responsive table-condensed table-bordered'); $('.info-table').next("form").addClass('form-table'); $('.form-table').children("table").addClass('info-table table table-responsive table-condensed table-bordered '); //Bootstrap the osCommerce's formArea tables (Customers edit) $( ".formArea table" ).addClass('table table-responsive table-condensed table-hover table-striped table-bordered') //Bootstrap jQuery-ui buttons $( "a.ui-button" ).removeAttr('class').addClass('btn btn-default').css({'margin-right': '4px'}); $( "button.ui-button" ).removeAttr('class').addClass('btn btn-primary').css({'margin-right': '4px'}); $( "#filters .btn" ).addClass('btn-sm') //jQuiry-UI button icons $( "span.ui-icon" ).addClass('pull-left'); //bootstrap pageNavigation links $( "form[name=pages]" ).addClass( "form-inline" ); $( ".splitPageLink" ).addClass('btn btn-default'); $( "select" ).addClass('form-control selectwidthauto'); //$( "input[type=radio]" ).wrap( "<div class='radio'><label></label></div>" ); //$( "input[type=checkbox]" ).wrap( "<div class='checkbox-inline'></div>" ); //build table headings $('.bootstrapped-table').each(function(){ $(this).prepend('<thead></thead>') $(this).find('thead').append($(this).find("tr:eq(0)")); }); $(".dataTableHeadingRow td").each(function() { $(this).replaceWith('<th>' + $(this).html() + '</th>'); }); $('.infoBox-table').each(function(){ $(this).prepend('<thead></thead>') $(this).find('thead').append($(this).find("tr:eq(0)")); }); //convert message tables to bootstrap //old message styles $('table tbody tr.messageStackSuccess').parent().parent().addClass('message-table table').insertAfter('.page-header'); $('table tbody tr.messageStackError').parent().parent().addClass('message-table table').insertAfter('.page-header'); $('table tbody tr.messageStackWarning').parent().parent().addClass('message-table table').insertAfter('.page-header'); //new message styles $('.secInfo').toggleClass('secInfo alert alert-info'); $('.secSuccess').toggleClass('secSuccess alert alert-success'); $('.secWarning').toggleClass('secWarning alert alert-warning'); $('.secError').toggleClass('secError alert alert-danger'); //add colspan to fist th on the orders section_products_content tab $('#section_products_content table tr th:first').attr('colspan', '2'); $('#section_products_content table').removeClass('table-bordered table-striped table-hover'); //Convert New Product to Bootstrap $("form[name=new_product] table table").addClass('table table-responsive table-condensed table-bordered'); //$("form[name=new_product] table table tr").removeAttr('bgcolor'); //Convert BannerManager to Bootstrap $("input[name=banners_title]").closest('table').addClass('table table-responsive table-condensed table-bordered'); //Convert osCommerce's footer to bootstrap $('table:last td').wrapInner( "<footer class='footer'><div class='container'><p class='text-muted text-center'></p></div></footer>" ); $('footer').insertAfter('body #container-wrapper'); //Put osCommerce's content to bootstrap column $('#contentText').appendTo('.body-content-col'); //clean-up tables $('.table') .removeAttr('border') .removeAttr('width') .removeAttr('height') .removeAttr('cellspacing') .removeAttr('cellpadding'); $("img[src='images/pixel_trans.gif']").remove(); $('td.pageHeading').remove(); $('fieldset').removeAttr('style'); $('legend').removeAttr('style'); $('tr').removeAttr('onmouseover').removeAttr('onmouseout'); $('table:last').remove(); //Convert inputs and textarea's $("input[type=text]").addClass('form-control selectwidthauto'); $("textarea").addClass('form-control'); //load summernote wysiwyg $("textarea[name^=categories_description]").addClass('summernote'); $("textarea[name^=products_description]").addClass('summernote'); $("textarea[name=comments]").addClass('summernote'); $("textarea[name=banners_html_text]").addClass('summernote'); //replace oscommerce's images with font-icons $("img[src='images/icon_up.gif']").replaceWith("<i class='fa fa-long-arrow-up' aria-hidden='true'></i>"); $("img[src='images/icon_down.gif']").replaceWith("<i class='fa fa-long-arrow-down' aria-hidden='true'></i>"); if (localStorage.getItem("adminToggleAppMenu") === null) { localStorage.setItem('adminToggleAppMenu', 1) } if (localStorage.getItem("adminToggleAppMenu") == 0) { $(".menu i").removeClass('fa-caret-square-o-left').addClass('fa-caret-square-o-right'); $(".menu-col").hide(); $("body .body-content-col").removeClass('col-md-10').addClass('col-md-12'); } if (localStorage.getItem("adminToggleAppMenu") == 1) { $(".menu i").removeClass('fa-caret-square-o-right').addClass('fa-caret-square-o-left');; $(".menu-col").show(); $("body .body-content-col").removeClass('col-md-12').addClass('col-md-10'); } if($('form[name=login]').length > 0){ $('.page-header').addClass('text-center'); $('table') .removeAttr('border') .removeAttr('width') .removeAttr('height') .removeAttr('cellspacing') .removeAttr('cellpadding'); $('table .infoBox-table').remove(); $('table .info-table').css({'width': '50%', 'margin': '0 auto', 'margin-top': '50px', 'margin-bottom': '50px'}); $('form[name=login]').insertAfter('#contentText'); $("input[type=password]").addClass('form-control selectwidthauto'); $(".body-content-col").toggleClass("col-md-10 col-md-12") columnLeft.remove(); } //convert jquery-ui accordion to bootstrap collapse $( "#adminAppMenu" ).accordion('destroy').addClass('panel-group').attr('role', 'tablist').attr('aria-multiselectable', 'true'); $('#adminAppMenu h3').each(function(i) { $(this).attr('id', 'page'+(i+1)).addClass('panel-title').find('a') .attr('role', 'button').attr('data-toggle', 'collapse') .attr('data-parent', '#adminAppMenu') .attr('href', '#collapse_'+(i+1)) .attr('aria-expanded', 'false') .attr('aria-controls', 'collapse_'+(i+1)) .parent().next() .attr('id', 'collapse_'+(i+1)).attr('class', 'panel-collapse collapse').attr('role','tabpanel').attr('aria-labelledby','heading_'+(i+1)); $(this).wrap('<div class="panel panel-default"><div class="panel-heading" role="tab" id="heading_'+(i+1)+'"></div></div>'); $('#collapse_'+(i+1)+' ul').addClass('list-group').find('li').addClass('list-group-item'); $('#collapse_'+(i+1)).insertAfter('#heading_'+(i+1)); }); //Keep state of collapse menu via localStorage var adminCollapseAppMenu = localStorage.getItem('adminCollapseAppMenu'); if (!adminCollapseAppMenu) { adminCollapseAppMenu = []; localStorage.setItem('adminCollapseAppMenu', JSON.stringify(adminCollapseAppMenu)); } else { adminCollapseAppMenuArray = JSON.parse(adminCollapseAppMenu); var arrayLength = adminCollapseAppMenuArray.length; for (var i = 0; i < arrayLength; i++) { var panel = '#'+adminCollapseAppMenuArray[i]; $(panel).addClass('in'); } } $('#adminAppMenu').on('shown.bs.collapse', '.panel-collapse', function() { adminCollapseAppMenu = JSON.parse(localStorage.getItem('adminCollapseAppMenu')); if ($.inArray($(this).attr('id'), adminCollapseAppMenu) == -1) { adminCollapseAppMenu.push($(this).attr('id')); }; localStorage.setItem('adminCollapseAppMenu', JSON.stringify(adminCollapseAppMenu)); }); $('#adminAppMenu').on('hidden.bs.collapse', '.panel-collapse', function() { adminCollapseAppMenu = JSON.parse(localStorage.getItem('adminCollapseAppMenu')); adminCollapseAppMenu.splice( $.inArray($(this).attr('id'), adminCollapseAppMenu), 1 ); localStorage.setItem('adminCollapseAppMenu', JSON.stringify(adminCollapseAppMenu)); }); }); //Prevent jQuery-UI's CSS showing up on pageLoad $(window).load(function() { // When the page has loaded $("body").fadeIn(100); }); </script> <?php if (tep_session_is_registered('admin')) { ?> <script> function osCMenu() { event.preventDefault(); if (localStorage.getItem("adminToggleAppMenu") == 1 ? localStorage.setItem('adminToggleAppMenu', 0) : localStorage.setItem('adminToggleAppMenu', 1)); if (localStorage.getItem("adminToggleAppMenu") == 1 ? $(".menu i").removeClass('fa-caret-square-o-right').addClass('fa-caret-square-o-left') : $(".menu i").removeClass('fa-caret-square-o-left').addClass('fa-caret-square-o-right')); if (localStorage.getItem("adminToggleAppMenu") == 1 ? $(".menu-col").show() : $(".menu-col").hide()); $(".body-content-col").toggleClass("col-md-10 col-md-12") } </script> <?php } ?> <script src="../ext/bootstrap/js/bootstrap.min.js"></script> OPTIONAL SUMMERNOTE WYSIWYG if you choose to want the wysiwyg: BEFORE <script src="../ext/bootstrap/js/bootstrap.min.js"></script> </body> </html> ADD: <script> $(function(){ //SUMMERNOTE WYSIWYG OPTIONAL: $('.summernote').summernote(); }); </script>
  4. 9 points
    28d Project comes to an official close, so nows the time to take a look and PM me if you want to see about getting all the code... Unofficially, there will be some bonus extras as I am waiting on testers to get back to me...as well have plans for at least 1 more GDPR module! PM me if interested, and a massive THANK YOU to all those who were able to join the Project already :)
  5. 8 points

    28d, 2018

    A weeks worth of bonuses brings to a conclusion this years 28d project. A massive THANK YOU to the shopowners who were able to see what I've been trying to do and got behind me. Help and support is available for you guys as and when you need it. For the other hundreds (1000s?!?) of shopowners and developers who felt unable or unwilling to get involved, I say this;
  6. 8 points
    Wish everyone Happy Holidays and Merry Xmas... Best wishes for the coming year, hopefully 2018 will be the year for osCommerce to come alive again. Special thanks to all those who have supported the Community Version and very special thanks to all my clients, all of whom I consider friends. Cya on the flipside!
  7. 7 points

    Path To "Final"

    Here's what I want to get done to set the Community Version to a "Final" release; 1a. Modularisation of index Title e2828ca 1b. Modularisation of index_nested Title b84136f 1c. Modularisation of index_products @BrockleyJohn to come up with ideas 2. Modularisation of product_info Started this years back. Needs some modules created. Strip Schema dfe5c47 Schema 82a5cfa Buttons d2a5dc4 63fc4ee f1a3dd9 Date Info Options Description Gallery Product Price Product Name 3. Bootstrap v4 Updating full shopside to BSv4 4. php7.2 Updating full shopside and full adminside to be 7.2 compliant. I think we are mostly there on this. 5. getContent calls and Hook calls Discussion needed What I don't have plans for, so will not happen; Everything else Why go "Final" Too many shopowners and developers wanting a fixed release; almost all feedback tells me rolling updates are not welcome. After "Final" No further changes will be made other than, occasionally; security tightening bootstrap implementation errors html errors Date for "Final" I was hoping to get it done by the end of this Month, as this month is osCommerce's 18th birthday. I can tell you that this self imposed target will not be met. As per the last four years I'll simply forge ahead as and when I can with the help of a couple of trusted lieutenants.
  8. 7 points
    Shop owners ... Developers ... osC junkies ... We need your help! As many of you know, @burt has been instrumental in pushing the community build of osC. We are the community. And right now, @burt needs our help! @burt does not get paid for his work on the community build! To finance all of his work, he puts out an incredible assortment of modules, such as his current 28 days bundle. The money he gets from these allow him the time to work on the community build core. He is very close to wrapping up Edge, making it a fixed base of code, with only future hotfixes as needed. But, he needs our help. We need about 10 people (shop owners, developers, osC junkies) to buy into the current 28 days bundle here: This is a great bargain, fantastic modules (just check out what he's released so far!), great code (most require NO core code changes), *plus*, he does offer support and customization! So please, let's help @burt help us! (otherwise, he'll have to take a day job <gasp!>, while we all wait for Edge to be finished)
  9. 7 points
    This is a admin sidebar that replaces the stock menu. It can be expanded or condensed on a column of icons. It also adds bootstrap framework to admin. Hope you enjoy it. Please comment here if you have any improvements or find any problem. Download: https://apps.oscommerce.com/ebjVY&admin-responsive-sidebar-with-bootstrap
  10. 7 points

    2.4 Series

    Harald I can appreciate all the work you are doing behind the scenes to unify the osCommerce ecosystem, and I see that you have a vision. It's great that you are getting stuck back into it, lots of people were getting frustrated at a lack of progress so it will be great to shut down the negativity with these new releases (even tough they are more than long overdue!) Keep up the great work, it will be terrific to see things pick up again. I have to say that you owe @burt a big debt of gratitude, I hope you are going to do something special for him.
  11. 6 points

    28d, 2018

    Bonus #6 - Video Tab New Tab that shows one video per product. Could be an unboxing video, or whatever. If you want to be the awesomest shopowner ever...it could be a video of the Red Woman from Game of Thrones. Admin Side New Page for assigning video to product. Works only with Youtube at this moment (see Question below). Admin Side New box and links for these helper pages Shop Side New Tab showing the Video Question Is Youtube enough, or should there be other video hosting options? Created in response to @bruyndoncx great idea, thank you. Delivery: Tomorrow
  12. 6 points

    28d, 2018

    Day 01 - Better Stock Message This is a Content Module that sits on shopping_cart.php which displays a better stock message. Core Code Changes YES - 1 line of code on shopping_cart.php Existing New Module Admin
  13. 6 points

    Ive got a suprise coming

    And here's some general usage: https://youtu.be/dLgiD1FoTj4
  14. 6 points

    Surfalot CMS App Support

    Surfalot CMS is an osCommerce App designed to help the developer and shop owner alike build, maintain, and organize content easily in one place. TinyMCE is integrated to provide WYSIWYG content editing. Create new content and insert it into your navigation quickly and easily directly in the admin. Edit content on existing pages by placing a small template code snippet on your target page. The responsive features of osCommerce v2.3.4 Community Edition are maintained throughout the App. Full osCommerce built-in cache support is available. If your shop runs with osCommerce cache, Surfalot CMS will cache all the page queries so your shop maintains peak performance. Dynamic content from the additional shortcode module is still injected at display time. This is designed specifically for osCommerce v2.3.4 Community Edition. This project was started to see how far I could stretch the "no core changes" principles driving this fabulous osCommerce version with content creation. osCommerce v2.3.4 Official is also supported. Main Features Create and WYSIWYG Edit Site Pages Create and WYSIWYG Edit Content and Blocks Manage page titles, page content, breadcrumb, and meta tags in the admin Create Navigation with a Navbar Module and Sidebar Box Module osCommerce Cache Support Easy install App requires changes to only a few files Place content using existing osC Template groups and create your own Integrated TinyMCE WYSIWYG editor Navigation Features Full featured Navigation manager Manage your Navbar menu with text, links, and existing modules Manage a sidebar information box with new or existing pages and links Specify Font Awesome icons for all Navbar items Compatible with existing Navigation modules Include Surfalot CMS page items anywhere in the Navbar Download: https://apps.oscommerce.com/iJnr7
  15. 6 points
    I suggest not reading any of those SEO "experts" and just focus on giving your customers a great experience. Repeat business is what you want, not a continual frenetic hunt for new clients through Google.
  16. 6 points

    Slim Checkout for BS

    Slim-Checkout Common opinion is that the checkout process should be as "slim" as possible. This means to hide all page elements which are not strict necessary to show to the customer a simple clean layout, so nothing disturbs his attention from the purchase process. This add-on allows to do it by simple settings in a Header Tag module. Git Hub Repository: https://github.com/raiwa/Slim-Checkout/tree/master What it does: - allows to hide elements on checkout pages - optional hide on checkout pages (checkout_shipping.php, checkout_payment.phpheckout_confirmation.php and checkout_success) - optional hide also on shopping_cart.php - select each group to hide (navbar, header area, boxes, footer and footer suffix Installation: - copy all new files - install and adjust Slim Checkout Header Tag testing , Bug reports and suggestions very welcome. rgds Rainer
  17. 6 points
    Addon is now available. Congratulations!
  18. 6 points
    Edge is now mirrored to the recent v2.3.4.1
  19. 6 points

    2.4 Series

    Thank You Frank. If it was not for you and a handful of other shopowners...I dread to think where osCommerce would be right now.
  20. 5 points

    28d, 2018

    Bonus #4 - Price Changing On The Fly Works in every currency. Lots of people wanted this... Core Code Changes None Video (watch the price as the select options are changed) This is one of the modules that was sent out for testing, and was late in coming back to me. This will be sent out later today or perhaps tomorrow.
  21. 5 points
    Dan Cole

    How to get the help you need.

    Need help? You've come to the right place. This post offers some general suggestions on how to get the help you need, quickly and efficiently. With over 1.6 million posts, your question has likely been asked and answered already so try searching the forums first. Using Google search generally produces the best results. In the Google search bar, just enter osCommerce and a description of the problem you are having or a likely topic for that problem and see what results are returned. You may get the help you need faster than you think. If you can't find the answer you need using Google Search then perhaps someone on the forums can help. Help is provided by volunteers, so please be considerate of their time, and provide as much information as possible. Here is a list of the information you should provide. Not all of it may be applicable to your particular situation, but providing as much detail as possible will result in a faster and more relevant reply. 1. Which version of osCommerce you are using? (you can find this at Admin > Tools > Version Checker). - Please provide the full version number, which is 3 or 4 digits ie 2. Also indicate whether you are using standard osCommerce or the Responsive (a.k.a. "Community Edition", "Community Supported") version. - If you are using version 2.3.4 or and are not sure you can check whether your site is Responsive (mobile friendly) by entering your website address here. 3. Is this a new install or an existing store? - If this is a new install please be sure you are using the latest version of osCommerce which you can get here. 4. What version of PHP are you using? (you can determine this by looking at Admin > Tools > Server Info) - If your ISP has recently updated the version of PHP they are using, it can cause a variety of problems. Fortunately, recent versions of osCommerce have been updated to work with newer versions of PHP, so if you are experiencing issues with PHP, please consider updating your osCommerce software. 5. Now you are ready to provide a detailed description of the problem you are having, including if applicable, the steps needed to reproduce it. - Providing a link to the page where the problem can be seen or if you are receiving an error message, a screen shot or the exact text of the message displayed is extremely helpful. The more detailed information you can provide the better. Be sure to obscure (***-out) sensitive information such as your server account name. If you need to show your configure.php file(s), remove or obscure the database name, user, and password! Now that you've gathered the information needed, you'll need to decide where to post it. 1. If the problem relates to an add-on that you downloaded from the apps area please see if there is a support thread for that add-on, and if so post your help request there. Often the authors of the add-on monitor their support threads, and you'll get the quickest and most appropriate response there. 2. If your problem relates to a 3rd party product or template that you acquired elsewhere, then you should go back to the author or vendor of that 3rd party product and ask for help there. They will be in the best position to help. 3. All other requests for help should be posted to the General Support forum. Start your own thread instead of posting to an existing thread, even if they seem related to the problem you are having. Your problem or the version of osCommerce/PHP you are using may be different and only serve to confuse others who are seeking help with a similar problem. Ask a new question. If all else fails or you need help updating an older add-on, or perhaps creating a new one, commercial support is also available. Requests for commercial support can be posted here.
  22. 5 points

    28d, 2018

    Day 24 - More GDPR A few more Modules for the GDPR page... Core Code Changes NONE 1. Orders 2. Device Data (turn on if using a previous 28d that collects this data) 3. Reviews 4. Security Answers (turn on if using a previous 28d that asks for this data) 5. Cookies Also a "Forget Me" module for the GDPR bit of the account.php page which leads to a way for Customers to Nuke themselves. Summary A bunch more useful modules to try to cut down on YOUR workload shouhld you have EU customers who want to know their data. Over the coming months up until May, I expect shopowners will come up with more ideas of things that need to be shown, and these can be coded up as extra modules.
  23. 5 points

    We need your help to finalize osC Edge!

    I am one of those who already receive Burt addons. To be honest, I was skeptical at first because I paid for addons "mystery" since we do not know the addons in advance. Well I can tell you that I do not regret it! It's well coded, it's clean, efficient and when needed, Burt is really available. Sincerely thanks Burt!
  24. 5 points

    28d, 2018

    Day 22 - More Product Tabs I have some more Tabbed goodness for you, these are used with the 28d02 set of modules. Core Code Changes NONE Tabbed X-Sell Set up X-selling on a per product basis. Show the X-Sells in a Tab! Note: Requires a previous X-Sell system of mine, included. Tabbed Social Sharing Much better looking Social Share Icons shown in a Tab! Note: Requires a previous social modules of mine, included. Tabbed Gallery This one I particularly like as I found a way to add in more Images ... by changing 1 admin setting they can then be shown in a Tab In standard osC, you get a gallery looking like this: By turning on the Tabbed Gallery and changing 1 osC setting...it transforms into this: Summary Three useful additions to the Tabbed System! Note While coding up these modules, I did find a tiny bug in the main p_i module, this would not have shown itself with the original included modules. Bug Hotfix will also be sent tonight.
  25. 5 points

    ULTIMATE Seo Urls 5 - by FWR Media

    I just quote from google All what google says is they recommend or say it is good practice to make the URLs read-friendly so that customers/users can read or use the URL as link or navigation guide. It doesn't say one word that it will improve your SEO because of that. Google just says you should keep it organized. Another quote Again, no mention of SEO benefit. Visitor friendly does not equal better SEO or SEO results. Lastly, everyone can do what they want with their shop site it is their website and they should know what their customers might want. Look at Amazon, eBay or some other big shop they all have different URLs, some long, some short, some easier to read, some are super long and complicated. Important is that the "real" SEO stuff in your shop is working as it should then you'll end up getting good search results. So what @burt said isn't wrong at all. User friendly URLs have nothing to do with SEO.
  26. 5 points

    Grid List - Cookie

    Grid List is remembered via Cookie. This means loading in this file; https://github.com/gburton/Responsive-osCommerce/blob/master/ext/jquery/cookie.js It's not a big file, but it can be got rid of as so; Change these two lines: https://github.com/gburton/Responsive-osCommerce/blob/master/includes/modules/header_tags/ht_grid_list_view.php#L46-L47 To: $grid_list_js = <<<EOD <script>$(function() { var cc = localStorage['list_grid']; if (cc == 'list') { $('#products .item').removeClass('grid-group-item').addClass('list-group-item'); } else { $('#products .item').removeClass('list-group-item').addClass('grid-group-item'); } $(document).ready(function() { $('#list').click(function(event){ event.preventDefault(); $('#products .item').addClass('list-group-item').removeClass('grid-group-item'); localStorage['list_grid'] = 'list'; }); $('#grid').click(function(event){ event.preventDefault(); $('#products .item').removeClass('list-group-item').addClass('grid-group-item'); localStorage['list_grid'] = 'grid'; });});});</script> EOD; $oscTemplate->addBlock($grid_list_js . PHP_EOL, $this->group); Save file and upload. You should see no change at all in functionality. HOwever your site is now loading faster as it does not have to load the cookie.js file. Thoughts and Feedback appreciated. And code changes. Etc and so on. Pitch in.
  27. 5 points

    Ive got a suprise coming

    How about this for install instructions https://youtu.be/cwaid91cp1A
  28. 5 points
    Looking to do a new 28days project so if anyone has an idea for a SMALL or MEDIUM sized piece of code, let me know...
  29. 5 points

    Slim Checkout for BS

    @raiwa Well done! We appreciate all the hard work you put into your addons and projects but please do me a favor and don't work too much/hard. In the past I/we have lost 2 very good friends from this forum and the last thing I remember was, they were working hard on some addons/projects and it could have been just mere coincidence or just fact that they overworked themselfs till their body gave up. You maintain multiple addons, you work with me on the Point and Rewards module, Sloppy words cleaner and, and, and.... Long story short, watch your health and take enough rest so that we will be able to enjoy you and your work for many years to come. That goes for all of you out there. osC is nice and all but it won't bring you anything if you work yourself to death. Now back to work....
  30. 5 points
    Hi All.. Both v2.3.5 and v2.3.6 were planend to be released today (end of August) however a few more days is needed. This topic will be updated on the weekend with the date next week when the releases will be pushed out. Kind regards,
  31. 4 points

    Path To "Final"

    I do not envisage modules on any page that is not already part or full modularised. That does not mean that the call cannot be added ready for third party bits and pieces. It's taken four years to get to where we are now. Let's get it Final and move on.
  32. 4 points

    28d, 2018

    Couple more GDPR Modules built by request; and These will be sent out tonight to 28d Members.
  33. 4 points

    [Contribution] Customer Support Portal

    This is the support thread for the Customer Service Portal https://apps.oscommerce.com/xihXD&customer-service-portal The primary goal of the Customer Support Portal is to allow osCommerce shop owners to allow their employees to work on order fulfillment and customer support inquiries without having to allow direct admin access. Additionally it serves as a full fledged order placement system that will work with a shops existing payment methods, as well as a couple of new payment modules that could be useful in case alternate means of payment processing are desired, or in person cash sales are needed. The Customer Support Portal also allows a true guest checkout option. No customer is created if this option is used. All customer information is stored only in the actual order information. There is a quick link in the Customer Portal Header menu that allows guest orders to be viewed separately from the rest of the store orders. Please note that in the ht_customer_service module settings there is an email field to fill out, by default it uses the store owners set email address. This email is used for certain functions within the Customer Service Portal, such as a placeholder email in guest account creation. It will always be populated on the guest customers information field, just to skip the additional step of gathering an email address from a guest. Whenever done with guest accounts, or even logging into an existing customers account always go back to the dashboard. This resets the session for that particular customer. If you are in a customers account, then you have to take on a session allowing you to access their info, the dashboard kills any sessions that are not related directly to you the customer service agent. If you are using the cash payment option, you will need to adjust the sort order of you order total module sp that the order totals and cash back amounts are computed correctly. Helpful Videos: https://www.youtube.com/watch?v=cwaid91cp1A&feature=youtu.be https://www.youtube.com/watch?v=dLgiD1FoTj4&feature=youtu.be Known issues: This plugin has been used in working shops for a number of years and proven to be stable. There are howver 2 issues I am aware of. 1) If a product in the cart has attributes, the update quantity field wont work properly. If a different quantity is desired, just delete it and add the correct quantity from the product listing itself. 2) I have not noticed this until testing on PHP 7.0, when using the cash payment option, the update button needs to be clicked twice. Feel free to post with comments or suggestions.
  34. 4 points
    https://apps.oscommerce.com/m2hDP&rma-returns-system-for-osc2-3-4bs Full product returns system for osCommerce. Features · No core file changes needed, just upload to your store. · One click install. · Works with PHP 7.1 and Edge · Create returns from admin, or allow customers to create their own, or both. · You choose which order statuses orders must be at for customers to return items. · You choose how many days after ordering customers can return items from an order. · Includes issuing of discount coupons direct from the returns admin page*. · Includes Paypal refunds direct from the returns admin page**. Partial refunds OK. · If you require serial numbers to be entered this can be turned on in admin. You can also make serial numbers optional or compulsory. · Return items to inventory if you desire, just tick a box on the returns admin page. · Set a default restocking fee, and inform the customer when they fill in the return request. · Terms and conditions can be shown to customers before they fill in a return request, if so they must agree to continue. They can also have the terms and conditions emailed to their email address. · One click comments when updating orders. · Unlimited number of return reasons. · Unlimited number of refund methods. · Only logged in customers can create a return request. · Search for RMAs in admin by RMA Number, customer name, or order id · Will not create duplicate RMA request numbers.
  35. 4 points

    28d, 2018

    Bonus has just gone out, and the Community has another coooollllll shopowner signed up overnight. Bonus #2 - GDPR Actions 8 more shopowners needed, and the Project can be done and final by the end of this month. Also, another Bonus GDPR module This shall be emailed out tomorrow!
  36. 4 points

    default shipping method change.

    It would be nice to allow shopowner to select which module should be selected? SQL: Use phpmyadmin or similar INSERT INTO configuration ( configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ( 'Set Default Shipping Method?', 'SHIPPING_DEFAULT_METHOD', '', 'This will make shipping selection default to the selected method.', '7', '5', 'tep_cfg_pull_down_shipping_methods(', now()); CODE: /includes/classes/shipping.php Find: return $cheapest; Add ABOVE it: if ( defined('SHIPPING_DEFAULT_METHOD') && (SHIPPING_DEFAULT_METHOD != '--none--') ) { $shipping_method = basename(SHIPPING_DEFAULT_METHOD, '.php') . '_' . basename(SHIPPING_DEFAULT_METHOD, '.php'); for ($i=0, $n=sizeof($rates); $i<$n; $i++) { if ($rates[$i]['id'] == $shipping_method) { $cheapest = $rates[$i]; } } } CODE: /admin/includes/functions/general.php Add: function tep_cfg_pull_down_shipping_methods($shipping_method, $key = '') { $name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value'); $shipping_array = array(array('id' => TEXT_NONE, 'text' => TEXT_NONE)); $ship_array = explode(';', MODULE_SHIPPING_INSTALLED); foreach($ship_array as $k => $v) { $shipping_array[] = array('id' => $v, 'text' => $v); } return tep_draw_pull_down_menu($name, $shipping_array, $k); } Note: Untested, but should work. Feel free to optimise it to something more elegant. If it works, you should be able to go to admin > configuration > shipping/packaging and select which module should be used
  37. 4 points

    28d, 2018

    Day 20 - Security Questions I'm sure you've all experienced those questions that sites ask; What was the name of your first cat? What was your mothers maiden name? etc etc They do that to increase security, as only you know the answers you gave...and no-one else should. I have made such a thing for osCommerce. It takes 1 random question from your list of questions, it then sees if the answer given by the customer matches what they originally answered. If yes, happy days. If no, error out and refuse action. Core Code Changes YES. 3 lines of code on each form you want to protect. Everything else...no core changes at all. Admin Side (New Infobox Link) Admin Side (page for shopowner to add in questions) Shop Side (link in account.php to answer security questions) - "secure your account" Shop Side (new page for answering security questions) Shop Side (example of outputted question) - this example is account_edit.php Shop Side (example of failed question) Summary An easy way to give an extra layer of security to your customers. Consisting of Admin Page + Language File Admin Box Link + Language File Shop Side Page + Hook + Language File Account Module + Language File
  38. 4 points
    This addon minifies the shops css file. If multiple files are selected, it will combine them all into one file. This can reduce the time it takes for the shop to load. Depending upon the size of the css file and how many there are, the page load speed can be reduced by several seconds. It works in any oscommerce shop. For the 2.3.4 shops (both official and Responsive versions), the installation just involves uploading files. For older shops, one change may be needed.
  39. 4 points

    PHP 7.2 each() function deprecated

    When you are upgrading OsCommerce to be compatible in +PHP7.2 versions, here is a pattern on how to update while = each() loops to foreach, which is said to be like 10 times faster, too! Case 1: Missing $value reset($array); while (list($key, ) = each($array)) { Update to: foreach(array_keys($array) as $key) { Case 2: Missing $key reset($array); while (list(, $value) = each($array)) { Update to: foreach($array as $value) { Case 3: Not missing anything reset($array); while (list($key, $value) = each($array)) { Update to: foreach($array as $key => $value) {
  40. 4 points

    Font Awesome v5

    FA have made a lot of change from v4 to v5. This includes a lot of icon name changes. The changes that we use in Core are [ from -> to ]; fa fa-cc -> far fa-credit-card fa fa-check-square-o -> far fa-check-square fa fa-clock-o -> far fa-clock fa fa-commenting -> fas fa-comment-alt fa fa-pencil-square-o -> far fa-edit fa fa-pencil -> fas fa-pencil-alt fa fa-refresh -> fas fa-sync fa fa-remove -> fas fa-times fa fa-send -> fas fa-paper-plane fa fa-sign-in -> fas fa-sign-in-alt fa fa-sign-out -> fas fa-sign-out-alt fa fa-star -> fas fa-star fa fa-star-o -> far fa-star fa fa-trash fa fa-cc-amex fa fa-cc-discover fa fa-cc-mastercard fa fa-cc-paypal fa fa-cc-stripe fa fa-cc-visa -> -> -> -> -> -> -> fas fa-trash-alt fab fa-cc-amex fab fa-cc-discover fab fa-cc-mastercard fab fa-cc-paypal fab fa-cc-stripe fab fa-cc-visa The easiest way to do this is to perform a global search/replace for each one of the above. This can be done using a tool such as beyond compare or wingrep, winmerge etc - whatever your tool of choice is. If your site is online, you could do this using grep (assuming your hosts let you). After the icon names are changed, you must perform a change in /includes/template_top.php and a change in /includes/languages/english.php There is also a Shim file that can be utilised, if you want to take a shortcut. In this case, read this page and be aware that I offer no help with Shim, so experiment yourself...and report back your findings. I suggest doing a proper upgrade in preference to using the Shim method.
  41. 4 points

    28d, 2018

    Day 11 - Password Reinforcement This HT module allows you to insert a message on pages that have a password input, which reminds the Customer that their password should be unbreakable. Core Code Changes NONE! Admin Side On the Admin Side, you have two changable entries; - password length - require special ($&^ etc) Shop Side As the Customer is typing their password, the red bullet points change to green, signifying they have that "thing" in their password. Cool! Note This system is a reinforcement message only. It still allows Customers to insert their own password if they wish.
  42. 4 points

    28d, 2018

    Day 08 - Country & State Selector This is a HT module that changes the function of the country dropdown and the state dropdown/input box. The Country is always a dropdown, and the State can sometimes be a Dropdown, or sometimes be an Input Box - bear this in mind when reading the rest of this post! Core Code Changes: NONE! Admin Side, Module We start with this image so that I can explain some of the options. Require Input Can be True of False. If "True", the State INPUT BOX must be filled in. If "False", the Placeholder changes to "Not Required" and the input does not need to be filled in. Default Country Set this to the Country Numeric ID you wish the country dropdown to default to. If a default country is inserted *and* that default country has zones attached (eg Austria, USA etc)...the State dropdown will also be perfect on page load. Allowed Countries Insert a CSV of Country Numeric IDs. Any country not in this list will not show in the country dropdown. Readonly Dropdown If you sell to only one country, set this to True. This would also require "Default Country" to be set. Shop Side: This image shows how the system looks in action, on page load. The State/Province is greyed out asking the customer to first select their country. The customer now selects their country. The only countries that show are those set up in "Allowed Countries". The customer choose (eg) USA. The State dropdown now activates and allows the Customer to select their State. WAIT. The Customer is in the UK and misclicked! They hit themselves in the balls and click the "United Kingdom" in the Country dropdown. As the UK has no Zones attached *AND* "Require Input" is False...the State system re-activates and changes to a normal Input Box! Conclusion This system allows you to remove countries from your lists without having to literally remove them in admin. This system makes things a lot easier for the customer if the country they select has zones that need to be selected.
  43. 4 points

    28d, 2018

    Day 06 - Product Terms This consists of a product_info.php Content Module. And a new Admin Page. The basis of the idea is to allow you to attach "terms" to products. These terms are more than just a few words (aka folksonomy), but could be a whole paragraph or more. On the Admin Side, you get a whole new page for adding in your Term (Name and Description): A Core Code change :( is required in admin/categories.php to allow you to attach Terms to Products: On the product_info.php page, each "term" attached shows a Button When a button is clicked, a Modal Window (aka popup) is invoked, showing the Term Description Summary: Admin, just upload, no worries: - New Page for making Terms - New Link in Localization Side box Admin, core code change: - categories.php Shop Side, just upload, no worries: - New Content Module - New Ajax script for showing the correct data in the popup window
  44. 4 points
    I think I've found a bug in the in checkout_shipping.php that will allow customers to get free shipping, even when they haven't met the required amount. I saw it happen more frequently in my shop where people get free shipping for no reason and think I have found the bug. When it happens: If you have set up your store to charge, for instant, 5,00 for shipping but give free shipping from a certain amount, lets say 20,00, and the customer places a order of 16,00. Then the customer goes to the order process, it will be charged a 5,00 shipping fee on the checkout_shipping.php page and clicks next. But if the customer will go back to change something after clicking next on checkout_shipping.php, the next time the customer gets tot the checkout_shipping page, the shop will no longer charge a shipping fee but gives free shipping, even though the order total is just 16,00 and does not met the 20,00 minimum. If you repeat the process by clicking next, after that go back to the shop and go trough the checkout process again, it will undo the free shipping.But redoing it again, will give you free shipping again. It is endless. What I have found, is that after clicking next on the checkout_shipping.php, it will store the order total at that moment. In this case product (16,00) + shipping (5,00) = order total (21,00). If you go back at the store tot change something and go back to the checkout process, it remembers the order total from before, which is 21,00 in this case, and thus the shop decides to not charge a shipping fee since the amount is more than 20,00. But at checkout_confirmation.php, it recalculates the order total without the shipping fee stored before. Thus the total is back to 16,00 again, but without the shipping fee checkout_shipping.php is responsible for. It does not work if the product cost and shipping fee does not meet the minimum amount for free shipping. Product cost of 14,00 and shipping fee of 5,00 with a minimum of 20,-- for free shipping never gives the faulty order total. The solution I have found is to change a small line of code in checkout_shipping.php. Original at line 94 if ( ($pass == true) && ($order->info['total'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) { $free_shipping = true; Changed line if ( ($pass == true) && ($order->info['subtotal'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) { $free_shipping = true; This way it will always look at the order subtotal that never has the shipping fee included instead of the total. For as far as I was able to test this, it worked every time.
  45. 4 points

    appearance of cart in

    @helenium7 If you've been on this forum for any length of time, you'd know that there is a long running issue (years, in fact) regarding the 'current' release of osCommerce. Yes, the web site says that is the latest 'official' release. However, is just a hot-fix to version 2.3.4, which is several years old. The community (lead by @burt) got together and made the Responsive version of osCommerce. As the name implies, it is responsive, meaning it will adjust how the store is displayed on a phone, a tablet, or a desktop. osC does not! With the world moving more and more to mobile devises, this is very important. In addition, the Responsive version (sometimes called the Bootstrap version, or the community version) is PHP 7 ready. Any store built on 2.3.4 WILL CRASH when your host upgrades their version of PHP. Also, the Responsive version is much more modular, meaning you can turn features on or off, and even add new features, all without changing any code. So, the advice that @raiwa and @MrPhil gave you IS helpful. Yes, the latest 'official' version is Yes, this is an issue that has been going on for several years. And yes, you do not need to follow their advice. It's your store, do with it as you wish.
  46. 4 points
    @mgutt 2.3 core base was outdated in ~2012. Latest 2.3.x version upgrades tried to adapt technical requirements and security fixes but we didnt be able to step forward... Next v2.3.6 release wont be the Holi Gral even though many community works was built in. We use BS for ages which is not a secret. It was important adaptaion of responsibility! Some of us developed the brilliant v3 alfa 5 anno but the community didnt want it so opencart was born. You can see the shared ecommerce results... We should separate template files in v2.4 and it will be better than v3 alfa 5 ever thanks to v3 backports. If someone wants v2.3BS than use it. If another wants something better than use v2.4. The mistake wont be again if we have modern core in the battle.
  47. 4 points

    Slim Checkout for BS

    I consider the actual Git Hub version final. Resume of the last updates: optional hide on checkout pages (login.php, checkout_shipping.php, checkout_payment.phpheckout_confirmation.php and checkout_success) select on which pages to hide each area by checkbox list select each group to hide (navbar, header area, boxes, footer and footer suffix define content width if side columns are hidden, allows to control if main content gets stretched or keeps withe space for side columns optional customized list of header modules to keep showing if header area is hidden. Update from previous versions: uninstall ht module, replace ht module, reinstall ht module. I'll keep it for around one week without touching. Please try and let me know any issues. Then it will be published. If I find time Ill try to go for the version to control each individual module.
  48. 4 points

    Adding a set of images to the header

    This. Absolutely this. Even us "coders" do this. We find the nearest module that does something a bit similar, copy it, and then fanny about with it until it does what we want it to do.
  49. 4 points
    Harald Ponce de Leon

    2.4 Series

    Hi All.. v2.3.4.1 has just been pushed out with the MySQLi setup detection fix and PHP 7/MySQL 5.7 compatibility updates. This is a silent release as v2.3.5 and v2.3.6 will be pushed out soon that has these fixes already incorporated. These minor fixes were a major showstopper for new installations - far greater than I had thought of. I'm still working hard on "the big picture" and achieving my goals for this year, and sometimes need a f* tonn of pings to address these "minor" code changes. I apologize for that and urge you to keep pinging me in the future when similar showstoppers arise. v2.3.4.1 does not address bootstrap/edge, that is what v2.3.6 is for.
  50. 4 points

    One-Page / Guest Checkout

    My ethos is; Make it very simple for the customer to do things. As far as a checkout goes, what can be more simple than; login > choose shipping > choose payment > review order > complete It has been proven many times that a bite-size of cake, followed by a bite-size of cake...is far better than ramming a whole cake down ones throat. What I would like to see [in CORE]...which is sort of related... On shopping_cart.php a summary (estimated) shipping price, (estimated) taxes and so on. So they see their grand total prior to starting a checkout.