All Downloads are FREE. Search and download functionalities are using the official Maven repository.

WEB-INF.scalate.errors.500.scaml Maven / Gradle / Ivy

There is a newer version: 1.5.3-scala_2.8.2
Show newest version
-#
-# Copyright (C) 2009-2011 the original author or authors.
-# See the notice.md file distributed with this work for additional
-# information regarding copyright ownership.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
- if ( !engine.isDevelopmentMode )
  .scalate-error-500
    %h1 Server Error: We're sorry, but something went wrong.
    %p We've been notified about this issue and we'll take a look at it shortly.

- else
  - import util.parsing.input.Position
  - import org.fusesource.scalate._
  - import org.fusesource.scalate.console._
  - val consoleHelper = new ConsoleHelper(context)
  - import consoleHelper._
  - response.setContentType("text/html")
  - attributes("layout") = ""
  !!! Basic
  %html(lang="en")
    %head
      %meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
      %meta(name="keywords" content="error")
      %title Unexpected Failure
      %style(type="text/css")
        :plain
          html, body {
              margin: 0;
              padding: 0;
              font-family: Helvetica, Arial, Sans;
              background: #EEEEEE;
          }
          .block {
              padding: 20px;
              border-bottom: 1px solid #aaa;
          }
          #scalate-error .header h1 {
              font-weight: normal;
              font-size: 28px;
              margin: 0;
          }
          #scalate-error .more {
              color: #666;
              font-size: 80%;
              border: none;
          }
          #scalate-error .header {
              background: #fcd2da;
          }
          #scalate-error .header p {
              color: #333;
          }
          #scalate-error .details {
              background: #f6f6f6;
          }
          #scalate-error .details h2 {
              font-weight: normal;
              font-size: 18px;
              margin: 0 0 10px 0;
          }
          #scalate-error .details .lineNumber {
              float: left;
              display: block;
              width: 40px;
              text-align: right;
              margin-right: 10px;
              font-size: 14px;
              font-family: monospace;
              background: #333;
              color: #fff;
          }
          #scalate-error .details .line {
              clear: both;
              color: #333;
              margin-bottom: 1px;
          }
          #scalate-error .details pre {
              font-size: 14px;
              margin: 0;
              overflow-x: hidden;
          }
          #scalate-error .details .error {
              color: #c00 !important;
          }
          #scalate-error .details .error .lineNumber {
              background: #c00;
          }
          #scalate-error .details .errorCol {
              background: #c00;
              color:#fff;
          }
          #scalate-error .details a {
              text-decoration: none;
          }
          #scalate-error .details a:hover * {
              cursor: pointer !important;
          }
          #scalate-error .details a:hover pre {
              background: #FAFFCF !important;
          }

          #scalate-error .details .stacktrace {
              clear: both;
              color: #333;
              margin-bottom: 1px;
              font-size: 10px;
          }

          #scalate-error .nested {
            padding-top:10px;
            padding-left:10px;
          }

          #scalate-error .nested .block {
            padding:10px;
          }
          #scalate-error .nested .header {
            font-size:10px;
          }
          #scalate-error .nested .header h1 {
            font-size:16px;
          }
    %body
      #content
        .wrapper
          -# Wrap in a try catch block so if there is a error on this page it gets logged to the console
          - try
            %link(href={uri("/css/scalate/errors.css")} rel="stylesheet" type="text/css")
  
            - def displayError(file:String, pos:Position, message:String)
              .header.block
                %h1
                  = message

              .details.block
                %h2
                  = editLink(file, pos.line, pos.column)
                    in #{shorten(file)} near line #{pos.line} col #{pos.column}

                - for (s <- lines(file, pos))
                  - val ss = s.style(pos.line)
                  = editLink(file, s.line, (if (pos.line == s.line) pos.column else 1))
                    %div(class=ss)
                      %span.lineNumber
                        = s.line
                      - if (pos.line == s.line)
                        - val (prefix, ch, postfix) = s.splitOnCharacter(pos.column - 1)
                        %pre<
                          &~ prefix
                          %span.errorCol><
                            &~ ch
                          &~ postfix
                      - else
                        %pre<
                          &~ s.source

            - def displayException(e:Throwable)
              .header.block
                %h1
                  = e.getMessage
                %p
                  = e
              .details.block
                - for( stack <- e.getStackTrace )
                  = renderStackTraceElement(stack)
                - if( e.getCause!=null )
                  .nested
                    - displayException(e.getCause)

            #scalate-error
              - exception match
                - case e:InvalidSyntaxException =>
                  - displayError( e.template, e.pos, e.brief)

                - case e:CompilerException =>
                  - for ( error <- e.errors )
                    - displayError(error.file, error.pos, error.message)
                    - val o = error.original
                    - if (o != null)
                      .section.block
                        = editLink(o.file, o.pos.line, o.pos.column)
                          from generated #{shorten(o.file)} near line #{o.pos.line} col #{o.pos.line}

                - case e:Throwable =>
                  - displayException(e)

                - case u =>
                  .header.block
                    %h1
                      = errorMessage
                    %p
                      = u
          - catch
            - case e:Throwable=>
            - e.printStackTrace
            -# Fallback to a simple rendering of the error message
            .header.block
              %h1
                = errorMessage





© 2015 - 2025 Weber Informatics LLC | Privacy Policy