Provided by: libjifty-perl_1.10518+dfsg-3ubuntu1_all bug

NAME

       Jifty::Manual::UsingCSSandJS - Using CSS and JavaScript

DESCRIPTION

       Jifty comes bundled with a series of separately developed JavaScript libraries as well as a set of CSS
       definitions that both allow Jifty to functionally and beautifully work out of the box. This document
       describes the mechanisms behind the scenes as well as some of the details inside the included files.

BUILT-IN FEATURES

       Both, CSS and JavaScript (further abbreviated as "JS") files typically reside in the "share/web/static"
       directory of Jifty, keeping separate "css" and "js" subdirectories for each of both sets of files. When
       using Jifty without any interference into these files, all of those files will get loaded from the Jifty-
       provided directories.

       In both cases, there are hooks for expansion by keeping empty but present files in the "css" and "js"
       directories. By simply creating and populating these files inside the "share/web/static/css" and
       "share/web/static/js" directories brings the predefined hooks to work.

       Also there is a big difference of the whole operation between an application running in "DevelMode" or a
       productive application. In DevelMode, every single CSS and JS file will get included into every single
       template page being rendered. On the other hand, a productive application will merge all CSS and JS
       definitions upon the first request and will only include one file each containing all CSS and JS
       definitions in a single request.

USING AND EXPANDING CSS

   Assembly of CSS definitions
       When Jifty assembles all CSS definitions (which is internally done inside Jifty::Web by the method
       "include_css"), a single file, "main.css" is included into the generated HTML code of the current page.
       This file consists of a series of @import directives that reference every single CSS file to get used.

   Expansion of CSS definitions
       Jifty maintains two initially empty files, "app-base.css" and "app.css" that may get "overloaded" by
       simply providing these files in an application's "share/web/static/css" directory.

       These two files will get included in different order, "app-base.css" being the very first and "app.css"
       getting included very late in the CSS construction process.

       This means that general definitions that should apply to all subsequently encountered styles could easily
       get done in "app-base.css" whereas individual redefinitions, expansions or your application's own
       definitions could go into "app.css".

   Jifty's own definitions
       Jifty provides a series of definitions that are responsible for a good look without any modification.
       Please note that not all of the used CSS classes are already defined, but they will provide a hook for
       modification of the general look. Some of the styles are listed below.

       form_errors, error
           Error messages encountered during validation are displayed inside a "<div>" tag of class
           "form_errors" which initially is not yet defined. Every single error message is marked with a class
           "error".

       hints, warning, error
           These classes are used for displaying additional information for form fields.

       form_field, mandatory, argument-$name
           Every form field including its label is packed inside a "<div>" tag with these classes (mandatory
           only if the field is mandatory, of course), where $name is the field's name.

       preamble
           This section is a "<span>" tag filled with a form field's preamble content that could contain
           additional instructions for the user. The content may be set by the "preamble" accessor method that
           is available for every "Jifty::Web::Form::Field" and its successors.

       widget, button, button_as_link, combobox, combo-text, combo-button, combo-list, date, label, password
       submit_button, reset, text, hidden, ajaxvalidation, ajaxcanonicalization, ajaxautocompletes
           These class names are used depending on the type of widget getting rendered.

       autocomplete
           used for the autocomplete div.

       toplevel, menu, context_menu, submenu, title, expand
           These classes are used in navigation bars.

       jifty, results, messages
           These three CSS classes are used to surround a message block displaying an action's messages after
           having run an action.

       message, error, $moniker
           Every single message that is displayed in an action's result box is marked with the message's type
           plus the action's moniker as a CSS class name.

USING AND EXPANDING JAVASCRIPT

       Jifty comes bundled with a series of separately developed JavaScript libraries, like

       "jQuery" <http://jquery.com/>
           jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle
           events, perform animations, and add Ajax interactions to your web pages.

       "JSON" <http://json.org>
           Hereby, major support for encoding and decoding data into the JSON data format (similar to "YAML") is
           provided.

       "behaviour.js"
           With "behaviour.js", intelligent JavaScript handlers can be defined.

   Assembly of JS definitions
       Jifty maintains a complete list of JS files to include. This list may be retrieved or set by the accessor
       "Jifty->web->javascript_libs".  There should, However, rarely arise a situation to do that, because Jifty
       has already reserved two files that may get added to your application:

       app.js
           Initially empty; put all JS functions you need to define here.

       app_behaviour.js
           Reserved for defining behaviors for DOM objects using the "behaviour.js" library.

       The assembly process of all JS definitions is done in Jifty::Web by the method "include_javascript".

SEE ALSO

       Jifty::Web