Jump to content

Demitry

Members
  • Content count

    352
  • Joined

  • Last visited

  • Days Won

    8

Reputation Activity

  1. Like
    Demitry reacted to Jack_mcs in Database Optimizer   
    1) There is a version for "Before 2.3". I don't recall I updated it for this version. Probably not. With Phoenix becoming more and more popular and with it changing often, managing multiple versions is just not possible any longer, at least for me. If you need an addon to work for older versions, you can 
    Use an older version. This is not a good idea since you will lose fixes and improvements. Convert the code to work with an older version. Pay someone to do the conversion. 2) This got through because of lack of time for testing older versions. To fix it, you can replace 
    <td align="center"> <?php echo tep_draw_bootstrap_button(IMAGE_UPDATE, 'fas fa-save', null, 'primary', null, 'btn-success btn-block btn-lg'); ?> </td> with
    <td align="center"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE);?></td> 3) I'm not able to reproduce this but in searching for it, it seems to be a bug in php 7.1 and, maybe 7.2. I'm running 7.3 so it seems they fixed that problem. Applying the change below should prevent it but since I can't see the warning, I can't be sure. Change this line
    $dateOrder = date("Y-m-d", time() - ($config['orphan_orders'] * 86400)); to
    $dateOrder = date("Y-m-d", time() - (int)($config['orphan_orders'] * 86400));  
  2. Thanks
    Demitry got a reaction from domiosc in problem with .mx files generated as copies of all .php files   
    @domiosc
    So, I Googled this and did find a couple of articles on a malware injected into a site using .ico files. Here are the articles:
    https://blog.quttera.com/post/suspicious-icon-files-on-your-website/
    https://www.theregister.com/2015/03/25/blank/
      If you do regular back-ups, I would go back to the back-up you did just prior to this problem occurring and compare all folders using a comparison tool. This may not find the issue, but it is a good place to start.  
  3. Thanks
    Demitry got a reaction from domiosc in problem with .mx files generated as copies of all .php files   
    The one thing I noticed, is that everything you posted is based on HTTP/1.0 -- this is an old protocol. Most everything today has moved to HTTP/2.0. You need to contact your hosting company to find out if their servers are on HTTP/2.0. If they are not, you need to switch to a different hosting company.

    HTTP\2.0 is faster and more secure. After doing this, you need to do a site-wide search for HTTP\1 and/or for $_SERVER["SERVER_PROTOCOL"] and manually change related instance of that HTTP\1.0 or HTTP\1.1 to HTTP\2.0. When I had to do this, it was about 25 files.

    Things like this are always a problem when you are upgrading from a much older version to a new one. I believe it is always better to start with the latest version of the CMS and customize it from scratch. Don't keep trying to upgrade from older versions of osC, this software is not designed for that and it will cause you a lot of headaches and time wasted.

    As for the INF field/attribute, I have no idea what that is because it looks like custom code and after looking in advanced_search.php and advanced_search_results.php, I don't see any part of this SQL query in those files. If you are migrating from osC MS2.2 to Zombie Phoenix, search your osC MS2.2 database for this field.


     
     
  4. Like
    Demitry reacted to Jack_mcs in Database Optimizer   
    A new version has been uploaded with these changes:
    Changed call to defined location in database_optimizer.php. Found by @raiwa. Fixed some compatibility issues with php 7.3. Added a version for Phoenix. Removed the calls to load the filename and database files in the After 2.3 version. Replaced mysql_error with mysqli_error for php 7 compatibility. Found by @Demitry. Updated the included Version Checker file that works with the new apps section.  
     
  5. Like
    Demitry reacted to ecartz in problem with .mx files generated as copies of all .php files   
    Perhaps to lull you into a false sense of security.  Or because they didn't need it.  Corrupt the 2.2 site directly.  And use those permissions to try to corrupt the Edge site.  This works if both subdomains use the same user behind the scenes.  So corrupting the 2.2 site allows them to make changes to the Edge site.  Or almost make changes.  Perhaps they were unable to complete the hack.  Perhaps adding the .mx files was only the first step.  If they had completed the hack, you might never have known because they would have cleaned up after themselves. 
  6. Thanks
    Demitry reacted to ecartz in problem with .mx files generated as copies of all .php files   
    You could reduce (but not eliminate) the danger by removing the r from rm -rf
    find change_to_your_own_directory/ -type f -name '*.mx' -exec rm -f {} \; The r stands for recursive and is what allows rm to delete directories.  Without it, rm will only delete files. Better might be to do something like
    find change_to_your_own_directory/ -type f -name '*.mx' -print find change_to_your_own_directory/ -type f -name '*.mx' -delete Where you check the files printed by the first line before running the second line. 
    Two possibilities that come to mind: 
    1.  This is caused by some IDE.  E.g. Dreamweaver MX.
    2.  This is a hack attempt of some sort. 
    Similar problem reported at https://stackoverflow.com/questions/61875526/mx-files-found-in-wordpress-core-files-with-the-same-core-code -- perhaps that will get a relevant answer. 
  7. Thanks
    Demitry got a reaction from kgtee in checkout_success.php form and related modules   
    Ugh! I got it. I know exactly what this issue is. The language file is too deep in my laptop directory and was excluded because of this when I zipped the package. I will upload it now as an update. Thank you for letting me know. The only way for me to know this was to download it and unzip it and now I see that this language file is not in there.
    Here it is posted here, if you want to just copy and paste it into your own.
    <?php /* $Id$ Customer Feedback at Checkout Version 1.0 for BS Mod by Demitry osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2020 osCommerce Released under the GNU General Public License */ define('MODULE_CONTENT_CHECKOUT_SUCCESS_CUSTOMER_FEEDBACK_TITLE', 'Customer Feedback at Checkout'); define('MODULE_CONTENT_CHECKOUT_SUCCESS_CUSTOMER_FEEDBACK_DESCRIPTION', 'Show Customer Feedback Form on the checkout success page.'); define('MODULE_CONTENT_CHECKOUT_SUCCESS_CUSTOMER_FEEDBACK_HEADING', 'And Now, We Need Your Help!'); define('MODULE_CONTENT_CHECKOUT_SUCCESS_CUSTOMER_FEEDBACK_TEXT_REQUEST', 'What "almost" kept you from completing your purchse today?'); // must be the same text in header_tags module language file define('MODULE_CONTENT_CHECKOUT_SUCCESS_CUSTOMER_FEEDBACK_TEXT_MSG_SENT', 'Your message was sent. We truly appreciate you and your business.<br /><br /> Please make any <strong>available selections</strong> on this page and click the Continue button to save your changes.'); ?>  
     
     
  8. Like
    Demitry got a reaction from kgtee in checkout_success.php form and related modules   
    @kgtee @ecartz
    KG, Matt,
    Thank you both for your help and advice. I had some challenges with this addon, but finally got it working. It is now available:
    Customer Feedback at Checkout

     
    For anyone else reading this thread, this is NOT a support thread for this addon.
     
     
     
  9. Like
    Demitry reacted to kgtee in checkout_success.php form and related modules   
    Well done! @Demitry Thank you for a very useful add-on. Although there are some issues on missing language definitions, I have managed to sort them out. Thanks again.
     
    Edit comment: It would be nice to have a pop up thank you message upon submitting the feedback. Would you add this extra in the future update? 😁
  10. Like
    Demitry got a reaction from kgtee in checkout_success.php form and related modules   
    @kgtee @ecartz
    KG, Matt,
    Thank you both for your help and advice. I had some challenges with this addon, but finally got it working. It is now available:
    Customer Feedback at Checkout

     
    For anyone else reading this thread, this is NOT a support thread for this addon.
     
     
     
  11. Like
    Demitry reacted to ecartz in checkout_success.php form and related modules   
    The point of the way that the wishlist module does things is that both modules require the same parameters.  You just want a different behavior depending on which button is clicked. 
    Add it as a footer script.  Either with a separate header tag module or simply by adding the appropriate block directly.  An example of adding modal HTML as a footer script directly:  https://github.com/gburton/CE-Phoenix/blob/65ba42f1d45be6b2e34b5af549812057dc4bb102/includes/modules/content/product_info/templates/tpl_cm_pi_gallery.php#L80
  12. Like
    Demitry got a reaction from kgtee in checkout_success.php form and related modules   
    I get the concept, but as far as I know an email has to be structured as a form and if I included it as a module in the checkout_success block, then it will become nested inside of that page's order form.
    What I can do is add the module as a request for the customers feed back and when they click on the link (which would be a feedback question), that would open a modal window with the email form inside of it. The modal code would then have to be added to that checkout_success.php page after the main order form.
    Or, I could add it as an on-page form directly on that checkout_success.php page after the main order form. Either way, I would have to alter a core file, which is something I was trying to avoid.
     
     
  13. Like
    Demitry reacted to kgtee in checkout_success.php form and related modules   
    Forms can have their own names and values. You may refer to this discussion:
    https://stackoverflow.com/questions/547821/two-submit-buttons-in-one-form
  14. Like
    Demitry got a reaction from valquiria23 in checkout_success.php form and related modules   
    Hi,

    I’m finishing up a module for the checkout success page. It’s a short email form designed to get customer feedback on their purchase experience right at the final step in the checkout process. I could store their feedback in the database, but this is bad because it will quickly bloat the database.

    There are two issues that I am facing with this modification.

    First: While writing this module, I realized that this checkout_succes page contains all of the modules inside a form. I’m a bit confused about this form because It is designed to update any customer changed data inside of it (such as product notifications and/or PWA keep account), but the button included inside this form is the Continue button, which redirects the user to the index.php page.

    So, if a customer makes changes on this form and does not click the Continue button, but instead closes the browser tab, then all of their changes are not saved to the database, right?

    The point is, many other osC pages apply the Continue button to load the index.php page. Having been on the site, a customer quickly becomes aware of this and may opt to not click that button on the checkout_success page because they are finished shopping and do not want to go to the home page. Additionally, they are likely to believe that their selections on that page are automatically saved upon any changes they make. Why? ..well, because there is no button to save the changes.

    Therefore, shouldn’t that Continue button be renamed to Update Changes or Save Changes? And, there should be a message displayed on the index.php page post redirection, to let the customer know that their changes were saved.


     
    Second: I am now faced with a challenge where (in order to avoid nested forms), I must add my module. I would need to either add it below this form in a separate module block or include it as a button/link to a modular popup. Any ideas on how to better structure this, where I can include the module with the other checkout_success modules and be able to use the related sort order feature to position it where I want?


     
     
  15. Like
    Demitry reacted to Jack_mcs in which payment module do you use in your shop ?   
    The fields are there but I don't think the payment modules use them. At least, I know the Paypal and Authorize.net modules don't.
     
    My version, which is not the standard one, has an option to split the cc number. It has been a while since I've looked at the original but I thought that was in all of them. When used, the code splits the cc number and stores part in the database and sends the other part in an email. That way, there is no way for hackers to get the whole number should they get access to your database.  I'll upload it as an addon when I get the time. Maybe it will be useful to someone.
  16. Like
    Demitry reacted to domiosc in which payment module do you use in your shop ?   
    The most used is Post payment "Contra reembolso" cod.php, the cost apply to customer is around 2-3%  depending on carrier.
    The problem for this option is if the customer rejects the order you lose the cost of shipping plus the commission.
    The second is credit card offline processing , cc.php but not is in phoenix and now not have this payment option.
    In old version you can combine with encrypted numbers:
    https://apps.oscommerce.com/6k8vd&credit-card-number-encryption
    https://apps.oscommerce.com/PO2Xr&gpg-credit-card-encryption-0-94-english
    https://apps.oscommerce.com/9nDgB&encrypted-credit-card-with-cvv2
    And use a cleaner numbers https://apps.oscommerce.com/czuzW&credit-card-numbers-cleaner
    for clear after use.
    This method we use because the store not have ssl and not have requirements for direct bank process,
    so we have the option for payment by telephone, the risk is always ours, in 15 years, 5 attempts only 1 lost.
    I know this method is insecure both for the client and for us, but is required for now.
    The cost for offline processing is only 0,30% not apply to customer.
    And the redsys credit card neither is ported to phoenix
    The third is bank transfer at 0%
    And the last collect in store at 0%
    We never use paypal because have high commissions and much customers use buyer protection for dispute and paypal trust the customer before the store,
    but really much people only want pay with paypal by this protection.
  17. Like
    Demitry got a reaction from domiosc in which payment module do you use in your shop ?   
    hi Matt,
    I think that MS2.2 payment module stored CC numbers in the database, but not any CVV or CVC2. PCI compliance prohibits storing these numbers but not the CC numbers, otherwise sites like Amazon and eBay (and many others) would require you to enter your CC number each time you make a purchase. 
    So, as I understand it, I have to select a merchant account first and then apply a module for that account from the payment modules list to be able to process cards? I don't think this was the case with MS2.2 ..What if I just want to use a CC module to test it and different features related to it without selecting a merchant account?
    What I am saying is that the payment gateway was separate from the CC module and you could previously install that module and manage it without actually processing payments via a gateway. Is this no longer the case?
     
  18. Thanks
    Demitry got a reaction from Fredi in Shipping in cart without addon?   
    I realize this is an old thread, however,.. while redoing the Shipping Cost Estimator addon for BS Edge, I came across the same error message. See below:
    [08-Jun-2018 20:41:53 America/New_York] PHP Warning: Creating default object from empty value in /home/ ... /public_html/dev2/ship_estimator.php on line 90 I fixed it via this - in catalog/ship_estimator.php
    Find the following code (around line 90 to 92):
    $country_info = tep_get_countries($shipcountry, true); $order->delivery = array('postcode' => $shippostcode, 'country' => array('id' => $shipcountry, 'title' => $country_info['countries_name'], 'iso_code_2' => $country_info['countries_iso_code_2'], 'iso_code_3' => $country_info['countries_iso_code_3']), 'country_id' => $shipcountry, 'format_id' => tep_get_address_format_id($shipcountry)); Add just above it:
    require_once('includes/classes/order.php'); $order = new order; I tested it with different scenarios, both logged in and not, no errors at all.
    I hope this helps anyone who may stumble upon this thread in search for a solution.
    Demitry
     
     
  19. Like
    Demitry reacted to Jack_mcs in Blacklist   
    A new version has been uploaded with these changes:
    Changed the code to work with Phoenix. Changed the code to install into Frozen without any code changes required. Replaced the GUI in admin. Provided by member @Demitry. Removed code for pre-Frozen versions. My thanks to Demitry for the rewritten gui in admin.
  20. Like
    Demitry reacted to ecartz in which payment module do you use in your shop ?   
    But they have to be stored separately, in an encrypted table, possibly in a separate database.  For example, at Amazon.com they are stored in what are called the credit card motels.  The CC motels are not on the internet.  To access them, Amazon.com has special servers that communicate with the motels via serial ports (actual physical cables).  And while those servers are also networked, they are deep behind the Amazon firewalls. 
    The osCommerce CC module didn't do any of that.  It would be possible to do that, but that's not the right module.  And I don't know that anyone is going to write such a module, as the requirements are stringent and the liability is high. 
    And it's not actually required to store the CC number in order to access the credit card for repeat purchases.  It is also possible to store just a reference to the credit card.  Then Visa or MC or whatever can bill the right account.  They just need to track which of these identifiers are associated with which account.  That's strictly safer, as the credit card info only needs to be given once and is never stored at all (except possibly for the last four digits, which are often used for identification).  It's even possible that Amazon.com does it that way now.  I don't know what has happened there since 2008. 
    Meanwhile, any payment processor is now responsible for seeing that merchants are PCI compliant.  So rather than have you take the credit card details and then communicate the information with them manually, they are going to want to see a whole system that processes the information in an automated fashion.  Usually they do this by giving you a payment gateway to use and asking you to integrate with it either by passing the credit card information immediately or by switching the customer to them to collect the credit card details. 
    The days of taking the credit card information and then typing it into the machine or phoning them in for authorization should be over.  Payment processors should keep you from doing that now, partially by requiring a CSC/CVV, which as you note, should never be stored. 
    Well, go ahead.  But you still need to get someone to answer the authorization requests, possibly with a test server.  I used to have several accounts for that, e.g. on PayPal's sandbox and Authorize.net's test servers.  It may be possible for you to sign up for them, although it's my understanding that the requirements have been getting more and more stringent.  And that would then limit you to payment processors who support that particular gateway.  For example, PayPal is the only processor that uses the PayPal gateway for authorizations.  Authorize.net covers more processors, but not every processor (for example, I don't believe that you can use Authorize.net with PayPal as the processor). 
  21. Like
    Demitry got a reaction from cigarsforless in Multi_Vendor_Shipping new thread   
    @ralgiere@phi148@kymation
    Ray, Bill, Jim,
    I have done a lot of work to this module to get it fixed, improved, and adapted to BS Edge as well as PHP7.1, however, almost three weeks back my laptop hard-drive died. I just got my new laptop a few days ago and have been working on getting everything back to what I had. This means that the BS Edge release of this addon will take a bit more time. Luckily I had most of my stuff backed up, ...but not everything. Though the most updated files for this addon are on my test server and I will be able to repackage them along with screenshots and much more.
    The problem I ran into that I could not resolve, before my laptop hard-drive crashed, was that upon proceeding to the checkout_payment.php page, the system would end the session and log me out of my account landing me on the login.php page. I had not resolved this problem and will need to before completing the new release. Any help would be greatly appreciated.
    And Bill, Thank you for your help on this module, as well as for saying that this MVS addon should be a standard part of every osCommerce release. I wish more people would make an issue of this, perhaps eventually it will not fall on deaf ears. Thumbs up to you for that!
    Demitry
     
  22. Like
    Demitry reacted to Kurre in Horizontal Categories Menu BS   
    Yeah.. @Demitry I did not install the XS modul either as @puggybelle I didn't know I should. Now it works like it should, except now the categories button in mobile view is floating over my fixed top navbar.
    Thanks for all help!
  23. Like
    Demitry reacted to puggybelle in Horizontal Categories Menu BS   
    Good Morning, @Demitry
    I am so glad I thought to revisit this thread.
    I never did install the XS module for this contribution.  The Categories button has always displayed on cellphones, despite never having installed the XS folder.
    And when clicked, the Categories button always displayed the parent categories with arrows to indicate there are deeper categories within, so...I just assumed everything was okay.  I am not a cellphone person.  I hate cellphones, so...I thought what I was seeing was sufficient and that was the end.
    Wrong.
    If I clicked on an arrow next to a category (indicating there are sub-categories) - nothing would load on a cellphone.  Couldn't see the subcats at all.  It's been like that for a year and I had no idea until today.
    So, I installed the XS folder and...what a difference, and it's a huge difference.  Everything is appearing beautifully, complete with a back button to go back to the parent category.  God, I wish I had realized how this works a long time ago. 
    The instructions were pretty vague and just said, you can install one or the other or both.  And that's about it.  So, I installed the BS folder only.  I didn't understand the significance of the XS folder at all. 
    Big mistake in a world full buyers using cellphones to shop.  Glad you pointed me in the right direction - Thanks, Demitry!
    - Andrea
     
  24. Like
    Demitry got a reaction from valquiria23 in Horizontal Categories Menu BS   
    If you have this addon installed AND will use the Navigation Bar AND you want the Horizontal Menu to display the links centered, here are the changes to make.
    I put this together, but have not tested it. Therefore, I need someone to actually apply these 3 changes and let me know if this works.
    I searched through the last version of osC Flatline (Frozen) BootStrap CSS file to find all instances of .navbar-bar. I then combined them and changed all these .navbar-bar classes to .navbar-bar-h-menu which is going to be the new CSS class for the Horizontal Menu with centered links. That osC Flatline version is based on BootStrap 4, however, this should not affect anything if you have BS3 because this is only for the Horizontal Menu.
    First, back up your site files,.. as always! So that you could easily reverse these changes, if needed.
    Then, add the following CSS code to the end of your user.css file:
    /* BOF: Horizontal Menu Links Centered */ .navbar-nav-h-menu { margin: 7.5px -15px; } .navbar-nav-h-menu > li > a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } .navbar-nav-h-menu > li > .dropdown-menu { margin-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; } .navbar-fixed-bottom .navbar-nav-h-menu > li > .dropdown-menu { margin-bottom: 0; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .navbar-default .navbar-nav-h-menu > li > a { color: #777; } .navbar-default .navbar-nav-h-menu > li > a:hover, .navbar-default .navbar-nav-h-menu > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav-h-menu > .active > a, .navbar-default .navbar-nav-h-menu > .active > a:hover, .navbar-default .navbar-nav-h-menu > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav-h-menu > .disabled > a, .navbar-default .navbar-nav-h-menu > .disabled > a:hover, .navbar-default .navbar-nav-h-menu > .disabled > a:focus { color: #ccc; background-color: transparent; } .navbar-default .navbar-nav-h-menu > .open > a, .navbar-default .navbar-nav-h-menu > .open > a:hover, .navbar-default .navbar-nav-h-menu > .open > a:focus { color: #555; background-color: #e7e7e7; } .navbar-inverse .navbar-nav-h-menu > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav-h-menu > li > a:hover, .navbar-inverse .navbar-nav-h-menu > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav-h-menu > .active > a, .navbar-inverse .navbar-nav-h-menu > .active > a:hover, .navbar-inverse .navbar-nav-h-menu > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav-h-menu > .disabled > a, .navbar-inverse .navbar-nav-h-menu > .disabled > a:hover, .navbar-inverse .navbar-nav-h-menu > .disabled > a:focus { color: #444; background-color: transparent; } .navbar-inverse .navbar-nav-h-menu > .open > a, .navbar-inverse .navbar-nav-h-menu > .open > a:hover, .navbar-inverse .navbar-nav-h-menu > .open > a:focus { color: #fff; background-color: #080808; } /* this will center the menu links */ .navbar-nav-h-menu { width:100%; text-align:center; } .navbar-nav-h-menu > li { float:none; display:inline-block; } @media (max-width: 767px) { .navbar-nav-h-menu .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-nav-h-menu .open .dropdown-menu > li > a, .navbar-nav-h-menu .open .dropdown-menu .dropdown-header { padding: 5px 15px 5px 25px; } .navbar-nav-h-menu .open .dropdown-menu > li > a { line-height: 20px; } .navbar-nav-h-menu .open .dropdown-menu > li > a:hover, .navbar-nav-h-menu .open .dropdown-menu > li > a:focus { background-image: none; } .navbar-default .navbar-nav-h-menu .open .dropdown-menu > li > a { color: #777; } .navbar-default .navbar-nav-h-menu .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav-h-menu .open .dropdown-menu > li > a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav-h-menu .open .dropdown-menu > .active > a, .navbar-default .navbar-nav-h-menu .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav-h-menu .open .dropdown-menu > .active > a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav-h-menu .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav-h-menu .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav-h-menu .open .dropdown-menu > .disabled > a:focus { color: #ccc; background-color: transparent; } .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > .dropdown-header { border-color: #080808; } .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu .divider { background-color: #080808; } .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > li > a { color: #9d9d9d; } .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > li > a:focus { color: #fff; background-color: transparent; } .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > .active > a:focus { color: #fff; background-color: #080808; } .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav-h-menu .open .dropdown-menu > .disabled > a:focus { color: #444; background-color: transparent; } } @media (min-width: 768px) { .navbar-nav-h-menu { float: left; margin: 0; } .navbar-nav-h-menu > li { float: left; } .navbar-nav-h-menu > li > a { padding-top: 15px; padding-bottom: 15px; } } /* EOF: Horizontal Menu Links Centered */  
    /includes/modules/content/header/cm_header_catmenu.php
    Find this line:
    if (empty($class)) $class = 'nav navbar-nav'; Change it to this:
    if (empty($class)) $class = 'nav navbar-nav-h-menu';  
    /includes/modules/content/header/templates/catmenu.php
    Find this line:
    echo '<ul class="nav navbar-nav"> Change it to this:
    echo '<ul class="nav navbar-nav-h-menu">  
    My module & class files are all modified for this addon, so you basically want to find any instance of navbar-nav class in the files for this addon and change them to navbar-nav-h-menu …and be sure to leave out the leading period (.) as those are mainly used in the CSS file.
    These changes apply to all the same attributes that the original navbar-nav class has, but they are separate from, and do not affect the Navigation Bar. Therefore, if you need to make formatting changes only to your Horizontal Menu, you should now be able to do that from this CSS block of code in the user.css file.
    This block of CSS code is more than required for the Horizontal Menu, however, this is as good as it gets for a quick solution.
    Let me know if this solution works for you.
     
     
  25. Like
    Demitry got a reaction from valquiria23 in Horizontal Categories Menu BS   
    Ah,.. yeah, I do remember you mentioned that this change affects the top Navigation Bar. And hence, why the need to change the name of the classes.
    However, to do that (if using the Navigation Bar as well), you would need to copy and paste the entire block for .navbar-nav from the BootStrap CSS file into the user.css file.
    Then rename all of these classes (in the user.css file) to .navbar-nav-h-menu and then add the following code to the bottom of the user.css file (after the newly added .navbar-nav-h-menu classes).
    /* this will center the menu links */ .navbar-nav-h-menu { width:100%; text-align:center; } .navbar-nav-h-menu > li { float:none; display:inline-block; } Then go into the horizontal menu file and change all the navbar-nav classes to navbar-nav-h-menu and do the same in the class file for this addon (if there are any in that class file). It's a bit more involved but not difficult.
     
×