Skip to content

Instantly share code, notes, and snippets.

@QWp6t
Created April 16, 2017 03:20
Show Gist options
  • Select an option

  • Save QWp6t/8f94b7096bb0d3a72fedba68f73033a5 to your computer and use it in GitHub Desktop.

Select an option

Save QWp6t/8f94b7096bb0d3a72fedba68f73033a5 to your computer and use it in GitHub Desktop.

Revisions

  1. QWp6t created this gist Apr 16, 2017.
    80 changes: 80 additions & 0 deletions Bootstrap.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,80 @@
    <?php namespace App\NavWalker;

    use Roots\Soil\Nav\NavWalker as SoilNavWalker;

    /**
    * @author QWp6t
    * @license OSL-3.0
    */
    class Bootstrap extends SoilNavWalker
    {

    public function __construct()
    {
    parent::__construct();
    remove_filter('nav_menu_css_class', [$this, 'cssClasses'], 10);
    add_filter('nav_menu_css_class', [$this, 'itemClasses'], 10, 4);
    add_filter('nav_menu_link_attributes', [$this, 'linkAttributes'], 10, 4);
    }

    /**
    * @param string $output
    * @param int $depth
    * @param array $args
    * @SuppressWarnings(PHPMD.CamelCaseMethodName) This method overrides its parent
    * @SuppressWarnings(PHPMD.UnusedFormalParameter) This method overrides its parent
    */
    // @codingStandardsIgnoreLine
    public function start_lvl(&$output, $depth = 0, $args = [])
    {
    $output .= '<ul class="dropdown-menu">';
    }

    /**
    * @param $classes
    * @param $item
    * @param $args
    * @param $depth
    * @return array
    * @SuppressWarnings(PHPMD.UnusedFormalParameter) This method overrides its parent
    */
    public function itemClasses($classes, $item, /** @noinspection PhpUnusedParameterInspection */ $args, $depth)
    {
    return array_filter(array_map(function ($class) use ($depth) {
    switch ($class) {
    case 'menu-item-has-children':
    return 'dropdown';
    case 'menu-item':
    return ($depth > 0 ? '' : 'nav-item');
    default:
    return $class;
    }
    }, parent::cssClasses($classes, $item)));
    }

    /**
    * @param $atts
    * @param $item
    * @param $args
    * @param $depth
    * @return array
    * @SuppressWarnings(PHPMD.UnusedFormalParameter) This method overrides its parent
    */
    public function linkAttributes($atts, $item, /** @noinspection PhpUnusedParameterInspection */ $args, $depth)
    {
    $atts['class'] = $depth ? 'dropdown-item' : 'nav-link';
    if ($item->current || $item->current_item_ancestor) {
    $atts['class'] .= ' active';
    }
    if ($item->is_subitem) {
    $atts['class'] .= ' dropdown-toggle';
    $atts += [
    'data-toggle' => 'dropdown',
    'role' => 'button',
    'aria-haspopup' => 'true',
    'aria-expanded' => 'false'
    ];
    }
    return $atts;
    }
    }
    51 changes: 51 additions & 0 deletions Foundation.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,51 @@
    <?php namespace App\NavWalker;

    use Roots\Soil\Nav\NavWalker as SoilNavWalker;

    /**
    * @author QWp6t
    * @license OSL-3.0
    */
    class Foundation extends SoilNavWalker
    {

    public function __construct()
    {
    parent::__construct();
    remove_filter('nav_menu_css_class', [$this, 'cssClasses'], 10);
    add_filter('nav_menu_css_class', [$this, 'itemClasses'], 10, 4);
    }

    /**
    * @param string $output
    * @param int $depth
    * @param array $args
    * @SuppressWarnings(PHPMD.CamelCaseMethodName) This method overrides its parent
    * @SuppressWarnings(PHPMD.UnusedFormalParameter) This method overrides its parent
    */
    // @codingStandardsIgnoreLine
    public function start_lvl(&$output, $depth = 0, $args = [])
    {
    $output .= '<ul class="submenu menu" data-submenu>';
    }

    /**
    * @param $classes
    * @param $item
    * @param $args
    * @param $depth
    * @return array
    * @SuppressWarnings(PHPMD.UnusedFormalParameter) This method overrides its parent
    */
    public function itemClasses($classes, $item, /** @noinspection PhpUnusedParameterInspection */ $args, $depth)
    {
    return array_filter(array_map(function ($class) use ($depth) {
    switch ($class) {
    case 'menu-item-has-children':
    return 'has-submenu';
    default:
    return $class;
    }
    }, parent::cssClasses($classes, $item)));
    }
    }
    174 changes: 174 additions & 0 deletions LICENSE.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,174 @@
    # [Open Software License ("OSL") v. 3.0](https://opensource.org/licenses/OSL-3.0)

    This Open Software License (the "License") applies to any original work of
    authorship (the "Original Work") whose owner (the "Licensor") has placed the
    following licensing notice adjacent to the copyright notice for the Original
    Work:

    Licensed under the Open Software License version 3.0

    1. **Grant of Copyright License.** Licensor grants You a worldwide,
    royalty-free, non-exclusive, sublicensable license, for the duration of the
    copyright, to do the following:

    a. to reproduce the Original Work in copies, either alone or as part of a
    collective work;

    b. to translate, adapt, alter, transform, modify, or arrange the Original
    Work, thereby creating derivative works ("Derivative Works") based upon the
    Original Work;

    c. to distribute or communicate copies of the Original Work and Derivative
    Works to the public, **with the proviso that copies of Original Work or
    Derivative Works that You distribute or communicate shall be licensed under
    this Open Software License;**

    d. to perform the Original Work publicly; and

    e. to display the Original Work publicly.

    2. **Grant** of Patent License. Licensor grants You a worldwide,
    royalty-free, non-exclusive, sublicensable license, under patent claims owned
    or controlled by the Licensor that are embodied in the Original Work as
    furnished by the Licensor, for the duration of the patents, to make, use,
    sell, offer for sale, have made, and import the Original Work and Derivative
    Works.

    3. **Grant** of Source Code License. The term "Source Code" means the
    preferred form of the Original Work for making modifications to it and all
    available documentation describing how to modify the Original Work. Licensor
    agrees to provide a machine-readable copy of the Source Code of the Original
    Work along with each copy of the Original Work that Licensor distributes.
    Licensor reserves the right to satisfy this obligation by placing a
    machine-readable copy of the Source Code in an information repository
    reasonably calculated to permit inexpensive and convenient access by You for
    as long as Licensor continues to distribute the Original Work.

    4. **Exclusions From License Grant.** Neither the names of Licensor, nor the
    names of any contributors to the Original Work, nor any of their trademarks
    or service marks, may be used to endorse or promote products derived from
    this Original Work without express prior permission of the Licensor. Except
    as expressly stated herein, nothing in this License grants any license to
    Licensor's trademarks, copyrights, patents, trade secrets or any other
    intellectual property. No patent license is granted to make, use, sell, offer
    for sale, have made, or import embodiments of any patent claims other than
    the licensed claims defined in Section 2. No license is granted to the
    trademarks of Licensor even if such marks are included in the Original Work.
    Nothing in this License shall be interpreted to prohibit Licensor from
    licensing under terms different from this License any Original Work that
    Licensor otherwise would have a right to license.

    5. **External Deployment.** The term "External Deployment" means the use,
    distribution, or communication of the Original Work or Derivative Works in
    any way such that the Original Work or Derivative Works may be used by anyone
    other than You, whether those works are distributed or communicated to those
    persons or made available as an application intended for use over a network.
    As an express condition for the grants of license hereunder, You must treat
    any External Deployment by You of the Original Work or a Derivative Work as a
    distribution under section 1(c).

    6. **Attribution Rights.** You must retain, in the Source Code of any
    Derivative Works that You create, all copyright, patent, or trademark notices
    from the Source Code of the Original Work, as well as any notices of
    licensing and any descriptive text identified therein as an "Attribution
    Notice." You must cause the Source Code for any Derivative Works that You
    create to carry a prominent Attribution Notice reasonably calculated to
    inform recipients that You have modified the Original Work.

    7. **Warranty of Provenance and Disclaimer of Warranty.** Licensor warrants
    that the copyright in and to the Original Work and the patent rights granted
    herein by Licensor are owned by the Licensor or are sublicensed to You under
    the terms of this License with the permission of the contributor(s) of those
    copyrights and patent rights. Except as expressly stated in the immediately
    preceding sentence, the Original Work is provided under this License on an
    "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including,
    without limitation, the warranties of non-infringement, merchantability or
    fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE
    ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an
    essential part of this License. No license to the Original Work is granted by
    this License except under this disclaimer.

    8. **Limitation of Liability.** Under no circumstances and under no legal
    theory, whether in tort (including negligence), contract, or otherwise, shall
    the Licensor be liable to anyone for any indirect, special, incidental, or
    consequential damages of any character arising as a result of this License or
    the use of the Original Work including, without limitation, damages for loss
    of goodwill, work stoppage, computer failure or malfunction, or any and all
    other commercial damages or losses. This limitation of liability shall not
    apply to the extent applicable law prohibits such limitation.

    9. **Acceptance and Termination.** If, at any time, You expressly assented to
    this License, that assent indicates your clear and irrevocable acceptance of
    this License and all of its terms and conditions. If You distribute or
    communicate copies of the Original Work or a Derivative Work, You must make a
    reasonable effort under the circumstances to obtain the express assent of
    recipients to the terms of this License. This License conditions your rights
    to undertake the activities listed in Section 1, including your right to
    create Derivative Works based upon the Original Work, and doing so without
    honoring these terms and conditions is prohibited by copyright law and
    international treaty. Nothing in this License is intended to affect copyright
    exceptions and limitations (including "fair use" or "fair dealing"). This
    License shall terminate immediately and You may no longer exercise any of the
    rights granted to You by this License upon your failure to honor the
    conditions in Section 1(c).

    10. **Termination for Patent Action.** This License shall terminate
    automatically and You may no longer exercise any of the rights granted to You
    by this License as of the date You commence an action, including a
    cross-claim or counterclaim, against Licensor or any licensee alleging that
    the Original Work infringes a patent. This termination provision shall not
    apply for an action alleging patent infringement by combinations of the
    Original Work with other software or hardware.

    11. **Jurisdiction, Venue and Governing Law.** Any action or suit relating to
    this License may be brought only in the courts of a jurisdiction wherein the
    Licensor resides or in which Licensor conducts its primary business, and
    under the laws of that jurisdiction excluding its conflict-of-law provisions.
    The application of the United Nations Convention on Contracts for the
    International Sale of Goods is expressly excluded. Any use of the Original
    Work outside the scope of this License or after its termination shall be
    subject to the requirements and penalties of copyright or patent law in the
    appropriate jurisdiction. This section shall survive the termination of this
    License.

    12. **Attorneys' Fees.** In any action to enforce the terms of this License
    or seeking damages relating thereto, the prevailing party shall be entitled
    to recover its costs and expenses, including, without limitation, reasonable
    attorneys' fees and costs incurred in connection with such action, including
    any appeal of such action. This section shall survive the termination of this
    License.

    13. **Miscellaneous.** If any provision of this License is held to be
    unenforceable, such provision shall be reformed only to the extent necessary
    to make it enforceable.

    14. **Definition of "You" in This License.** "You" throughout this License,
    whether in upper or lower case, means an individual or a legal entity
    exercising rights under, and complying with all of the terms of, this
    License. For legal entities, "You" includes any entity that controls, is
    controlled by, or is under common control with you. For purposes of this
    definition, "control" means (i) the power, direct or indirect, to cause the
    direction or management of such entity, whether by contract or otherwise,
    or (ii) ownership of fifty percent (50%) or more of the outstanding shares,
    or (iii) beneficial ownership of such entity.

    15. **Right to Use.** You may use the Original Work in all ways not otherwise
    restricted or conditioned by this License or by law, and Licensor promises
    not to interfere with or be responsible for such uses by You.

    16. **Modification of This License.** This License is Copyright © 2005
    Lawrence Rosen. Permission is granted to copy, distribute, or communicate
    this License without modification. Nothing in this License permits You to
    modify this License as applied to the Original Work or to Derivative Works.
    However, You may modify the text of this License and copy, distribute or
    communicate your modified version (the "Modified License") and apply it to
    other original works of authorship subject to the following conditions: (i)
    You may not indicate in any way that your Modified License is the "Open
    Software License" or "OSL" and you may not use those names in the name of
    your Modified License; (ii) You must replace the notice specified in the
    first paragraph above with the notice "Licensed under < insert your license
    name here >" or with a notice of your own that is not confusingly similar to
    the notice in this License; and (iii) You may not claim that your original
    works are open source software unless your Modified License has been approved
    by Open Source Initiative (OSI) and You comply with its license review and
    certification process.