Jump to content
Latest News: (loading..)

Search the Community

Showing results for tags 'admin'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News and Announcements
    • News and Announcements
    • Partner Announcements
    • Ambassadors
  • Commercial Support
    • Developer Feedback
  • osCommerce Online Merchant v2.x
    • General Support
    • Installation and Configuration
    • Upgrading from Earlier Versions (v2.x to v2.x)
    • Add-Ons
    • Tips and Tricks
    • Security
  • Development
    • osCommerce Online Merchant v2.4
    • osCommerce Online Merchant Community Bootstrap Edition
    • osCommerce Online Merchant v3.x
    • Development Proposals
  • General
    • Next Steps / Optimizations / Marketing
    • Live Shop Reviews
    • E-Commerce Laws
    • General Discussions
    • PHP / SQL / Web Design
  • oscBooks and oscTemplates's Announcements
  • Mini Template System's Announcements
  • PayPal's Announcements
  • Sage Pay's Announcements
  • Solomono - new level osCommerce templates's Announcements

Found 22 results

  1. Happy Saturday every-one. I'm running into a problem with a modified version of BS Edge. Modified in the sense of adding some extra's like payment modules, CK Editor, Information Pages, MATC. whilst testing and modifying I never saw a problem untill I - for no particular reason - tried to visit the admin/modules_content.php file. I cannot enter it any more (http500 error this page does not work), now I checked this page and any other pages that 've been modified since the clean install, and noticed some "?>" were missing on some files, but after correcting these, the problem still remains Is there a way I can trace the error to the source of it? I'm realy at the end of my efforts and about to re-install the shop (which I'm realy hesitating to do) so any help what so ever is verry welcome. Thank you all and have a great weekend! Kind regards Gerry
  2. This Addon replaces the New Product page in your store's admin with a tabbed interface that is better organized and easier to use. The rest of the Categories/Products admin is the same; only the Product page has been changed. I backported this from the osCommerce 2.3.5 Beta, then added the additional fields that the Bootstrap version uses. I did this because the old Products page has always felt poorly organized and confusing to me. If you feel the same way, give this one a try. Code is here. Screenshot:
  3. Minor Security Issue

    I've ran across a security issue that everyone should be aware of. I recently worked on two, unrelated, shops that had been hacked. One was an RC2 shop while the other was a fairly recent BS shop. Both had renamed admin directories. I was not able to find the way in the hacker used since the hacking had occurred over a month before in both cases. However, the change made by the hacker was the same in both cases. Code was added to the checkout pages to record the customer details and to write them to a .txt file in the admin/includes/local/ directory. It turns out that that directory (any directory in admin) is not protected with the normal on-page login. So without being logged in, the hacker could read the file by going to https://example.com/admin/local/hacker.txt. You can test this on your own site by visiting https://your domain/your admin/local/README The README file is a standard file included in all oscommerce versions. If you can read that file via the url, then your admin is not secure. The fix is to add a popup login using the .htaccess method. This change won't prevent the reason it happened in the first place but it will prevent the data from being used should it happen.
  4. 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>
  5. ADMIN Login Issue

    Hello all, I am new to the FORUM and a novice on OSCOMMERCE. we recently updated to OQC 2.3.3, and added an SSL certificate and since have not been able to login to the admin part of our site/store. It has locked us out for too many attempts, and does not have a forgot password function. I thought I had the password, but still would not allow entry login. I am wondering if it due to SSL change? Either way, I am wanting to learn how to login back in not knowing the password? Many thanks!
  6. Admin Comments on Order

    Hi, Quick question: Is anyone aware of a quick and simple mod suitable for 2.3.4 that will allow comments to be added to the order screen (admin/orders.php) that can only ever be seen by admin? Many Thanks
  7. Hi All I was really hoping someone could help with the problem I'm experiencing. I've tried to migrate my site from localhost to a live production server but can't seem to get the admin page to work. I've changed my configure.php files and the configure.php file for the main site seems to be working perfectly fine as I can access and run the site normally. However when I try to access the admin index.php I get the following error: Where 'live/catalog/' is the folder in which I have my site saved. I suspect that it might be something wrong with my configure.php file for the admin side but can't seem to grasp what exactly is incorrect. this is what I have currently: Thanks in advance to anyone who can help :)
  8. Select Product Image Directory

    Hi everyone, I have oscommerce 2.3.4 and I tried to install this add on: https://apps.oscommerce.com/Get&g5umb&Sfl8h in order to be able to select the folder that product images are uploaded into but after changing files (Admin/categories.php and Admin/includes/languages/english/categories.php) I can no longer load categories.php when i run this URL: admin/categories.php. I receive error HTTP ERROR 500. I will attach the code for Admin/categories.php here and would be much grateful if someone can look into it and see whats wrong. Thank you very much. Thanks kevin categories.php
  9. Hi everyone, I have installed Oscommerce 2.3.4 and when i create a new product, if the new product image be the same as previous pictures, previous pictures are being overwritten by the new picture. It seems that Oscommerce stores all pictures in a same huge picture folder. Is there any easy fix for this other than changing the name of the pictures all the time? Thank you
  10. hey everyone, I have a unique problem, at least I have searched the past (2) days and not found a solution. I have recently received a client that has a older version of osCommerce v2.2 RC2 and I have gone through the process of securing the site and making Google happy with all pages on frontend https. Problem now is that the admin section is giving me a mixed content issue, obviously the form is trying to process non-https and I can't seem to locate in the functions where to adjsut the processing. I've tried quite a few things. I have modified other frontend files inside the /catalog directory to use the function $request_type, false but to no avail, it doesn't seem to work for the login form action/process. Please help! My current code is below. <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2013 osCommerce Released under the GNU General Public License */ $login_request = true; require('includes/application_top.php'); require('includes/functions/password_funcs.php'); $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : ''); // prepare to logout an active administrator if the login page is accessed again if (tep_session_is_registered('admin')) { $action = 'logoff'; } if (tep_not_null($action)) { switch ($action) { case 'process': if (tep_session_is_registered('redirect_origin') && isset($redirect_origin['auth_user']) && !isset($HTTP_POST_VARS['username'])) { $username = tep_db_prepare_input($redirect_origin['auth_user']); $password = tep_db_prepare_input($redirect_origin['auth_pw']); } else { $username = tep_db_prepare_input($HTTP_POST_VARS['username']); $password = tep_db_prepare_input($HTTP_POST_VARS['password']); } $actionRecorder = new actionRecorderAdmin('ar_admin_login', null, $username); if ($actionRecorder->canPerform()) { $check_query = tep_db_query("select id, user_name, user_password from " . TABLE_ADMINISTRATORS . " where user_name = '" . tep_db_input($username) . "'"); if (tep_db_num_rows($check_query) == 1) { $check = tep_db_fetch_array($check_query); if (tep_validate_password($password, $check['user_password'])) { // migrate old hashed password to new phpass password if (tep_password_type($check['user_password']) != 'phpass') { tep_db_query("update " . TABLE_ADMINISTRATORS . " set user_password = '" . tep_encrypt_password($password) . "' where id = '" . (int)$check['id'] . "'"); } tep_session_register('admin'); $admin = array('id' => $check['id'], 'username' => $check['user_name']); $actionRecorder->_user_id = $admin['id']; $actionRecorder->record(); if (tep_session_is_registered('redirect_origin')) { $page = $redirect_origin['page']; $get_string = ''; if (function_exists('http_build_query')) { $get_string = http_build_query($redirect_origin['get']); } tep_session_unregister('redirect_origin'); tep_redirect(tep_href_link($page, $get_string)); } else { tep_redirect(tep_href_link(FILENAME_DEFAULT)); } } } if (isset($HTTP_POST_VARS['username'])) { $messageStack->add(ERROR_INVALID_ADMINISTRATOR, 'error'); } } else { $messageStack->add(sprintf(ERROR_ACTION_RECORDER, (defined('MODULE_ACTION_RECORDER_ADMIN_LOGIN_MINUTES') ? (int)MODULE_ACTION_RECORDER_ADMIN_LOGIN_MINUTES : 5))); } if (isset($HTTP_POST_VARS['username'])) { $actionRecorder->record(false); } break; case 'logoff': tep_session_unregister('admin'); if (isset($HTTP_SERVER_VARS['PHP_AUTH_USER']) && !empty($HTTP_SERVER_VARS['PHP_AUTH_USER']) && isset($HTTP_SERVER_VARS['PHP_AUTH_PW']) && !empty($HTTP_SERVER_VARS['PHP_AUTH_PW'])) { tep_session_register('auth_ignore'); $auth_ignore = true; } tep_redirect(tep_href_link(FILENAME_DEFAULT)); break; case 'create': $check_query = tep_db_query("select id from " . TABLE_ADMINISTRATORS . " limit 1"); if (tep_db_num_rows($check_query) == 0) { $username = tep_db_prepare_input($HTTP_POST_VARS['username']); $password = tep_db_prepare_input($HTTP_POST_VARS['password']); if ( !empty($username) ) { tep_db_query("insert into " . TABLE_ADMINISTRATORS . " (user_name, user_password) values ('" . tep_db_input($username) . "', '" . tep_db_input(tep_encrypt_password($password)) . "')"); } } tep_redirect(tep_href_link(FILENAME_LOGIN)); break; } } $languages = tep_get_languages(); $languages_array = array(); $languages_selected = DEFAULT_LANGUAGE; for ($i = 0, $n = sizeof($languages); $i < $n; $i++) { $languages_array[] = array('id' => $languages[$i]['code'], 'text' => $languages[$i]['name']); if ($languages[$i]['directory'] == $language) { $languages_selected = $languages[$i]['code']; } } $admins_check_query = tep_db_query("select id from " . TABLE_ADMINISTRATORS . " limit 1"); if (tep_db_num_rows($admins_check_query) < 1) { $messageStack->add(TEXT_CREATE_FIRST_ADMINISTRATOR, 'warning'); } require(DIR_WS_INCLUDES . 'template_top.php'); ?> <table border="0" width="100%" cellspacing="2" cellpadding="2"> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="0" height="40"> <tr> <td class="pageHeading"><?php echo HEADING_TITLE; ?></td> <?php if (sizeof($languages_array) > 1) { ?> <td class="pageHeading" align="right"><?php echo tep_draw_form('adminlanguage', FILENAME_DEFAULT, '', 'get') . tep_draw_pull_down_menu('language', $languages_array, $languages_selected, 'onchange="this.form.submit();"') . tep_hide_session_id() . '</form>'; ?></td> <?php } ?> </tr> </table></td> </tr> <tr> <td> <?php $heading = array(); $contents = array(); if (tep_db_num_rows($admins_check_query) > 0) { $heading[] = array('text' => '<strong>' . HEADING_TITLE . '</strong>'); $contents = array('form' => tep_draw_form('login', FILENAME_LOGIN, 'action=process')); $contents[] = array('text' => TEXT_USERNAME . '<br />' . tep_draw_input_field('username')); $contents[] = array('text' => '<br />' . TEXT_PASSWORD . '<br />' . tep_draw_password_field('password')); $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(BUTTON_LOGIN, 'key')); } else { $heading[] = array('text' => '<strong>' . HEADING_TITLE . '</strong>'); $contents = array('form' => tep_draw_form('login', FILENAME_LOGIN, 'action=create')); $contents[] = array('text' => TEXT_CREATE_FIRST_ADMINISTRATOR); $contents[] = array('text' => '<br />' . TEXT_USERNAME . '<br />' . tep_draw_input_field('username')); $contents[] = array('text' => '<br />' . TEXT_PASSWORD . '<br />' . tep_draw_password_field('password')); $contents[] = array('align' => 'center', 'text' => '<br />' . tep_draw_button(BUTTON_CREATE_ADMINISTRATOR, 'key')); } $box = new box; echo $box->infoBox($heading, $contents); ?> </td> </tr> </table> <?php require(DIR_WS_INCLUDES . 'template_bottom.php'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  11. This uses the hooks system and tabbed display of admin / orders implemented by the Paypal App. It adds a tab to admin / orders which lists all orders from the customer of the current order. The current order is highlighted. Clicking on one of the other orders will load it instead. Works for all orders, not just those paid by Paypal. COMPATIBILITY Compatible with the tabbed admin orders page of the Paypal App in any version of osCommerce (2.2RC2, 2.3.x). FILENAMES DEPRECATED - if your admin / orders page is not called orders.php you'll have to change the hard-coded name in the module. Not compatible with BS EDGE Hooks of 2016-10-03 (which don't cover admin). Uses tradition language defines, not Paypal App-style. INSTALLATION Just copy the 3 files to your store. No code changes and no admin install - it just works. DOWNLOAD from the addons area http://addons.oscommerce.com/info/9511 GITHUB also available in a branch on its own in a fork of gburton/Responsive-osCommerce at: https://github.com/BrockleyJohn/Responsive-osCommerce/tree/addon_customer_orders_tab
  12. hello looking at the start for a responsive admin from gl walker. i liked the looks and feel of this responsive design for my webshop i also needed a multi store admin. the result is multi store responsive shop and admin with more than 120 addons along with gl walkers design i also mixed in some elements from TSIMI and Gergely bs admin Addons are to name a few : - seperate prices per customer groups ( plus all addons ) SPPC - html emails for new customer, orders etc - multi store but can be used as single shop of cource - content modules for index, product info, contact us etc - option type for products - SEO urls - Headertags - JAVA ans CSS can loaded from own site or from a CDJNS - add new order - Supertracker etc i am now at a point that i am a little developer blind. so a fresh pair of eyes should be helpful All code is from 2.3.4 and 2.3.4. gold. All addons are based on 2.3.4 the files can be found at https://github.com/nieuw1409/admin_responsive thanks to everybody who made the original addons without them i never could put this together greeting eric
  13. Hello, wanting to install the module "Paypal App" link http://addons.oscommerce.com/info/9184 when copying the file into the shop, I discovered that there's 6 folders and 1 file named : "admin". These are the directories: : d1: paypal app-4_039/catalog/admin/ d2: paypal app-4_039/catalog/includes/hooks/admin/ d3: paypal app-4_039/catalog/includes/apps/paypal/admin/ d4: paypal app-4_039/catalog/includes/apps/paypal/hooks/admin/ d5: paypal app-4_039/catalog/includes/apps/paypal/languages​/English/admin/ d6: paypal app-4_039/catalog/includes/apps/paypal/languages​​/English/hooks/admin/ and this file: f1: paypal app-4_039/catalog/includes/apps/paypal/languages​​/English/admin.php - For the first file d1, no problem, I'll just copy its contents into the admin folder of my shop (I've already renamed). - For folders until d6 d2 and f1 file: That's my question. It must rename or not? (For security measures). Thank you in advance for your help.
  14. This thread is for answering questions about the Quill.js product description addon, at http://addons.oscommerce.com/info/9319. Please note that this is for the addon only, I am not a quill developer, so I may not be able to answer questions about the inner workings of Quill.
  15. I had a client that wanted to be able to search the admin categories / products page using multiple keywords in the search box. As an example, they wanted to be able to search for “ces wing” and have that return products including “Cessna 170 Left Wing Tip” just as easily as “Wing Elevator for Cessna 170.” It’s essentially a multiple wildcard array for keyword bits as opposed to a single wildcard for the entire search. It’s also very easy to install! Just modify one file and a couple of lines at that: http://addons.oscommerce.com/info/9310
  16. I could not find any posts on this using search so I will create a new post. admin -> modules -> boxes Currently the way in which the order one places the boxes on the store can be troublesome. Although sort order is effective if you understand how to use it right, you are penalized by having duplicate items with the same number. 1. add a "sort by" function to the headings. If one clicks on Modules in the heading it will sort the list of box names according to A-Z and then with a second click Z-A. If one clicks on the sort order it will sort the numbers ascending from 1..N and second click descending from N..1. In this way at least one can check if they have 2 boxes with the same number by clicking on "Sort Order" 2. Create a graphical layout and allow drag dropping components from one area to the other instead of having to deal with numbers. Allow any placement with "jump to guide/grid" 2.a. An alternative might be to have columns (left, right) and a add item dialogue button that allows you to add the box modules under that side. The order in which the box module name appears in the list is how it will appear in the store. With jQuery this might be made easier as drag drop should be able to allow moving then to change their order. I believe word press admin has a functional example of this technology. -Blue Penguin
  17. Some reason we should go forward. @@GLWalker and @@burt started BS community adaptations, but would be great some structure work. GLWalker started a github repo but need some update converge to the latest BS and add to common platform. By my opinion the admin site should be table based with BS. Starting point could be http://wenzhixin.net.cn/p/bootstrap-table/docs/examples.html Any thoughts?
  18. Hi, My Oscommerce admin login page not show any thing, first time when i login it asking me password then i put the password it show me the admin page with userid or password but it redirect to home page.... after that i will open login page its show blank page.... please help me for that
  19. How-to Extra Fields

    Question for anyone: What's a good add-on for adding / or directions for adding an extra field (ie: text field) that also works with EP and OSC v2.3.4? Thanks.
  20. Hi there! I have OSC installed, and everything seemed to work just well. I have two languages installed; English (from installation) and Swedish (downloaded). Since all my costumers live in Sweden I decided to remove the English language. Since then, no products can be found on the main catalog page. If I try to add a new product or category in the admin section and click Save, no product or category is added. I get no error message. I have checked phpmyadmin, and all the products and categories are there. I have made no change to the database, all I did was removing the English language. I didn't remove any files from the server, just the post in the admin section. I have seen this problem before in the forums, but without any answer. Can anyone please help? I really need my shop up and running! Thanks in advance, Tobias Henricsson
  21. I'm running v2.3.3. I downloaded this contribution: http://addons.oscommerce.com/info/8727 I've followed all of the instructions properly. Okay, so here is where it all falls apart. I'm browsing the admin section, and decide to visit the "Sliders" admin area under "Configuration"... When I click on "Sliders", I am logged out, and a new session ID is generated (login.php?osCAdminID=<new session id here>) When I log back in, I land on the "Sliders" admin panel (with same session ID shown on login page). If I then try to upload a slider, I'm logged out, and a new session ID is generated (shown on the login page). So there you have it - when I try to navigate to the slider settings page, I'm logged out, and when I try to upload an image, I'm logged out. I have no other issues with this happening anywhere else on the store or any other session issues. My store is running perfectly fine. I installed this addon, and this issue only arises when accessing or using the particular admin panel for the addon. Any help would be appreciated! Cordially, Robert Whitis
  22. Dear All I want to have an module wherein the admin can see Shopping Basket of current users prior to check out Is there are ready made module available? Awaiting your response on the same Thanks