safety_cone 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +24 -4
- data/Rakefile +0 -2
- data/app/assets/stylesheets/safety_cone/material.css +99 -100
- data/app/controllers/safety_cone/application_controller.rb +5 -0
- data/app/controllers/safety_cone/cones_controller.rb +2 -23
- data/app/controllers/safety_cone/features_controller.rb +15 -0
- data/app/controllers/safety_cone/paths_controller.rb +19 -0
- data/app/helpers/safety_cone/cones_helper.rb +7 -1
- data/app/models/safety_cone/{cone.rb → path.rb} +1 -1
- data/app/views/layouts/safety_cone/application.html.erb +6 -9
- data/app/views/safety_cone/cones/index.html.erb +33 -22
- data/app/views/safety_cone/paths/edit.html.erb +30 -0
- data/config/routes.rb +5 -2
- data/lib/safety_cone.rb +1 -1
- data/lib/safety_cone/configuration.rb +9 -5
- data/lib/safety_cone/engine.rb +3 -3
- data/lib/safety_cone/filter.rb +30 -30
- data/lib/safety_cone/version.rb +1 -1
- data/lib/safety_cone/view_helpers.rb +29 -0
- metadata +12 -9
- data/app/views/safety_cone/cones/edit.html.erb +0 -33
- data/config/environment.rb +0 -0
- data/lib/safety_cone/view_helper.rb +0 -15
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2101ef8045b6a171f2bf74adf69ed729b6b7c3d4
         | 
| 4 | 
            +
              data.tar.gz: 2c4021a527d67509b7a5d43ac7ceac34183ec3de
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7894f42411f05db74d1089afa3fd57197fb82f68bbb007396828218f16e845aeec58aa6206f137d25eab754bc307bf55266ba97d16f6f689344563b30c42382c
         | 
| 7 | 
            +
              data.tar.gz: ca2c5ee05fde598914b861afa0913ccd9e6a92b76197863d8bbffaf2da4e89168cbefccfef0a1ea3425735ffafe620eb59a3a7296017bd5d43be62f56a5558e7
         | 
    
        data/README.md
    CHANGED
    
    | @@ -41,13 +41,22 @@ SafetyCone.configure do |config| | |
| 41 41 | 
             
                method: 'POST',
         | 
| 42 42 | 
             
                name: 'All POST requests'
         | 
| 43 43 | 
             
              )
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              # Feature flipper
         | 
| 46 | 
            +
              config.add(
         | 
| 47 | 
            +
                feature: :record_search,
         | 
| 48 | 
            +
                name: 'Search'
         | 
| 49 | 
            +
              )
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              # This config will provide a view helper record_search?
         | 
| 52 | 
            +
              # Which can be used in the view to display a div or not
         | 
| 44 53 | 
             
            end
         | 
| 45 54 | 
             
            ```
         | 
| 46 55 |  | 
| 47 56 | 
             
            In routes add
         | 
| 48 57 |  | 
| 49 58 | 
             
            ```
         | 
| 50 | 
            -
              mount SafetyCone::Engine, : | 
| 59 | 
            +
              mount SafetyCone::Engine, :as => '/safety_cone'
         | 
| 51 60 | 
             
            ```
         | 
| 52 61 |  | 
| 53 62 | 
             
            In ApplicationController
         | 
| @@ -71,7 +80,14 @@ In View | |
| 71 80 |  | 
| 72 81 | 
             
               <% if safetycone_alert %>
         | 
| 73 82 | 
             
                <div class="alert"><%= safetycone_alert %></div>
         | 
| 74 | 
            -
              <% end %> | 
| 83 | 
            +
              <% end %>
         | 
| 84 | 
            +
             | 
| 85 | 
            +
              <!-- Feature Flipper -->
         | 
| 86 | 
            +
              <% if record_search? %>
         | 
| 87 | 
            +
                <div>Search Records</div>
         | 
| 88 | 
            +
              <% else %>
         | 
| 89 | 
            +
                <div>Search Records</div>
         | 
| 90 | 
            +
              <% end %>
         | 
| 75 91 | 
             
            </div>
         | 
| 76 92 | 
             
            ```
         | 
| 77 93 |  | 
| @@ -93,7 +109,7 @@ SafetyCone.configure do |config| | |
| 93 109 | 
             
                type: :block
         | 
| 94 110 | 
             
              )
         | 
| 95 111 |  | 
| 96 | 
            -
              # This is a controller action specific warning. But with no  | 
| 112 | 
            +
              # This is a controller action specific warning. But with no types to prevent this action
         | 
| 97 113 | 
             
              config.add(
         | 
| 98 114 | 
             
                controller: :users,
         | 
| 99 115 | 
             
                action: :new,
         | 
| @@ -126,7 +142,11 @@ end | |
| 126 142 |  | 
| 127 143 |  | 
| 128 144 | 
             
            ## Contributing
         | 
| 129 | 
            -
             | 
| 145 | 
            +
            1. Fork it
         | 
| 146 | 
            +
            2. Create your feature branch (`git checkout -b my-new-feature`)
         | 
| 147 | 
            +
            3. Commit your changes (`git commit -am 'Add some feature'`)
         | 
| 148 | 
            +
            4. Push to the branch (`git push origin my-new-feature`)
         | 
| 149 | 
            +
            5. Create new Pull Request
         | 
| 130 150 |  | 
| 131 151 | 
             
            ## License
         | 
| 132 152 | 
             
            The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
         | 
    
        data/Rakefile
    CHANGED
    
    
| @@ -3,11 +3,58 @@ | |
| 3 3 | 
             
              They will automatically be included in application.css.
         | 
| 4 4 | 
             
            */
         | 
| 5 5 |  | 
| 6 | 
            +
            html {
         | 
| 7 | 
            +
              font-family: sans-serif;
         | 
| 8 | 
            +
            }
         | 
| 9 | 
            +
             | 
| 6 10 | 
             
            body {
         | 
| 7 | 
            -
              margin-top: 2rem;
         | 
| 8 11 | 
             
              background-color: #e0e0e0;
         | 
| 9 12 | 
             
            }
         | 
| 10 13 |  | 
| 14 | 
            +
            .wrapper {
         | 
| 15 | 
            +
              display: grid;
         | 
| 16 | 
            +
              justify-content: center;
         | 
| 17 | 
            +
            }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            .header {
         | 
| 20 | 
            +
              display: grid;
         | 
| 21 | 
            +
              width: 60rem;
         | 
| 22 | 
            +
              grid-template-columns: 1fr 10fr 1fr;
         | 
| 23 | 
            +
              border-bottom: 1px solid #aaaaaa;
         | 
| 24 | 
            +
              margin-bottom: 2rem;
         | 
| 25 | 
            +
            }
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            .header .logo {
         | 
| 28 | 
            +
              margin-top: 1rem;
         | 
| 29 | 
            +
              justify-self: center;
         | 
| 30 | 
            +
            }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            .grid {
         | 
| 33 | 
            +
              display: grid;
         | 
| 34 | 
            +
              width: 60rem;
         | 
| 35 | 
            +
              grid-template-columns: 2fr 1fr 1fr;
         | 
| 36 | 
            +
              grid-gap: 1rem;
         | 
| 37 | 
            +
              margin-bottom: 2rem;
         | 
| 38 | 
            +
            }
         | 
| 39 | 
            +
             | 
| 40 | 
            +
             | 
| 41 | 
            +
            .bottom-grid {
         | 
| 42 | 
            +
              display: grid;
         | 
| 43 | 
            +
              width: 60rem;
         | 
| 44 | 
            +
              grid-template-columns: 2fr 1fr 1fr;
         | 
| 45 | 
            +
              grid-gap: 1rem;
         | 
| 46 | 
            +
              margin-bottom: 2rem;
         | 
| 47 | 
            +
            }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            .col {
         | 
| 50 | 
            +
              grid-column: 1/4;
         | 
| 51 | 
            +
              grid-row: 1/4;
         | 
| 52 | 
            +
            }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            .form {
         | 
| 55 | 
            +
              display: grid;
         | 
| 56 | 
            +
            }
         | 
| 57 | 
            +
             | 
| 11 58 | 
             
            .card {
         | 
| 12 59 | 
             
              padding: 2rem;
         | 
| 13 60 | 
             
              display: block;
         | 
| @@ -23,7 +70,7 @@ body { | |
| 23 70 | 
             
            .card, .btn {
         | 
| 24 71 | 
             
              box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
         | 
| 25 72 | 
             
            }
         | 
| 26 | 
            -
            .card:hover{
         | 
| 73 | 
            +
            .card:hover {
         | 
| 27 74 | 
             
              box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
         | 
| 28 75 | 
             
            }
         | 
| 29 76 |  | 
| @@ -40,45 +87,16 @@ body { | |
| 40 87 | 
             
              background-color: #FF8A65 !important;
         | 
| 41 88 | 
             
            }
         | 
| 42 89 |  | 
| 43 | 
            -
             | 
| 44 | 
            -
              font- | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
            hr {
         | 
| 48 | 
            -
              box-sizing: content-box;
         | 
| 49 | 
            -
              height: 0;
         | 
| 50 | 
            -
            }
         | 
| 51 | 
            -
             | 
| 52 | 
            -
            .container {
         | 
| 53 | 
            -
              margin: 0 auto;
         | 
| 54 | 
            -
              max-width: 1280px;
         | 
| 55 | 
            -
              width: 90%;
         | 
| 56 | 
            -
            }
         | 
| 57 | 
            -
            .row .col {
         | 
| 58 | 
            -
              float: left;
         | 
| 59 | 
            -
              box-sizing: border-box;
         | 
| 60 | 
            -
              padding: 0 0.75rem;
         | 
| 61 | 
            -
              min-height: 1px;
         | 
| 62 | 
            -
            }
         | 
| 63 | 
            -
            h4 {
         | 
| 64 | 
            -
              font-size: 2.28rem;
         | 
| 65 | 
            -
              line-height: 110%;
         | 
| 66 | 
            -
              margin: 1.14rem 0 0.912rem 0;
         | 
| 67 | 
            -
                text-align: center;
         | 
| 68 | 
            -
            }
         | 
| 69 | 
            -
             | 
| 70 | 
            -
            h5 {
         | 
| 71 | 
            -
              font-size: 1.64rem;
         | 
| 72 | 
            -
              line-height: 110%;
         | 
| 73 | 
            -
              margin: 0.82rem 0 0.656rem 0;
         | 
| 74 | 
            -
                text-align: center;
         | 
| 90 | 
            +
            h3 {
         | 
| 91 | 
            +
              font-size: 1.86rem;
         | 
| 92 | 
            +
              margin-left: 2rem;
         | 
| 75 93 | 
             
            }
         | 
| 76 94 |  | 
| 77 95 | 
             
            h6 {
         | 
| 78 96 | 
             
              font-size: 1rem;
         | 
| 79 97 | 
             
              line-height: 110%;
         | 
| 80 98 | 
             
              margin: 0.5rem 0 0.4rem 0;
         | 
| 81 | 
            -
             | 
| 99 | 
            +
              text-align: center;
         | 
| 82 100 | 
             
            }
         | 
| 83 101 |  | 
| 84 102 | 
             
            .chip {
         | 
| @@ -116,46 +134,22 @@ h6 { | |
| 116 134 | 
             
              box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
         | 
| 117 135 | 
             
            }
         | 
| 118 136 |  | 
| 119 | 
            -
            .btn | 
| 120 | 
            -
              background-color: #2bbbad;
         | 
| 121 | 
            -
              box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
         | 
| 122 | 
            -
            }
         | 
| 123 | 
            -
             | 
| 124 | 
            -
            .row .col.s3 {
         | 
| 125 | 
            -
              width: 25%;
         | 
| 126 | 
            -
              margin-left: auto;
         | 
| 127 | 
            -
              left: auto;
         | 
| 128 | 
            -
              right: auto;
         | 
| 129 | 
            -
            }
         | 
| 130 | 
            -
             | 
| 131 | 
            -
            .row .col.s6 {
         | 
| 132 | 
            -
              width: 50%;
         | 
| 133 | 
            -
              margin-left: auto;
         | 
| 134 | 
            -
              left: auto;
         | 
| 135 | 
            -
              right: auto;
         | 
| 136 | 
            -
            }
         | 
| 137 | 
            -
             | 
| 138 | 
            -
            .row .col.s12 {
         | 
| 137 | 
            +
            .btn.expand {
         | 
| 139 138 | 
             
              width: 100%;
         | 
| 140 | 
            -
              margin-left: auto;
         | 
| 141 | 
            -
              left: auto;
         | 
| 142 | 
            -
              right: auto;
         | 
| 143 139 | 
             
            }
         | 
| 144 140 |  | 
| 145 | 
            -
            . | 
| 146 | 
            -
               | 
| 147 | 
            -
            }
         | 
| 148 | 
            -
            .row .col.offset-s4 {
         | 
| 149 | 
            -
              margin-left: 33.33333333%;
         | 
| 141 | 
            +
            .btn.back {
         | 
| 142 | 
            +
              align-self: center;
         | 
| 150 143 | 
             
            }
         | 
| 151 | 
            -
            .row .col.offset-s4 {
         | 
| 152 | 
            -
              left: 33.3333333333%;
         | 
| 153 | 
            -
            }
         | 
| 154 | 
            -
             | 
| 155 144 |  | 
| 156 145 | 
             
            .grey {
         | 
| 157 146 | 
             
              background: #DCDCDC;
         | 
| 158 147 | 
             
            }
         | 
| 148 | 
            +
             | 
| 149 | 
            +
            .dark-grey {
         | 
| 150 | 
            +
              background: #AAAAAA;
         | 
| 151 | 
            +
            }
         | 
| 152 | 
            +
             | 
| 159 153 | 
             
            .grey:hover {
         | 
| 160 154 | 
             
              background: #BABABA;
         | 
| 161 155 | 
             
            }
         | 
| @@ -176,6 +170,7 @@ input[type=text] { | |
| 176 170 | 
             
              transition: all 0.3s;
         | 
| 177 171 | 
             
              color: white;
         | 
| 178 172 | 
             
            }
         | 
| 173 | 
            +
             | 
| 179 174 | 
             
            .input-field .input-label{
         | 
| 180 175 | 
             
              color: #9e9e9e;
         | 
| 181 176 | 
             
              position: absolute;
         | 
| @@ -195,6 +190,7 @@ input[type=text]:focus { | |
| 195 190 | 
             
              border-bottom: 2px solid #26a69a!important;
         | 
| 196 191 | 
             
              transition: .2s ease-out;
         | 
| 197 192 | 
             
            }
         | 
| 193 | 
            +
             | 
| 198 194 | 
             
            input[type=text]:focus + label	{
         | 
| 199 195 | 
             
              margin-top: -20px!important;
         | 
| 200 196 | 
             
              color: #26a69a!important;
         | 
| @@ -215,23 +211,22 @@ input[type=text]:focus + label	{ | |
| 215 211 |  | 
| 216 212 | 
             
            input[type="radio"]:not(:checked),
         | 
| 217 213 | 
             
            [type="radio"]:checked {
         | 
| 218 | 
            -
            position: absolute;
         | 
| 219 | 
            -
            left: -9999px;
         | 
| 220 | 
            -
            opacity: 0;
         | 
| 214 | 
            +
              position: absolute;
         | 
| 215 | 
            +
              left: -9999px;
         | 
| 216 | 
            +
              opacity: 0;
         | 
| 221 217 | 
             
            }
         | 
| 222 218 |  | 
| 223 219 | 
             
            [type="radio"]:not(:checked) + label,
         | 
| 224 220 | 
             
            [type="radio"]:checked + label {
         | 
| 225 | 
            -
            position: relative;
         | 
| 226 | 
            -
            padding-left: 35px;
         | 
| 227 | 
            -
            cursor: pointer;
         | 
| 228 | 
            -
            display: inline-block;
         | 
| 229 | 
            -
            height: 25px;
         | 
| 230 | 
            -
            line-height: 30px;
         | 
| 231 | 
            -
            font-size: 1rem;
         | 
| 232 | 
            -
            transition: .28s ease;
         | 
| 233 | 
            -
             | 
| 234 | 
            -
            -webkit-user-select: none;
         | 
| 221 | 
            +
              position: relative;
         | 
| 222 | 
            +
              padding-left: 35px;
         | 
| 223 | 
            +
              cursor: pointer;
         | 
| 224 | 
            +
              display: inline-block;
         | 
| 225 | 
            +
              height: 25px;
         | 
| 226 | 
            +
              line-height: 30px;
         | 
| 227 | 
            +
              font-size: 1rem;
         | 
| 228 | 
            +
              transition: .28s ease;
         | 
| 229 | 
            +
              -webkit-user-select: none;
         | 
| 235 230 | 
             
              -moz-user-select: none;
         | 
| 236 231 | 
             
               -ms-user-select: none;
         | 
| 237 232 | 
             
                   user-select: none;
         | 
| @@ -239,15 +234,15 @@ transition: .28s ease; | |
| 239 234 |  | 
| 240 235 | 
             
            [type="radio"] + label:before,
         | 
| 241 236 | 
             
            [type="radio"] + label:after {
         | 
| 242 | 
            -
            content: '';
         | 
| 243 | 
            -
            position: absolute;
         | 
| 244 | 
            -
            left: 0;
         | 
| 245 | 
            -
            top: 0;
         | 
| 246 | 
            -
            margin: 4px;
         | 
| 247 | 
            -
            width: 16px;
         | 
| 248 | 
            -
            height: 16px;
         | 
| 249 | 
            -
            z-index: 0;
         | 
| 250 | 
            -
            transition: .28s ease;
         | 
| 237 | 
            +
              content: '';
         | 
| 238 | 
            +
              position: absolute;
         | 
| 239 | 
            +
              left: 0;
         | 
| 240 | 
            +
              top: 0;
         | 
| 241 | 
            +
              margin: 4px;
         | 
| 242 | 
            +
              width: 16px;
         | 
| 243 | 
            +
              height: 16px;
         | 
| 244 | 
            +
              z-index: 0;
         | 
| 245 | 
            +
              transition: .28s ease;
         | 
| 251 246 | 
             
            }
         | 
| 252 247 |  | 
| 253 248 | 
             
            /* Unchecked styles */
         | 
| @@ -257,42 +252,46 @@ transition: .28s ease; | |
| 257 252 | 
             
            [type="radio"]:checked + label:after,
         | 
| 258 253 | 
             
            [type="radio"].with-gap:checked + label:before,
         | 
| 259 254 | 
             
            [type="radio"].with-gap:checked + label:after {
         | 
| 260 | 
            -
            border-radius: 50%;
         | 
| 255 | 
            +
              border-radius: 50%;
         | 
| 261 256 | 
             
            }
         | 
| 262 257 |  | 
| 263 258 | 
             
            [type="radio"]:not(:checked) + label:before,
         | 
| 264 259 | 
             
            [type="radio"]:not(:checked) + label:after {
         | 
| 265 | 
            -
            border: 2px solid #5a5a5a;
         | 
| 260 | 
            +
              border: 2px solid #5a5a5a;
         | 
| 266 261 | 
             
            }
         | 
| 267 262 |  | 
| 268 263 | 
             
            [type="radio"]:not(:checked) + label:after {
         | 
| 269 | 
            -
            -webkit-transform: scale(0);
         | 
| 270 | 
            -
             | 
| 264 | 
            +
              -webkit-transform: scale(0);
         | 
| 265 | 
            +
              transform: scale(0);
         | 
| 271 266 | 
             
            }
         | 
| 272 267 |  | 
| 273 268 | 
             
            /* Checked styles */
         | 
| 274 269 | 
             
            [type="radio"]:checked + label:before {
         | 
| 275 | 
            -
            border: 2px solid transparent;
         | 
| 270 | 
            +
              border: 2px solid transparent;
         | 
| 276 271 | 
             
            }
         | 
| 277 272 |  | 
| 278 273 | 
             
            [type="radio"]:checked + label:after,
         | 
| 279 274 | 
             
            [type="radio"].with-gap:checked + label:before,
         | 
| 280 275 | 
             
            [type="radio"].with-gap:checked + label:after {
         | 
| 281 | 
            -
            border: 2px solid #26a69a;
         | 
| 276 | 
            +
              border: 2px solid #26a69a;
         | 
| 282 277 | 
             
            }
         | 
| 283 278 |  | 
| 284 279 | 
             
            [type="radio"]:checked + label:after,
         | 
| 285 280 | 
             
            [type="radio"].with-gap:checked + label:after {
         | 
| 286 | 
            -
            background-color: #26a69a;
         | 
| 281 | 
            +
              background-color: #26a69a;
         | 
| 287 282 | 
             
            }
         | 
| 288 283 |  | 
| 289 284 | 
             
            [type="radio"]:checked + label:after {
         | 
| 290 | 
            -
            -webkit-transform: scale(1.02);
         | 
| 291 | 
            -
             | 
| 285 | 
            +
              -webkit-transform: scale(1.02);
         | 
| 286 | 
            +
                  transform: scale(1.02);
         | 
| 292 287 | 
             
            }
         | 
| 293 288 |  | 
| 294 289 | 
             
            /* Focused styles */
         | 
| 295 290 | 
             
            [type="radio"].tabbed:focus + label:before {
         | 
| 296 | 
            -
            box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
         | 
| 297 | 
            -
            color: red!Important;
         | 
| 291 | 
            +
              box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
         | 
| 292 | 
            +
              color: red!Important;
         | 
| 293 | 
            +
            }
         | 
| 294 | 
            +
             | 
| 295 | 
            +
            .red {
         | 
| 296 | 
            +
              background-color: #D52618 !important;
         | 
| 298 297 | 
             
            }
         | 
| @@ -1,5 +1,10 @@ | |
| 1 1 | 
             
            module SafetyCone
         | 
| 2 2 | 
             
              class ApplicationController < ActionController::Base
         | 
| 3 3 | 
             
                protect_from_forgery with: :exception
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                unless Rails.env.test?
         | 
| 6 | 
            +
                  http_basic_authenticate_with name: SafetyCone.auth[:username],
         | 
| 7 | 
            +
                    password: SafetyCone.auth[:password] if (SafetyCone.auth[:username] && SafetyCone.auth[:password])
         | 
| 8 | 
            +
                end
         | 
| 4 9 | 
             
              end
         | 
| 5 10 | 
             
            end
         | 
| @@ -1,28 +1,7 @@ | |
| 1 | 
            -
            require_dependency  | 
| 1 | 
            +
            require_dependency 'safety_cone/application_controller'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module SafetyCone
         | 
| 4 4 | 
             
              class ConesController < ApplicationController
         | 
| 5 | 
            -
                 | 
| 6 | 
            -
                  http_basic_authenticate_with name: SafetyCone.auth[:username],
         | 
| 7 | 
            -
                    password: SafetyCone.auth[:password] if (SafetyCone.auth[:username] && SafetyCone.auth[:password])
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def index
         | 
| 11 | 
            -
                  @cones = SafetyCone.cones
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                def edit
         | 
| 15 | 
            -
                  cone = SafetyCone.cones[params[:id].to_sym]
         | 
| 16 | 
            -
                  @cone = Cone.new(params[:id], cone)
         | 
| 17 | 
            -
                  @cone.fetch
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                def update
         | 
| 21 | 
            -
                  cone = SafetyCone.cones[params[:id].to_sym]
         | 
| 22 | 
            -
                  mereged_params = cone.merge(params[:cone].symbolize_keys)
         | 
| 23 | 
            -
                  Cone.new(params[:id], mereged_params).save
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                  redirect_to cones_path
         | 
| 26 | 
            -
                end
         | 
| 5 | 
            +
                def index; end
         | 
| 27 6 | 
             
              end
         | 
| 28 7 | 
             
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require_dependency 'safety_cone/application_controller'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SafetyCone
         | 
| 4 | 
            +
              class FeaturesController < ApplicationController
         | 
| 5 | 
            +
                def update
         | 
| 6 | 
            +
                  feature = SafetyCone.features[params[:id].to_i]
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  redis = SafetyCone.redis
         | 
| 9 | 
            +
                  redis_key = "safety::cone::#{feature[:feature]}"
         | 
| 10 | 
            +
                  redis.set(redis_key, params[:state])
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  redirect_to cones_path
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            require_dependency 'safety_cone/application_controller'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module SafetyCone
         | 
| 4 | 
            +
              class PathsController < ApplicationController
         | 
| 5 | 
            +
                def edit
         | 
| 6 | 
            +
                  path = SafetyCone.paths[params[:id].to_sym]
         | 
| 7 | 
            +
                  @path = Path.new(params[:id], path)
         | 
| 8 | 
            +
                  @path.fetch
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def update
         | 
| 12 | 
            +
                  path = SafetyCone.paths[params[:id].to_sym]
         | 
| 13 | 
            +
                  mereged_params = path.merge(params[:path].symbolize_keys)
         | 
| 14 | 
            +
                  Path.new(params[:id], mereged_params).save
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  redirect_to cones_path
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -2,17 +2,14 @@ | |
| 2 2 | 
             
            <html>
         | 
| 3 3 | 
             
            <head>
         | 
| 4 4 | 
             
              <title>Safety Cone</title>
         | 
| 5 | 
            -
              <%= stylesheet_link_tag  | 
| 5 | 
            +
              <%= stylesheet_link_tag 'safety_cone/application', media: 'all' %>
         | 
| 6 6 | 
             
            </head>
         | 
| 7 7 | 
             
            <body>
         | 
| 8 | 
            -
              <div class= | 
| 9 | 
            -
                <div class= | 
| 10 | 
            -
                   | 
| 11 | 
            -
             | 
| 12 | 
            -
                   | 
| 13 | 
            -
                  <div class="col s4 center">
         | 
| 14 | 
            -
                    <h4>Safety Cone</h4>
         | 
| 15 | 
            -
                  </div>
         | 
| 8 | 
            +
              <div class='wrapper'>
         | 
| 9 | 
            +
                <div class='header'>
         | 
| 10 | 
            +
                  <%= image_tag('safety_cone/logo.png', size: '60x60', class: 'logo') %>
         | 
| 11 | 
            +
                  <h3>Safety Cone</h3>
         | 
| 12 | 
            +
                  <%= link_to 'home', '/', class: 'btn back dark-grey' %>
         | 
| 16 13 | 
             
                </div>
         | 
| 17 14 | 
             
                <%= yield %>
         | 
| 18 15 | 
             
              </div>
         | 
| @@ -1,24 +1,35 @@ | |
| 1 | 
            -
            <div class="row">
         | 
| 2 | 
            -
              <div class="col s6 offset-s3">
         | 
| 3 | 
            -
                <hr />
         | 
| 4 | 
            -
                <% @cones.each do |cone, options| %>
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                  <div class="row">
         | 
| 7 | 
            -
                    <div class="col s6">
         | 
| 8 | 
            -
                      <%= options[:name] %>
         | 
| 9 | 
            -
                    </div>
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    <div class="col s3">
         | 
| 12 | 
            -
                      <div class="chip status-<%= status(cone) %>">
         | 
| 13 | 
            -
                        <%= status(cone) %>
         | 
| 14 | 
            -
                      </div>
         | 
| 15 | 
            -
                    </div>
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                    <div class="col s3">
         | 
| 18 | 
            -
                      <%= link_to 'edit', edit_cone_path(cone), class: 'waves-effect waves-light btn' %>
         | 
| 19 | 
            -
                    </div>
         | 
| 20 | 
            -
                  </div>
         | 
| 21 | 
            -
                <% end %>
         | 
| 22 1 |  | 
| 23 | 
            -
             | 
| 2 | 
            +
            <!-- Paths list -->
         | 
| 3 | 
            +
            <h4>Requests</h4>
         | 
| 4 | 
            +
            <div class='grid'>
         | 
| 5 | 
            +
            <% SafetyCone.paths.each do |cone, options| %>
         | 
| 6 | 
            +
              <%= options[:name] %>
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              <span class="chip status-<%= status(cone) %>">
         | 
| 9 | 
            +
                <%= status(cone) %>
         | 
| 10 | 
            +
              </span>
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              <%= link_to 'edit', edit_path_path(cone), class: 'waves-effect waves-light btn' %>
         | 
| 13 | 
            +
            <% end %>
         | 
| 14 | 
            +
            </div>
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            <!-- Features list -->
         | 
| 17 | 
            +
            <h4>Features</h4>
         | 
| 18 | 
            +
            <div class='grid'>
         | 
| 19 | 
            +
              <% SafetyCone.features.each_with_index do |feature, index| %>
         | 
| 20 | 
            +
                 <%= feature[:name] %>
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                <% if feature_status(feature[:feature]) %>
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                   <div class="chip status">on</div>
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                   <%= button_to 'Block', feature_path(index, params: { state: 0 }),
         | 
| 27 | 
            +
                                        method: :patch, class: 'waves-effect waves-light btn expand red'%>
         | 
| 28 | 
            +
                <% else %>
         | 
| 29 | 
            +
                  <div class="chip status-block">off</div>
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  <%= button_to 'Unblock', feature_path(index, params: { state: 1 }),
         | 
| 32 | 
            +
                                        method: :patch, class: 'waves-effect waves-light btn expand'%>
         | 
| 33 | 
            +
                <% end %>
         | 
| 34 | 
            +
              <%end%>
         | 
| 24 35 | 
             
            </div>
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            <div class='grid'>
         | 
| 2 | 
            +
              <div class='card col'>
         | 
| 3 | 
            +
                <h6 class="center"><%= @path.name %></h6>
         | 
| 4 | 
            +
                <%= form_for :path, url: path_path(@path.key), method: :PUT do |form| %>
         | 
| 5 | 
            +
                  <div class='form'>
         | 
| 6 | 
            +
                    <div class='input-field'>
         | 
| 7 | 
            +
                      <%= form.text_field :message %>
         | 
| 8 | 
            +
                      <%= form.label :message, 'Message', class: 'input-label'%>
         | 
| 9 | 
            +
                    </div>
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    <div class='input-field'>
         | 
| 12 | 
            +
                      <%= form.radio_button :type, 'notice' %>
         | 
| 13 | 
            +
                      <%= form.label :type_notice, 'Notice' %>
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                      <%= form.radio_button :type, 'block' %>
         | 
| 16 | 
            +
                      <%= form.label :type_block, 'Block' %>
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                      <%= form.radio_button :type, 'disabled' %>
         | 
| 19 | 
            +
                      <%= form.label :type_disabled, 'Disable this Cone' %>
         | 
| 20 | 
            +
                    </div>
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    <div class='input-field'>
         | 
| 23 | 
            +
                      <%= form.submit 'save', class: 'waves-effect waves-light btn' %>
         | 
| 24 | 
            +
                      <%= link_to 'cancel', cones_path, class: 'waves-effect waves-light btn grey lighten-1' %>
         | 
| 25 | 
            +
                    </div>
         | 
| 26 | 
            +
                  </div>
         | 
| 27 | 
            +
                <% end  %>
         | 
| 28 | 
            +
              </div>
         | 
| 29 | 
            +
            </div>
         | 
| 30 | 
            +
             | 
    
        data/config/routes.rb
    CHANGED
    
    
    
        data/lib/safety_cone.rb
    CHANGED
    
    
| @@ -1,9 +1,7 @@ | |
| 1 1 | 
             
            module SafetyCone
         | 
| 2 2 | 
             
              # Module for configuring safety measures
         | 
| 3 3 | 
             
              module Configuration
         | 
| 4 | 
            -
                 | 
| 5 | 
            -
             | 
| 6 | 
            -
                attr_accessor :cones, :options, :redis, :auth
         | 
| 4 | 
            +
                attr_accessor :options, :redis, :auth, :paths, :features
         | 
| 7 5 |  | 
| 8 6 | 
             
                # Method add a route or method to be managed by safety cone
         | 
| 9 7 | 
             
                def add(options = {})
         | 
| @@ -11,7 +9,12 @@ module SafetyCone | |
| 11 9 |  | 
| 12 10 | 
             
                  raise(ArgumentError, 'Mandatory param :name missing') unless options[:name]
         | 
| 13 11 |  | 
| 14 | 
            -
                   | 
| 12 | 
            +
                  if options[:feature]
         | 
| 13 | 
            +
                    features << options
         | 
| 14 | 
            +
                    SafetyCone::ViewHelpers.add_method(options[:feature])
         | 
| 15 | 
            +
                  else
         | 
| 16 | 
            +
                    paths[make_key] = options
         | 
| 17 | 
            +
                  end
         | 
| 15 18 | 
             
                end
         | 
| 16 19 |  | 
| 17 20 | 
             
                # Method to generate a key from the options
         | 
| @@ -28,7 +31,8 @@ module SafetyCone | |
| 28 31 |  | 
| 29 32 | 
             
                # Configuration method for Rails initializer
         | 
| 30 33 | 
             
                def configure
         | 
| 31 | 
            -
                  self. | 
| 34 | 
            +
                  self.paths = {}
         | 
| 35 | 
            +
                  self.features = []
         | 
| 32 36 | 
             
                  self.auth = { username: nil, password: nil }
         | 
| 33 37 |  | 
| 34 38 | 
             
                  yield self
         | 
    
        data/lib/safety_cone/engine.rb
    CHANGED
    
    | @@ -2,13 +2,13 @@ module SafetyCone | |
| 2 2 | 
             
              class Engine < ::Rails::Engine
         | 
| 3 3 | 
             
                isolate_namespace SafetyCone
         | 
| 4 4 |  | 
| 5 | 
            -
                initializer  | 
| 5 | 
            +
                initializer 'refinery.assets.precompile' do |app|
         | 
| 6 6 | 
             
                  app.config.assets.precompile += %w(safety_cone/logo.png)
         | 
| 7 7 | 
             
                end
         | 
| 8 8 |  | 
| 9 9 | 
             
                config.generators do |g|
         | 
| 10 | 
            -
                  g.test_framework :rspec, : | 
| 11 | 
            -
                  g.fixture_replacement :factory_girl, : | 
| 10 | 
            +
                  g.test_framework :rspec, fixture: false
         | 
| 11 | 
            +
                  g.fixture_replacement :factory_girl, dir: 'spec/factories'
         | 
| 12 12 | 
             
                  g.assets false
         | 
| 13 13 | 
             
                  g.helper false
         | 
| 14 14 | 
             
                end
         | 
    
        data/lib/safety_cone/filter.rb
    CHANGED
    
    | @@ -24,42 +24,42 @@ module SafetyCone | |
| 24 24 |  | 
| 25 25 | 
             
                private
         | 
| 26 26 |  | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 27 | 
            +
                  # Fetches a configuration based on current request
         | 
| 28 | 
            +
                  def fetch_cone
         | 
| 29 | 
            +
                    paths = SafetyCone.paths
         | 
| 30 30 |  | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 31 | 
            +
                    if path = paths[request_action]
         | 
| 32 | 
            +
                      key = request_action
         | 
| 33 | 
            +
                    elsif cone = paths[request_method]
         | 
| 34 | 
            +
                      key = request_method
         | 
| 35 | 
            +
                    else
         | 
| 36 | 
            +
                      return false
         | 
| 37 | 
            +
                    end
         | 
| 38 38 |  | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 39 | 
            +
                    path = Path.new(key, path)
         | 
| 40 | 
            +
                    path.fetch
         | 
| 41 41 |  | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 42 | 
            +
                    %w[notice block].include?(path.type) ? path : false
         | 
| 43 | 
            +
                  end
         | 
| 44 44 |  | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 45 | 
            +
                  # Method to redirect a request
         | 
| 46 | 
            +
                  def safety_redirect
         | 
| 47 | 
            +
                    request.env['HTTP_REFERER'] || root_path
         | 
| 48 | 
            +
                  end
         | 
| 49 49 |  | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 50 | 
            +
                  # Returns type of notice
         | 
| 51 | 
            +
                  def notice_type(type)
         | 
| 52 | 
            +
                    type == 'notice' ? 'notice' : 'alert'
         | 
| 53 | 
            +
                  end
         | 
| 54 54 |  | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 55 | 
            +
                  # Returns the current request action as a symbol
         | 
| 56 | 
            +
                  def request_method
         | 
| 57 | 
            +
                    request.method.to_sym
         | 
| 58 | 
            +
                  end
         | 
| 59 59 |  | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 60 | 
            +
                  # Returns the current controller_action as a symbol
         | 
| 61 | 
            +
                  def request_action
         | 
| 62 | 
            +
                    "#{controller_name}_#{action_name}".to_sym
         | 
| 63 | 
            +
                  end
         | 
| 64 64 | 
             
              end
         | 
| 65 65 | 
             
            end
         | 
    
        data/lib/safety_cone/version.rb
    CHANGED
    
    
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            module SafetyCone
         | 
| 2 | 
            +
              # Module for Filtering requests and raise notices
         | 
| 3 | 
            +
              # and take measures
         | 
| 4 | 
            +
              module ViewHelpers
         | 
| 5 | 
            +
                def safetycone_notice
         | 
| 6 | 
            +
                  flash[:safetycone_notice]
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def safetycone_alert
         | 
| 10 | 
            +
                  flash[:safetycone_alert]
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def feature?(name)
         | 
| 14 | 
            +
                  redis = SafetyCone.redis
         | 
| 15 | 
            +
                  redis_key = "safety::cone::#{name}"
         | 
| 16 | 
            +
                  value = redis.get(redis_key)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  return true unless value
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  value == '1'
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def self.add_method(name)
         | 
| 24 | 
            +
                  define_method("#{name}?") { feature?(name) }
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ActionView::Base.send :include, SafetyCone::ViewHelpers
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,16 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: safety_cone
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 | 
            +
            - Boost
         | 
| 7 8 | 
             
            - Edwin Rozario
         | 
| 8 | 
            -
            -  | 
| 9 | 
            +
            - yhtut
         | 
| 9 10 | 
             
            autorequire: 
         | 
| 10 11 | 
             
            bindir: bin
         | 
| 11 12 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2017- | 
| 13 | 
            +
            date: 2017-11-16 00:00:00.000000000 Z
         | 
| 13 14 | 
             
            dependencies:
         | 
| 14 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 16 | 
             
              name: rails
         | 
| @@ -173,9 +174,10 @@ dependencies: | |
| 173 174 | 
             
                    version: 2.4.3
         | 
| 174 175 | 
             
            description: |-
         | 
| 175 176 | 
             
              At times we would want to block certain requests.
         | 
| 176 | 
            -
                                 SafetyCone allows this to be  | 
| 177 | 
            +
                                 SafetyCone allows this to be controlled from an interface.
         | 
| 178 | 
            +
                                 It also provides a feature flipper for the views.
         | 
| 177 179 | 
             
            email:
         | 
| 178 | 
            -
            -  | 
| 180 | 
            +
            - info@boost.co.nz
         | 
| 179 181 | 
             
            executables: []
         | 
| 180 182 | 
             
            extensions: []
         | 
| 181 183 | 
             
            extra_rdoc_files: []
         | 
| @@ -189,21 +191,22 @@ files: | |
| 189 191 | 
             
            - app/assets/stylesheets/safety_cone/material.css
         | 
| 190 192 | 
             
            - app/controllers/safety_cone/application_controller.rb
         | 
| 191 193 | 
             
            - app/controllers/safety_cone/cones_controller.rb
         | 
| 194 | 
            +
            - app/controllers/safety_cone/features_controller.rb
         | 
| 195 | 
            +
            - app/controllers/safety_cone/paths_controller.rb
         | 
| 192 196 | 
             
            - app/helpers/safety_cone/application_helper.rb
         | 
| 193 197 | 
             
            - app/helpers/safety_cone/cones_helper.rb
         | 
| 194 198 | 
             
            - app/models/safety_cone/application_record.rb
         | 
| 195 | 
            -
            - app/models/safety_cone/ | 
| 199 | 
            +
            - app/models/safety_cone/path.rb
         | 
| 196 200 | 
             
            - app/views/layouts/safety_cone/application.html.erb
         | 
| 197 | 
            -
            - app/views/safety_cone/cones/edit.html.erb
         | 
| 198 201 | 
             
            - app/views/safety_cone/cones/index.html.erb
         | 
| 199 | 
            -
            -  | 
| 202 | 
            +
            - app/views/safety_cone/paths/edit.html.erb
         | 
| 200 203 | 
             
            - config/routes.rb
         | 
| 201 204 | 
             
            - lib/safety_cone.rb
         | 
| 202 205 | 
             
            - lib/safety_cone/configuration.rb
         | 
| 203 206 | 
             
            - lib/safety_cone/engine.rb
         | 
| 204 207 | 
             
            - lib/safety_cone/filter.rb
         | 
| 205 208 | 
             
            - lib/safety_cone/version.rb
         | 
| 206 | 
            -
            - lib/safety_cone/ | 
| 209 | 
            +
            - lib/safety_cone/view_helpers.rb
         | 
| 207 210 | 
             
            homepage: https://github.com/boost/safety_cone
         | 
| 208 211 | 
             
            licenses:
         | 
| 209 212 | 
             
            - MIT
         | 
| @@ -1,33 +0,0 @@ | |
| 1 | 
            -
            <div class="row">
         | 
| 2 | 
            -
              <div class="col s6 offset-s3">
         | 
| 3 | 
            -
                <h6 class="center"><%= @cone.name %></h6>
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                <div class="card">
         | 
| 6 | 
            -
                  <%= form_for :cone, url: cone_path(@cone.key), method: :PUT do |form| %>
         | 
| 7 | 
            -
                    <div class="row ">
         | 
| 8 | 
            -
                      <div class="input-field group col s12">
         | 
| 9 | 
            -
                        <%= form.text_field :message %>
         | 
| 10 | 
            -
                        <%= form.label :message, 'Message', class: 'input-label'%>
         | 
| 11 | 
            -
                      </div>
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                      <div class="input-field col s12">
         | 
| 14 | 
            -
                        <%= form.radio_button :type, 'notice' %>
         | 
| 15 | 
            -
                        <%= form.label :type_notice, 'Notice' %>
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                        <%= form.radio_button :type, 'block' %>
         | 
| 18 | 
            -
                        <%= form.label :type_block, 'Block' %>
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                        <%= form.radio_button :type, 'disabled' %>
         | 
| 21 | 
            -
                        <%= form.label :type_disabled, 'Disable this Cone' %>
         | 
| 22 | 
            -
                      </div>
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                      <div class="input-field col s12">
         | 
| 25 | 
            -
                        <%= form.submit 'save', class: 'waves-effect waves-light btn' %>
         | 
| 26 | 
            -
                        <%= link_to 'cancel', cones_path, class: 'waves-effect waves-light btn grey lighten-1' %>
         | 
| 27 | 
            -
                      </div>
         | 
| 28 | 
            -
                    </div>
         | 
| 29 | 
            -
                  <% end  %>
         | 
| 30 | 
            -
                </div>
         | 
| 31 | 
            -
             | 
| 32 | 
            -
              </div>
         | 
| 33 | 
            -
            </div>
         | 
    
        data/config/environment.rb
    DELETED
    
    | 
            File without changes
         | 
| @@ -1,15 +0,0 @@ | |
| 1 | 
            -
            module SafetyCone
         | 
| 2 | 
            -
              # Module for Filtering requests and raise notices
         | 
| 3 | 
            -
              # and take measures
         | 
| 4 | 
            -
              module Helper
         | 
| 5 | 
            -
                def safetycone_notice
         | 
| 6 | 
            -
                  flash[:safetycone_notice]
         | 
| 7 | 
            -
                end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                def safetycone_alert
         | 
| 10 | 
            -
                  flash[:safetycone_alert]
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
            end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            ActionView::Base.send :include, SafetyCone::Helper
         |