From 19e5130441910d6a5cc961724eef57af5ff82bfd Mon Sep 17 00:00:00 2001 From: Denis Flaven Date: Sat, 20 Jun 2015 15:02:24 +0000 Subject: [PATCH] New look for iTop ! SVN:trunk[3601] --- application/displayblock.class.inc.php | 2 +- application/itopwebpage.class.inc.php | 28 +- application/nicewebpage.class.inc.php | 2 +- css/css-variables.scss | 6 + css/light-grey.css | 3370 ++++++++++------- css/light-grey.scss | 1439 +++++++ .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 418 -> 418 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 312 -> 312 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 205 -> 205 bytes .../images/ui-icons_222222_256x240.png | Bin 6922 -> 6922 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 4549 -> 4549 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6299 -> 6299 bytes css/ui-lightness/jquery-ui-1.10.3.custom.css | 1178 ++++++ .../jquery-ui-1.10.3.custom.min.css | 10 +- images/Resize of Resize of erwanIncidents.jpg | Bin 559 -> 0 bytes images/Resize of Resize of erwanNetwork.jpg | Bin 764 -> 0 bytes images/Resize of Resize of erwanPC.jpg | Bin 866 -> 0 bytes images/Resize of erwanBuidling.jpg | Bin 976 -> 0 bytes images/Resize of erwanBuilding.jpg | Bin 853 -> 0 bytes images/Resize of erwanDocument.jpg | Bin 883 -> 0 bytes images/Resize of erwanIncidents.jpg | Bin 859 -> 0 bytes images/Resize of erwanNetwork.jpg | Bin 1317 -> 0 bytes images/Resize of erwanPC.jpg | Bin 823 -> 0 bytes images/WanLinks.jpg | Bin 3908 -> 0 bytes images/actions_bkg.png | Bin 271 -> 160 bytes images/actions_left.png | Bin 205 -> 117 bytes images/actions_right.png | Bin 314 -> 240 bytes images/banner-search.png | Bin 562 -> 479 bytes images/blue-corner.gif | Bin 309 -> 0 bytes images/bomb.jpg | Bin 4145 -> 0 bytes images/bomb.png | Bin 8543 -> 0 bytes images/connect_to_network.png | Bin 15254 -> 0 bytes images/contacts.gif | Bin 1057 -> 0 bytes images/contacts_big.gif | Bin 4586 -> 0 bytes images/device.gif | Bin 1070 -> 0 bytes images/devices_big.gif | Bin 4142 -> 0 bytes images/documents.jpg | Bin 7871 -> 0 bytes images/erwanBuilding.jpg | Bin 848 -> 0 bytes images/erwanContracts.jpg | Bin 1830 -> 0 bytes images/erwanContracts2.jpg | Bin 3298 -> 0 bytes images/erwanContracts3.jpg | Bin 2609 -> 0 bytes images/erwanDocument.jpg | Bin 887 -> 0 bytes images/erwanIncidents.jpg | Bin 861 -> 0 bytes images/erwanMobilePhones.jpg | Bin 2569 -> 0 bytes images/erwanNetwork.jpg | Bin 766 -> 0 bytes images/erwanPC.jpg | Bin 828 -> 0 bytes images/erwanServices.jpg | Bin 2839 -> 0 bytes images/erwanTask.jpg | Bin 2914 -> 0 bytes images/erwanTools.jpg | Bin 2247 -> 0 bytes images/hgrabber2.gif | Bin 217 -> 0 bytes images/hgrabber2_active.gif | Bin 220 -> 0 bytes images/home.gif | Bin 988 -> 0 bytes images/itop-logo-external.png | Bin 4033 -> 3243 bytes images/itop-logo.png | Bin 4033 -> 3243 bytes images/logo-combodo.png | Bin 7369 -> 5462 bytes images/mini_add.gif | Bin 146 -> 82 bytes images/mini_search.gif | Bin 148 -> 99 bytes images/mini_tree.gif | Bin 140 -> 74 bytes images/search-top-left-corner.png | Bin 287 -> 0 bytes images/searchBtn.png | Bin 1300 -> 1289 bytes images/software.jpg | Bin 2186 -> 0 bytes images/splitter-bkg.png | Bin 245 -> 0 bytes images/splitter-top-corner.png | Bin 881 -> 0 bytes images/splitter-top.png | Bin 169 -> 0 bytes images/std_view.gif | Bin 571 -> 0 bytes images/tab-topleft.gif | Bin 46 -> 0 bytes images/tab.png | Bin 593 -> 0 bytes images/toolkit_menu.png | Bin 779 -> 430 bytes images/top-left-bkg.png | Bin 641 -> 0 bytes images/wan-mid.gif | Bin 547 -> 0 bytes images/wan.gif | Bin 262 -> 0 bytes images/wizActiveStepLeft.gif | Bin 362 -> 0 bytes images/wizActiveStepRight.gif | Bin 501 -> 0 bytes images/wizArrow.gif | Bin 155 -> 0 bytes images/wizStepLeft.gif | Bin 217 -> 0 bytes images/wizStepRight.gif | Bin 425 -> 0 bytes js/extkeywidget.js | 1 + js/linksdirectwidget.js | 1 + js/linkswidget.js | 1 + js/utils.js | 50 + lib/sass/Phamlp.php | 72 + lib/sass/PhamlpException.php | 31 + lib/sass/haml/HamlException.php | 29 + lib/sass/haml/HamlHelpers.php | 199 + lib/sass/haml/HamlParser.php | 1249 ++++++ lib/sass/haml/filters/HamlBaseFilter.php | 30 + lib/sass/haml/filters/HamlCdataFilter.php | 29 + lib/sass/haml/filters/HamlCssFilter.php | 30 + lib/sass/haml/filters/HamlEscapedFilter.php | 32 + .../haml/filters/HamlJavascriptFilter.php | 31 + lib/sass/haml/filters/HamlPhpFilter.php | 27 + lib/sass/haml/filters/HamlPlainFilter.php | 28 + lib/sass/haml/filters/HamlPreserveFilter.php | 29 + lib/sass/haml/filters/HamlSassFilter.php | 37 + lib/sass/haml/filters/HamlScssFilter.php | 37 + lib/sass/haml/filters/_HamlMarkdownFilter.php | 50 + lib/sass/haml/filters/_HamlTextileFilter.php | 50 + lib/sass/haml/messages/_i18n.php | 32 + lib/sass/haml/messages/de.php | 32 + lib/sass/haml/messages/fr.php | 32 + .../haml/renderers/HamlCompactRenderer.php | 32 + .../haml/renderers/HamlCompressedRenderer.php | 48 + .../haml/renderers/HamlExpandedRenderer.php | 58 + .../haml/renderers/HamlNestedRenderer.php | 77 + lib/sass/haml/renderers/HamlRenderer.php | 137 + lib/sass/haml/tree/HamlCodeBlockNode.php | 58 + lib/sass/haml/tree/HamlCommentNode.php | 41 + lib/sass/haml/tree/HamlDoctypeNode.php | 27 + lib/sass/haml/tree/HamlElementNode.php | 52 + lib/sass/haml/tree/HamlFilterNode.php | 50 + lib/sass/haml/tree/HamlHelperNode.php | 73 + lib/sass/haml/tree/HamlNode.php | 253 ++ lib/sass/haml/tree/HamlNodeExceptions.php | 19 + lib/sass/haml/tree/HamlRootNode.php | 58 + lib/sass/sass/SassException.php | 29 + lib/sass/sass/SassFile.php | 164 + lib/sass/sass/SassParser.php | 848 +++++ lib/sass/sass/extensions/compass/config.php | 65 + .../blueprint/stylesheets/_blueprint.scss | 47 + .../stylesheets/blueprint/_buttons.scss | 101 + .../stylesheets/blueprint/_colors.scss | 32 + .../stylesheets/blueprint/_debug.scss | 11 + .../stylesheets/blueprint/_fancy-type.scss | 86 + .../stylesheets/blueprint/_form.scss | 68 + .../stylesheets/blueprint/_grid.scss | 249 ++ .../blueprint/stylesheets/blueprint/_ie.scss | 109 + .../stylesheets/blueprint/_interaction.scss | 57 + .../stylesheets/blueprint/_link-icons.scss | 37 + .../stylesheets/blueprint/_liquid.scss | 147 + .../stylesheets/blueprint/_print.scss | 93 + .../stylesheets/blueprint/_reset.scss | 3 + .../blueprint/stylesheets/blueprint/_rtl.scss | 133 + .../stylesheets/blueprint/_scaffolding.scss | 54 + .../stylesheets/blueprint/_typography.scss | 104 + .../stylesheets/blueprint/_utilities.scss | 37 + .../blueprint/reset/_utilities.scss | 58 + .../blueprint/templates/basic/grid.png | Bin 0 -> 206 bytes .../blueprint/templates/basic/ie.sass | 4 + .../blueprint/templates/basic/manifest.rb | 30 + .../templates/basic/partials/_base.sass | 10 + .../blueprint/templates/basic/print.sass | 4 + .../blueprint/templates/basic/screen.sass | 12 + .../blueprint/templates/buttons/buttons.sass | 49 + .../templates/buttons/buttons/cross.png | Bin 0 -> 655 bytes .../templates/buttons/buttons/key.png | Bin 0 -> 455 bytes .../templates/buttons/buttons/tick.png | Bin 0 -> 537 bytes .../blueprint/templates/buttons/manifest.rb | 17 + .../templates/link_icons/link_icons.sass | 13 + .../templates/link_icons/link_icons/doc.png | Bin 0 -> 777 bytes .../templates/link_icons/link_icons/email.png | Bin 0 -> 641 bytes .../link_icons/link_icons/external.png | Bin 0 -> 46848 bytes .../templates/link_icons/link_icons/feed.png | Bin 0 -> 691 bytes .../templates/link_icons/link_icons/im.png | Bin 0 -> 741 bytes .../templates/link_icons/link_icons/pdf.png | Bin 0 -> 591 bytes .../link_icons/link_icons/visited.png | Bin 0 -> 46990 bytes .../templates/link_icons/link_icons/xls.png | Bin 0 -> 663 bytes .../templates/link_icons/manifest.rb | 23 + .../blueprint/templates/project/grid.png | Bin 0 -> 206 bytes .../blueprint/templates/project/ie.sass | 16 + .../blueprint/templates/project/manifest.rb | 30 + .../templates/project/partials/_base.sass | 11 + .../blueprint/templates/project/print.sass | 8 + .../blueprint/templates/project/screen.sass | 45 + .../blueprint/templates/semantic/grid.png | Bin 0 -> 206 bytes .../blueprint/templates/semantic/ie.sass | 16 + .../blueprint/templates/semantic/manifest.rb | 33 + .../templates/semantic/partials/_base.sass | 10 + .../templates/semantic/partials/_form.sass | 6 + .../templates/semantic/partials/_page.sass | 18 + .../templates/semantic/partials/_two_col.sass | 38 + .../blueprint/templates/semantic/print.sass | 5 + .../blueprint/templates/semantic/screen.sass | 14 + .../compass/stylesheets/_compass.scss | 2 + .../compass/stylesheets/compass/_css3.scss | 15 + .../compass/stylesheets/compass/_layout.scss | 1 + .../compass/stylesheets/compass/_reset.scss | 3 + .../stylesheets/compass/_utilities.scss | 6 + .../compass/css3/_background-clip.scss | 43 + .../compass/css3/_background-origin.scss | 42 + .../compass/css3/_background-size.scss | 14 + .../compass/css3/_border-radius.scss | 135 + .../stylesheets/compass/css3/_box-shadow.scss | 50 + .../stylesheets/compass/css3/_box-sizing.scss | 13 + .../stylesheets/compass/css3/_box.scss | 112 + .../stylesheets/compass/css3/_columns.scss | 55 + .../stylesheets/compass/css3/_font-face.scss | 33 + .../stylesheets/compass/css3/_gradient.scss | 82 + .../compass/css3/_inline-block.scss | 12 + .../stylesheets/compass/css3/_opacity.scss | 27 + .../stylesheets/compass/css3/_shared.scss | 47 + .../compass/css3/_text-shadow.scss | 25 + .../stylesheets/compass/css3/_transform.scss | 85 + .../stylesheets/compass/css3/_transition.scss | 85 + .../compass/layout/_sticky-footer.scss | 23 + .../stylesheets/compass/reset/_utilities.scss | 133 + .../compass/utilities/_general.scss | 6 + .../stylesheets/compass/utilities/_links.scss | 3 + .../stylesheets/compass/utilities/_lists.scss | 4 + .../stylesheets/compass/utilities/_print.scss | 17 + .../compass/utilities/_sprites.scss | 1 + .../compass/utilities/_tables.scss | 3 + .../stylesheets/compass/utilities/_text.scss | 3 + .../compass/utilities/general/_clearfix.scss | 31 + .../compass/utilities/general/_float.scss | 15 + .../compass/utilities/general/_hacks.scss | 35 + .../compass/utilities/general/_min.scss | 16 + .../compass/utilities/general/_reset.scss | 2 + .../compass/utilities/general/_tabs.scss | 1 + .../compass/utilities/general/_tag-cloud.scss | 18 + .../compass/utilities/links/_hover-link.scss | 5 + .../compass/utilities/links/_link-colors.scss | 28 + .../utilities/links/_unstyled-link.scss | 7 + .../compass/utilities/lists/_bullets.scss | 34 + .../utilities/lists/_horizontal-list.scss | 52 + .../utilities/lists/_inline-block-list.scss | 47 + .../compass/utilities/lists/_inline-list.scss | 29 + .../utilities/sprites/_sprite-img.scss | 56 + .../tables/_alternating-rows-and-columns.scss | 20 + .../compass/utilities/tables/_borders.scss | 27 + .../utilities/tables/_scaffolding.scss | 9 + .../compass/utilities/text/_ellipsis.scss | 25 + .../compass/utilities/text/_nowrap.scss | 2 + .../compass/utilities/text/_replacement.scss | 34 + .../compass/templates/ellipsis/ellipsis.sass | 9 + .../compass/templates/ellipsis/manifest.rb | 27 + .../templates/ellipsis/xml/ellipsis.xml | 14 + .../compass/templates/extension/manifest.rb | 20 + .../templates/extension/stylesheets/main.sass | 1 + .../extension/templates/project/manifest.rb | 2 + .../extension/templates/project/screen.sass | 2 + .../compass/templates/project/USAGE.markdown | 32 + .../compass/templates/project/ie.sass | 6 + .../compass/templates/project/manifest.rb | 4 + .../compass/templates/project/print.sass | 6 + .../compass/templates/project/screen.sass | 7 + .../compass/functions/colourStops.php | 268 ++ .../compass/functions/constants.php | 44 + .../compass/functions/fontFiles.php | 30 + .../compass/functions/imageSize.php | 39 + .../compass/functions/inlineData.php | 84 + .../extensions/compass/functions/lists.php | 47 + .../compass/functions/selectors.php | 128 + .../extensions/compass/functions/urls.php | 143 + .../compass/stylesheets/_compass.scss | 2 + .../compass/stylesheets/compass/_css3.scss | 15 + .../compass/stylesheets/compass/_layout.scss | 1 + .../compass/stylesheets/compass/_reset.scss | 3 + .../stylesheets/compass/_utilities.scss | 6 + .../compass/css3/_background-clip.scss | 43 + .../compass/css3/_background-origin.scss | 42 + .../compass/css3/_background-size.scss | 14 + .../compass/css3/_border-radius.scss | 135 + .../stylesheets/compass/css3/_box-shadow.scss | 50 + .../stylesheets/compass/css3/_box-sizing.scss | 13 + .../stylesheets/compass/css3/_box.scss | 112 + .../stylesheets/compass/css3/_columns.scss | 55 + .../stylesheets/compass/css3/_font-face.scss | 33 + .../stylesheets/compass/css3/_gradient.scss | 96 + .../compass/css3/_inline-block.scss | 12 + .../stylesheets/compass/css3/_opacity.scss | 27 + .../stylesheets/compass/css3/_shared.scss | 47 + .../compass/css3/_text-shadow.scss | 25 + .../stylesheets/compass/css3/_transform.scss | 85 + .../stylesheets/compass/css3/_transition.scss | 85 + .../compass/layout/_sticky-footer.scss | 23 + .../stylesheets/compass/reset/_utilities.scss | 133 + .../compass/utilities/_general.scss | 6 + .../stylesheets/compass/utilities/_links.scss | 3 + .../stylesheets/compass/utilities/_lists.scss | 4 + .../stylesheets/compass/utilities/_print.scss | 17 + .../compass/utilities/_sprites.scss | 1 + .../compass/utilities/_tables.scss | 3 + .../stylesheets/compass/utilities/_text.scss | 3 + .../compass/utilities/general/_clearfix.scss | 31 + .../compass/utilities/general/_float.scss | 15 + .../compass/utilities/general/_hacks.scss | 35 + .../compass/utilities/general/_min.scss | 16 + .../compass/utilities/general/_reset.scss | 2 + .../compass/utilities/general/_tabs.scss | 1 + .../compass/utilities/general/_tag-cloud.scss | 18 + .../compass/utilities/links/_hover-link.scss | 5 + .../compass/utilities/links/_link-colors.scss | 28 + .../utilities/links/_unstyled-link.scss | 7 + .../compass/utilities/lists/_bullets.scss | 34 + .../utilities/lists/_horizontal-list.scss | 52 + .../utilities/lists/_inline-block-list.scss | 47 + .../compass/utilities/lists/_inline-list.scss | 29 + .../utilities/sprites/_sprite-img.scss | 56 + .../tables/_alternating-rows-and-columns.scss | 20 + .../compass/utilities/tables/_borders.scss | 27 + .../utilities/tables/_scaffolding.scss | 9 + .../compass/utilities/text/_ellipsis.scss | 25 + .../compass/utilities/text/_nowrap.scss | 2 + .../compass/utilities/text/_replacement.scss | 34 + lib/sass/sass/messages/_i18n.php | 122 + lib/sass/sass/messages/de.php | 70 + lib/sass/sass/messages/fr.php | 70 + .../sass/renderers/SassCompactRenderer.php | 130 + .../sass/renderers/SassCompressedRenderer.php | 102 + .../sass/renderers/SassExpandedRenderer.php | 62 + .../sass/renderers/SassNestedRenderer.php | 61 + lib/sass/sass/renderers/SassRenderer.php | 51 + .../5a29c145af8e84ec046aa4b4987c92ab.sassc | Bin 0 -> 5026 bytes .../e5cb48e12f2063f33b9dfccd8d64b37f.sassc | Bin 0 -> 465086 bytes .../f75cdbcea8034badbb1b7f8097fcb138.sassc | Bin 0 -> 6387 bytes .../f8ba41317625dbb0d79325e5bdc85585.sassc | Bin 0 -> 470217 bytes lib/sass/sass/script/SassScriptFunction.php | 169 + lib/sass/sass/script/SassScriptFunctions.php | 751 ++++ lib/sass/sass/script/SassScriptLexer.php | 114 + lib/sass/sass/script/SassScriptOperation.php | 151 + lib/sass/sass/script/SassScriptParser.php | 192 + .../script/SassScriptParserExceptions.php | 40 + lib/sass/sass/script/SassScriptVariable.php | 57 + lib/sass/sass/script/literals/SassBoolean.php | 67 + lib/sass/sass/script/literals/SassColour.php | 886 +++++ lib/sass/sass/script/literals/SassLiteral.php | 359 ++ .../script/literals/SassLiteralExceptions.php | 47 + lib/sass/sass/script/literals/SassNumber.php | 503 +++ lib/sass/sass/script/literals/SassString.php | 106 + lib/sass/sass/tree/SassCommentNode.php | 64 + lib/sass/sass/tree/SassContext.php | 120 + lib/sass/sass/tree/SassDebugNode.php | 84 + lib/sass/sass/tree/SassDirectiveNode.php | 76 + lib/sass/sass/tree/SassElseNode.php | 28 + lib/sass/sass/tree/SassExtendNode.php | 47 + lib/sass/sass/tree/SassForNode.php | 99 + lib/sass/sass/tree/SassIfNode.php | 95 + lib/sass/sass/tree/SassImportNode.php | 69 + .../sass/tree/SassMixinDefinitionNode.php | 88 + lib/sass/sass/tree/SassMixinNode.php | 91 + lib/sass/sass/tree/SassNode.php | 342 ++ lib/sass/sass/tree/SassNodeExceptions.php | 117 + lib/sass/sass/tree/SassPropertyNode.php | 239 ++ lib/sass/sass/tree/SassRootNode.php | 100 + lib/sass/sass/tree/SassRuleNode.php | 337 ++ lib/sass/sass/tree/SassVariableNode.php | 90 + lib/sass/sass/tree/SassWhileNode.php | 64 + portal/index.php | 32 +- 338 files changed, 21017 insertions(+), 1449 deletions(-) create mode 100644 css/css-variables.scss create mode 100644 css/light-grey.scss create mode 100755 css/ui-lightness/jquery-ui-1.10.3.custom.css delete mode 100644 images/Resize of Resize of erwanIncidents.jpg delete mode 100644 images/Resize of Resize of erwanNetwork.jpg delete mode 100644 images/Resize of Resize of erwanPC.jpg delete mode 100644 images/Resize of erwanBuidling.jpg delete mode 100644 images/Resize of erwanBuilding.jpg delete mode 100644 images/Resize of erwanDocument.jpg delete mode 100644 images/Resize of erwanIncidents.jpg delete mode 100644 images/Resize of erwanNetwork.jpg delete mode 100644 images/Resize of erwanPC.jpg delete mode 100644 images/WanLinks.jpg delete mode 100644 images/blue-corner.gif delete mode 100644 images/bomb.jpg delete mode 100644 images/bomb.png delete mode 100644 images/connect_to_network.png delete mode 100644 images/contacts.gif delete mode 100644 images/contacts_big.gif delete mode 100644 images/device.gif delete mode 100644 images/devices_big.gif delete mode 100644 images/documents.jpg delete mode 100644 images/erwanBuilding.jpg delete mode 100644 images/erwanContracts.jpg delete mode 100644 images/erwanContracts2.jpg delete mode 100644 images/erwanContracts3.jpg delete mode 100644 images/erwanDocument.jpg delete mode 100644 images/erwanIncidents.jpg delete mode 100644 images/erwanMobilePhones.jpg delete mode 100644 images/erwanNetwork.jpg delete mode 100644 images/erwanPC.jpg delete mode 100644 images/erwanServices.jpg delete mode 100644 images/erwanTask.jpg delete mode 100644 images/erwanTools.jpg delete mode 100644 images/hgrabber2.gif delete mode 100644 images/hgrabber2_active.gif delete mode 100644 images/home.gif delete mode 100755 images/search-top-left-corner.png delete mode 100644 images/software.jpg delete mode 100755 images/splitter-bkg.png delete mode 100755 images/splitter-top-corner.png delete mode 100755 images/splitter-top.png delete mode 100644 images/std_view.gif delete mode 100644 images/tab-topleft.gif delete mode 100644 images/tab.png delete mode 100755 images/top-left-bkg.png delete mode 100644 images/wan-mid.gif delete mode 100644 images/wan.gif delete mode 100644 images/wizActiveStepLeft.gif delete mode 100644 images/wizActiveStepRight.gif delete mode 100644 images/wizArrow.gif delete mode 100644 images/wizStepLeft.gif delete mode 100644 images/wizStepRight.gif create mode 100644 lib/sass/Phamlp.php create mode 100644 lib/sass/PhamlpException.php create mode 100644 lib/sass/haml/HamlException.php create mode 100644 lib/sass/haml/HamlHelpers.php create mode 100644 lib/sass/haml/HamlParser.php create mode 100644 lib/sass/haml/filters/HamlBaseFilter.php create mode 100644 lib/sass/haml/filters/HamlCdataFilter.php create mode 100644 lib/sass/haml/filters/HamlCssFilter.php create mode 100644 lib/sass/haml/filters/HamlEscapedFilter.php create mode 100644 lib/sass/haml/filters/HamlJavascriptFilter.php create mode 100644 lib/sass/haml/filters/HamlPhpFilter.php create mode 100644 lib/sass/haml/filters/HamlPlainFilter.php create mode 100644 lib/sass/haml/filters/HamlPreserveFilter.php create mode 100644 lib/sass/haml/filters/HamlSassFilter.php create mode 100644 lib/sass/haml/filters/HamlScssFilter.php create mode 100644 lib/sass/haml/filters/_HamlMarkdownFilter.php create mode 100644 lib/sass/haml/filters/_HamlTextileFilter.php create mode 100644 lib/sass/haml/messages/_i18n.php create mode 100644 lib/sass/haml/messages/de.php create mode 100644 lib/sass/haml/messages/fr.php create mode 100644 lib/sass/haml/renderers/HamlCompactRenderer.php create mode 100644 lib/sass/haml/renderers/HamlCompressedRenderer.php create mode 100644 lib/sass/haml/renderers/HamlExpandedRenderer.php create mode 100644 lib/sass/haml/renderers/HamlNestedRenderer.php create mode 100644 lib/sass/haml/renderers/HamlRenderer.php create mode 100644 lib/sass/haml/tree/HamlCodeBlockNode.php create mode 100644 lib/sass/haml/tree/HamlCommentNode.php create mode 100644 lib/sass/haml/tree/HamlDoctypeNode.php create mode 100644 lib/sass/haml/tree/HamlElementNode.php create mode 100644 lib/sass/haml/tree/HamlFilterNode.php create mode 100644 lib/sass/haml/tree/HamlHelperNode.php create mode 100644 lib/sass/haml/tree/HamlNode.php create mode 100644 lib/sass/haml/tree/HamlNodeExceptions.php create mode 100644 lib/sass/haml/tree/HamlRootNode.php create mode 100644 lib/sass/sass/SassException.php create mode 100644 lib/sass/sass/SassFile.php create mode 100644 lib/sass/sass/SassParser.php create mode 100644 lib/sass/sass/extensions/compass/config.php create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/grid.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons/cross.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons/key.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons/tick.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/doc.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/email.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/external.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/feed.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/im.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/pdf.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/visited.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/link_icons/xls.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/link_icons/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/project/grid.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/project/ie.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/project/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/project/partials/_base.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/project/print.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/project/screen.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/grid.png create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/ie.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_base.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_form.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_page.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/partials/_two_col.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/print.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/blueprint/templates/semantic/screen.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/_compass.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/_css3.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/_layout.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/_reset.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/_utilities.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_background-clip.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_background-origin.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_background-size.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_border-radius.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_box-sizing.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_box.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_columns.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_font-face.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_gradient.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_inline-block.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_opacity.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_shared.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_transform.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/css3/_transition.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/reset/_utilities.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_general.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_links.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_lists.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_print.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_sprites.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_tables.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/_text.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_float.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_hacks.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_min.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_reset.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_tabs.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/general/_tag-cloud.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/tables/_borders.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/ellipsis/ellipsis.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/ellipsis/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/ellipsis/xml/ellipsis.xml create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/extension/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/extension/stylesheets/main.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/extension/templates/project/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/extension/templates/project/screen.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/project/USAGE.markdown create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/project/ie.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/project/manifest.rb create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/project/print.sass create mode 100644 lib/sass/sass/extensions/compass/frameworks/compass/templates/project/screen.sass create mode 100644 lib/sass/sass/extensions/compass/functions/colourStops.php create mode 100644 lib/sass/sass/extensions/compass/functions/constants.php create mode 100644 lib/sass/sass/extensions/compass/functions/fontFiles.php create mode 100644 lib/sass/sass/extensions/compass/functions/imageSize.php create mode 100644 lib/sass/sass/extensions/compass/functions/inlineData.php create mode 100644 lib/sass/sass/extensions/compass/functions/lists.php create mode 100644 lib/sass/sass/extensions/compass/functions/selectors.php create mode 100644 lib/sass/sass/extensions/compass/functions/urls.php create mode 100644 lib/sass/sass/extensions/compass/stylesheets/_compass.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/_css3.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/_layout.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/_reset.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/_utilities.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_background-clip.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_background-origin.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_background-size.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_border-radius.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_box-shadow.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_box-sizing.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_box.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_columns.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_font-face.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_gradient.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_inline-block.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_opacity.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_shared.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_text-shadow.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_transform.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/css3/_transition.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/layout/_sticky-footer.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/reset/_utilities.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/_general.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/_links.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/_lists.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/_print.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/_sprites.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/_tables.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/_text.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/general/_clearfix.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/general/_float.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/general/_hacks.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/general/_min.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/general/_reset.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/general/_tabs.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/general/_tag-cloud.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/links/_hover-link.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/links/_link-colors.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/links/_unstyled-link.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/lists/_bullets.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/lists/_inline-list.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/tables/_borders.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/tables/_scaffolding.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/text/_ellipsis.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/text/_nowrap.scss create mode 100644 lib/sass/sass/extensions/compass/stylesheets/compass/utilities/text/_replacement.scss create mode 100644 lib/sass/sass/messages/_i18n.php create mode 100644 lib/sass/sass/messages/de.php create mode 100644 lib/sass/sass/messages/fr.php create mode 100644 lib/sass/sass/renderers/SassCompactRenderer.php create mode 100644 lib/sass/sass/renderers/SassCompressedRenderer.php create mode 100644 lib/sass/sass/renderers/SassExpandedRenderer.php create mode 100644 lib/sass/sass/renderers/SassNestedRenderer.php create mode 100644 lib/sass/sass/renderers/SassRenderer.php create mode 100644 lib/sass/sass/sass-cache/5a29c145af8e84ec046aa4b4987c92ab.sassc create mode 100644 lib/sass/sass/sass-cache/e5cb48e12f2063f33b9dfccd8d64b37f.sassc create mode 100644 lib/sass/sass/sass-cache/f75cdbcea8034badbb1b7f8097fcb138.sassc create mode 100644 lib/sass/sass/sass-cache/f8ba41317625dbb0d79325e5bdc85585.sassc create mode 100644 lib/sass/sass/script/SassScriptFunction.php create mode 100644 lib/sass/sass/script/SassScriptFunctions.php create mode 100644 lib/sass/sass/script/SassScriptLexer.php create mode 100644 lib/sass/sass/script/SassScriptOperation.php create mode 100644 lib/sass/sass/script/SassScriptParser.php create mode 100644 lib/sass/sass/script/SassScriptParserExceptions.php create mode 100644 lib/sass/sass/script/SassScriptVariable.php create mode 100644 lib/sass/sass/script/literals/SassBoolean.php create mode 100644 lib/sass/sass/script/literals/SassColour.php create mode 100644 lib/sass/sass/script/literals/SassLiteral.php create mode 100644 lib/sass/sass/script/literals/SassLiteralExceptions.php create mode 100644 lib/sass/sass/script/literals/SassNumber.php create mode 100644 lib/sass/sass/script/literals/SassString.php create mode 100644 lib/sass/sass/tree/SassCommentNode.php create mode 100644 lib/sass/sass/tree/SassContext.php create mode 100644 lib/sass/sass/tree/SassDebugNode.php create mode 100644 lib/sass/sass/tree/SassDirectiveNode.php create mode 100644 lib/sass/sass/tree/SassElseNode.php create mode 100644 lib/sass/sass/tree/SassExtendNode.php create mode 100644 lib/sass/sass/tree/SassForNode.php create mode 100644 lib/sass/sass/tree/SassIfNode.php create mode 100644 lib/sass/sass/tree/SassImportNode.php create mode 100644 lib/sass/sass/tree/SassMixinDefinitionNode.php create mode 100644 lib/sass/sass/tree/SassMixinNode.php create mode 100644 lib/sass/sass/tree/SassNode.php create mode 100644 lib/sass/sass/tree/SassNodeExceptions.php create mode 100644 lib/sass/sass/tree/SassPropertyNode.php create mode 100644 lib/sass/sass/tree/SassRootNode.php create mode 100644 lib/sass/sass/tree/SassRuleNode.php create mode 100644 lib/sass/sass/tree/SassVariableNode.php create mode 100644 lib/sass/sass/tree/SassWhileNode.php diff --git a/application/displayblock.class.inc.php b/application/displayblock.class.inc.php index c0b461b7d..ad816a360 100644 --- a/application/displayblock.class.inc.php +++ b/application/displayblock.class.inc.php @@ -855,7 +855,7 @@ class DisplayBlock $oPage->add_ready_script( <<add_linked_script('../js/jquery.multiselect.min.js'); $this->add_linked_script('../js/ajaxfileupload.js'); - $aMultiselectOptions = array( - 'header' => true, - 'checkAllText' => Dict::S('UI:SearchValue:CheckAll'), - 'uncheckAllText' => Dict::S('UI:SearchValue:UncheckAll'), - 'noneSelectedText' => Dict::S('UI:SearchValue:Any'), - 'selectedText' => Dict::S('UI:SearchValue:NbSelected'), - 'selectedList' => 1, - ); - $sJSMultiselectOptions = json_encode($aMultiselectOptions); $sSearchAny = addslashes(Dict::S('UI:SearchValue:Any')); $sSearchNbSelected = addslashes(Dict::S('UI:SearchValue:NbSelected')); $this->add_dict_entry('UI:FillAllMandatoryFields'); @@ -227,9 +218,7 @@ EOF; }); } }); - - $('.multiselect').multiselect($sJSMultiselectOptions); - + $('.resizable').filter(':visible').resizable(); } catch(err) @@ -586,6 +575,16 @@ EOF } // Put here the 'ready scripts' that must be executed after all others + $aMultiselectOptions = array( + 'header' => true, + 'checkAllText' => Dict::S('UI:SearchValue:CheckAll'), + 'uncheckAllText' => Dict::S('UI:SearchValue:UncheckAll'), + 'noneSelectedText' => Dict::S('UI:SearchValue:Any'), + 'selectedText' => Dict::S('UI:SearchValue:NbSelected'), + 'selectedList' => 1, + ); + $sJSMultiselectOptions = json_encode($aMultiselectOptions); + $this->add_ready_script( <<GetOutputFormat() == 'html') diff --git a/application/nicewebpage.class.inc.php b/application/nicewebpage.class.inc.php index 1f68a0ec3..902d26c49 100644 --- a/application/nicewebpage.class.inc.php +++ b/application/nicewebpage.class.inc.php @@ -94,7 +94,7 @@ class NiceWebPage extends WebPage $("table.listResults").tableHover(); // hover tables EOF ); - $this->add_linked_stylesheet("../css/light-grey.css"); + $this->add_saas("css/light-grey.scss"); $this->m_sRootUrl = $this->GetAbsoluteUrlAppRoot(); $sAbsURLAppRoot = addslashes($this->m_sRootUrl); diff --git a/css/css-variables.scss b/css/css-variables.scss new file mode 100644 index 000000000..7c240e83e --- /dev/null +++ b/css/css-variables.scss @@ -0,0 +1,6 @@ +$highlight-color: #E87C1E; +$grey-color: #555555; +$complement-color: #1c94c4; +$complement-light: #d6e8ef; +$frame-background-color: #F1F1F1; +$text-color: #000; \ No newline at end of file diff --git a/css/light-grey.css b/css/light-grey.css index d4e38b0fc..39e1204bc 100644 --- a/css/light-grey.css +++ b/css/light-grey.css @@ -1,1425 +1,1945 @@ -/* CSS Document */ -body { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 10pt; - color:#000000; - margin: 0; /* Remove body margin/padding */ - padding: 0; - overflow: hidden; /* Remove scroll bars on browser window */ -} - -/* to prevent flicker, hide the pane's content until it's ready */ -.ui-layout-center, .ui-layout-north, .ui-layout-south { - display: none; -} - -.raw_output { - font-family: Courier-New, Courier, Arial, Helvetica; - font-size: 8pt; - background-color: #eeeeee; - color: #000000; - border: 1px dashed #000000; - padding: 0.25em; - margin-top: 1em; -} - -h1 { - font-family: Tahoma, Verdana, Arial, Helvetica; - color: #000; - font-weight: bold; - font-size: 12pt; -} -h2 { - font-family: Tahoma, Verdana, Arial, Helvetica; - color: #000; - font-weight: normal; - font-size: 12pt; -} -h3 { - font-family: Tahoma, Verdana, Arial, Helvetica; - color: #000; - font-weight: normal; - font-size: 10pt; -} -.hilite, .hilite a, .hilite a:visited { - color: #EB8F00; - text-decoration: none; -} -table.datatable { - width: 100%; - border: 0; - padding: 0; -} -td.menucontainer { - text-align: right; -} -table.listResults { - padding: 0px; - border-top: 3px solid #f6f6f1; - border-left: 3px solid #f6f6f1; - border-bottom: 3px solid #e6e6e1; - border-right: 3px solid #e6e6e1; - width: 100%; - background-color: #fff; -} - -table.listResults td { - padding: 2px; -} - -table.listContainer { - border: 0; - padding: 0; - margin:0; - width: 100%; - clear: both; -} - -tr.containerHeader, tr.containerHeader td { - background: transparent; -} - -tr.even td, .wizContainer tr.even td { - background-color: #f9f9f1; -} -tr.red_even td, .wizContainer tr.red_even td { - background-color: #f97e75; - color: #ffffff; -} -tr.red td, .wizContainer tr.red td { - background-color: #f9a397; - color: #ffffff; -} -tr.orange_even td, .wizContainer tr.orange_even td { - background-color: #f4d07a; -} -tr.orange td, .wizContainer tr.orange td { - background-color: #f4e96c; -} -tr.green_even td, .wizContainer tr.green_even td { - background-color: #bee5a3; -} -tr.green td, .wizContainer tr.green td { - background-color: #b3e5b4; -} - -tr td.hover, tr.even td.hover, .hover a, .hover a:visited, .hover a:hover, .wizContainer tr.even td.hover, .wizContainer tr td.hover { - background-color: #fdf5d0; - color: #000000; -} - -th { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 8pt; - color: #1C94C4; - height:20px; - background: #f6f6f1 url(../images/grey-header.gif) bottom repeat-x; -} - -th.header { - cursor: pointer; - background-repeat: no-repeat; - background-position: center right; - background-image: url(../images/bg.gif); - background-repeat: no-repeat; - padding-right: 16px; // some space for the asc/desc icons -} - -th.headerSortUp { - background-image: url(../images/asc.gif); - text-decoration: underline; - cursor: pointer; -} - -th.headerSortDown { - background-image: url(../images/desc.gif); - text-decoration: underline; - cursor: pointer; -} - -td { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; - color:#696969; - nobackground-color: #ffffff; - padding: 0px; -} - -tr.clicked td { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: smaller; - background-color: #ffcfe8; -} - -td.label { - vertical-align: top; -} -td.label span { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; - color: #000000; - padding: 5px; - padding-right: 10px; - font-weight:bold; - vertical-align: top; - text-align: right; - display: block; -} -fieldset td.label span { - padding: 3px; - padding-right: 10px; -} -fieldset { - margin-top: 3px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - border-style: solid; - border-color: #ddd; -} - -legend { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; - padding:8px; - color: #fff; - background-color: #1C94C4; - font-weight: bold; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; -} -legend.transparent { - background: transparent; - color: #333333; - font-size: 1em; - font-weight: normal; - padding: 0; -} -.ui-widget-content td legend a, .ui-widget-content td legend a:hover, .ui-widget-content td legend a:visited { - color: #fff; -} - -.ui-widget-content td a, p a, p a:visited, td a, td a:visited { - text-decoration:none; - color: #1C94C4; - padding-left:14px; - background: url(../images/mini-arrow-orange.gif) no-repeat left; -} -p a:hover, td a:hover { - text-decoration:underline; - color:#EB8F00; - padding-left:14px; - background: url(../images/mini-arrow-orange.gif) no-repeat left; -} - -td a.no-arrow, td a.no-arrow:visited, .SearchDrawer a.no-arrow, .SearchDrawer a.no-arrow:visited { - text-decoration:none; - color:#000000; - padding-left:0px; - background: inherit; -} -td a.no-arrow:hover { - text-decoration:underline; - color:#d81515; - padding-left:0px; - background: inherit; -} -td a.mailto, td a.mailto:visited { - text-decoration:none; - color:#000000; - padding-left:20px; - background: url(../images/mail.png) no-repeat left; -} -td a.mailto:hover { - text-decoration:underline; - color:#EB8F00; - padding-left:20px; - background: url(../images/mail.png) no-repeat left; -} - -a.small_action { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 8pt; - color: #000000; - text-decoration:none; -} -.display_block { - padding:0.25em; -} -.actions_details { - float:right; - margin-top:10px; - margin-right:10px; - padding-left: 5px; - padding-top: 2px; - padding-bottom: 2px; - background: url(../images/actions_left.png) no-repeat left; -} -.actions_details span{ - background: url(../images/actions_right.png) no-repeat right; - color: #fff; - font-weight: bold; - padding-top: 2px; - padding-bottom: 2px; - padding-right: 12px; -} -.actions_details a { - text-decoration:none; -} -.loading { - noborder: 1px dashed #CCC; - background: #b9c1c8; - padding:0.25em; -} - -input.textSearch { - border:1px solid #000; - font-family:Tahoma,Verdana, Arial, Helvetica, sans-serif; - font-size: 12px; - color:#000000; -} - -.ac_input { - border: 1px solid #7f9db9; - background: #fff url(../images/ac-background.gif) no-repeat right; -} - -/* By Rom */ -.csvimport_createobj { - color: #AA0000; - background-color:#EEEEEE; -} -.csvimport_error { - font-weight: bold; - color: #FF0000; - background-color:#EEEEEE; -} -.csvimport_warning { - color: #CC8888; - background-color:#EEEEEE; -} -.csvimport_ok { - color: #00000; - background-color:#BBFFBB; -} -.csvimport_reconkey { - font-style: italic; - color: #888888; - background-color:#FFFFF; -} -.csvimport_extreconkey { - color: #888888; - background-color:#FFFFFF; -} - -#accordion h3 { - padding: 10px; -} - -.ui-accordion-content ul { - list-style:none; - padding-left:16px; - margin-top: 8px; -} - -.ui-accordion-content li.submenu { - margin-top: 8px; -} - -.ui-accordion-content ul ul { - padding: 8px 0px 8px 8px; - margin:0; - list-style:none; - border: 0; -} - -.nothing { - noborder-top: 1px solid #8b8b8b; - padding: 4px 0px 0px 16px; - font-size:8pt; - background: url(../images/green-square.gif) no-repeat bottom left; - color:#83b217; - font-weight:bold; - text-decoration:none; -} -div.ui-accordion-content { - padding-top: 10px; - padding-left: 10px; -} -.ui-accordion-content a, ui-accordion-content a:visited { - color: #1C94C4; - text-decoration:none; -} - -.ui-accordion-content a:hover { - color: #EB8F00; - text-decoration: none; -} -.ui-accordion-content p { - color:#8b8b8b; - text-decoration:none; - margin: 0; - padding-bottom: 1px; - font-size: 9pt; - font-weight:normal; - border: 0; -} - -.ui-accordion-content ul { - padding-left: 0; - margin-top: 0; -} - -.ui-accordion-content li { - color:#8b8b8b; - text-decoration:none; - margin: 0; - padding: 0px 0pt 0px 16px; - font-size: 9pt; - background: url(../images/mini-arrow-orange.gif) no-repeat top left; - font-weight:normal; - border: 0; -} - -a.CollapsibleLabel, td a.CollapsibleLabel { - margin: 0; - padding: 0px 0pt 0px 16px; - font-size:8pt; - text-decoration:none; - color:#8b8b8b; - background: url(../images/mini-arrow-orange.gif) no-repeat left; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -a.CollapsibleLabel.open, td a.CollapsibleLabel.open { - margin: 0; - padding: 0px 0pt 0px 16px; - font-size:8pt; - text-decoration:none; - color: #EB8F00; - background: url(../images/mini-arrow-orange-open.gif) no-repeat left; -} - -.page_header { - background-color:#f6f6f1; - padding:5px; -} -/* move up a header immediately following a display block (i.e. "actions" menu) */ -.display_block + .page_header { - margin-top: -8px; -} - -.notreeview li { background: url(../images/tv-item.gif) 0 0 no-repeat; } -.notreeview .collapsable { background-image: url(../images/tv-collapsable.gif); } -.notreeview .expandable { background-image: url(../images/tv-expandable.gif); } -.notreeview .last { background-image: url(../images/tv-item-last.gif); } -.notreeview .lastCollapsable { background-image: url(../images/tv-collapsable-last.gif); } -.notreeview .lastExpandable { background-image: url(../images/tv-expandable-last.gif); } - -#OrganizationSelection { - padding:5px 0px 16px 20px; -} - -/* popup menus */ -div.itop_popup { - margin: 0; - padding: 0; - float:right; -} -div.itop_popup > ul > li { - list-style: none; - cursor: pointer; -} - -div.actions_menu > ul { - height:19px; - line-height: 17px; - vertical-align: middle; - display:block; - nowidth:70px; /* Nasty work-around for IE... en attendant mieux */ - padding-left: 5px; - background: url(../images/actions_left.png) no-repeat top left; - cursor: pointer; - margin: 0; -} - -div.actions_menu > ul > li { - float: left; - list-style: none; - font-size: 11px; - font-family: Tahoma,sans-serif; - height: 17px; - padding-right: 16px; - padding-left: 4px; - background: url(../images/actions_right.png) no-repeat top right transparent; - font-weight: bold; - color: #fff; - vertical-align: middle; - margin: 0; -} -#logOffBtn > ul > li { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - cursor: pointer; -} -#logOffBtn > ul { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - height: 25px; - noline-height: 25px; -} - -.itop_popup li a, #logOffBtn li a { - display: block; - padding: 5px 12px; - text-decoration: none; - nowidth: 70px; - color: #000; - font-weight: bold; - white-space: nowrap; - background: #fff; -} - -#logOffBtn li span { - display: block; - padding: 5px 12px; - text-decoration: none; - nowidth: 70px; - color: #000; - white-space: nowrap; - background: #fff; -} -.itop_popup ul { - padding-left: 0; -} - -.menucontainer div.toolkit_menu { - margin-left: 10px; -} - -.itop_popup li a:hover, #logOffBtn li a:hover { - background: #1A4473; -} - -.itop_popup ul > li > ul, #logOffBtn ul > li > ul -{ - border: 1px solid black; - background: #fff; -} - -.itop_popup li > ul, #logOffBtn li > ul -{ margin: 0; - padding: 0; - position: absolute; - display: none; - border-top: 1px solid white; - z-index: 999; -} - -.itop_popup li ul li, #logOffBtn li ul li { - float: none; - display: inline; -} - -.itop_popup li ul li a, #logOffBtn li ul li a { - width: auto; - text-align: left; -} - -.itop_popup li ul li a:hover, #logOffBtn li ul li a:hover{ - background: #D81515; - color: #fff; - font-weight: bold; -} -.itop_popup > ul { - margin: 0; -} -hr.menu-separator { - border: none 0; - border-top: 1px solid #ccc;; - color: #ccc; - background-color: transparent; - height: 1px; - margin: 3px; - cursor: default; -} -/************************************/ -.wizHeader { - background: #1c94c4; - padding: 15px; -} -.wizSeparator { - float:left; - background: #83b217; - height: 29px; - margin-top: 5px; -} -div.wizActiveStep { - height: 29px; - background: url(../images/wizActiveStepLeft.gif) no-repeat left; - color: #d81515; - padding-left: 8px; - margin-top: 5px; - vertical-align: middle; - float: left; -} -div.wizActiveStep span { - height: 29px; - background: url(../images/wizActiveStepRight.gif) no-repeat top right; - padding-right: 8px; - padding-top: 8px; - float:left; -} - -div.wizStep { - height: 29px; - background: url(../images/wizStepLeft.gif) no-repeat left; - padding-left: 8px; - vertical-align: middle; - margin-top: 5px; - float:left; -} -div.wizStep span { - height: 29px; - background: url(../images/wizStepRight.gif) no-repeat top right; - padding-right: 8px; - padding-top: 8px; - float:left; -} -.wizContainer { - border: 5px solid #1c94c4; - background: #d6e8ef; - padding: 5px; -} - -.wizContainer table tr td { - background: transparent; -} -.alignRight { - text-align: right; - padding: 3px; -} - -.alignLeft { - text-align: left; - padding: 3px; -} - -.red { - background-color: #ff6000; - color: #000; -} - -th.red { - background: url(../images/red-header.gif) bottom left repeat-x; - color: #000; -} - -.green { - background-color: #00cc00; - color: #000; -} -th.green { - background: url(../images/green-header.gif) bottom left repeat-x; - color: #000; -} - -.orange { - background-color: #ffde00; - color: #000; -} - -th.orange { - background: url(../images/orange-header.gif) bottom left repeat-x; - color: #000; -} - -/* For Date Picker: Creates a little calendar icon - * instead of a text link for "Choose date" - */ -td a.dp-choose-date, a.dp-choose-date, td a.dp-choose-date:hover, a.dp-choose-date:hover, td a.dp-choose-date:visited, a.dp-choose-date:visited { - float: left; - width: 16px; - height: 16px; - padding: 0; - margin: 5px 3px 0; - display: block; - text-indent: -2000px; - overflow: hidden; - background: url(../images/calendar.png) no-repeat; -} -td a.dp-choose-date.dp-disabled, a.dp-choose-date.dp-disabled { - background-position: 0 -20px; - cursor: default; -} -/* For Date Picker: makes the input field shorter once the date picker code - * has run (to allow space for the calendar icon) - */ -input.dp-applied { - width: 140px; - float: left; -} - -/* For search forms */ -.SearchDrawer { - //background: #1c94c4 url(../images/search-top-left-corner.png) top left no-repeat; - border-top: 5px solid #1c94c4; - border-left: 5px solid #1c94c4; - border-right: 5px solid #1c94c4; - border-bottom: 0; - background: #d6e8ef; - color: #000; - padding: 10px; - margin: 0; - font-size: 12px; -} -.SearchDrawer label { - background: #d6e8ef; - color: #000; -} -.SearchDrawer h1 { - color: #000; -} -.DrawerClosed { - display: none; -} -.DrawerHandle { - margin: 0; - padding: 5px; - background: url(../images/drawer-handle.gif) bottom no-repeat transparent; - color: #fff; - cursor: pointer; - text-align: center; - /* center the block */ - width: 100px; - margin-left: auto; - margin-right: auto; - margin-top: 0; - margin-bottom: 0; - display: block; - font-size: 12px; -} - -div.HRDrawer { - height: 5px; - width: 100%; - margin: 0; - background-color: #1c94c4; - margin: 0; - padding: 0; - border: 0; - display: block; -} -.mini_tabs a { - text-decoration: none; - font-weight:bold; - color: #ccc; - background-color:#333; - padding-left: 1em; - padding-right: 1em; - padding-bottom: 0.25em; -} -.mini_tabs a.selected { - color: #fff; - background-color: #1c94c4; - padding-top: 0.25em; -} -.mini_tabs ul { - margin: -10px; -} -.mini_tabs ul li { - float: right; - list-style: none; - nopadding-left: 1em; - nopadding-right: 1em; - margin-top: 0; -} -.mandatory { - border: 1px solid #f00; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.odd td.truncated, table.listResults tr td.truncated, .wizContainer table.listResults tr.odd td.truncated, .wizContainer table.listResults tr td.truncated { - background: url(../images/truncated.png) bottom repeat-x; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.even td.truncated, .wizContainer table.listResults tr.even td.truncated { - background: #f9f9f1 url(../images/truncated.png) bottom repeat-x; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.even td.hover.truncated, , .wizContainer table.listResults tr.even td.hover.truncated { - background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; -} - -/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ -table.listResults tr.odd td.hover.truncated, table.listResults tr td.hover.truncated, .wizContainer table.listResults tr.odd td.hover.truncated, .wizContainer table.listResults tr td.hover.truncated { - background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; -} - -table.listResults.truncated { - border-bottom: 0; - padding-bottom: 0; -} - -tr.csv_row0 td { - padding-top:5px; - padding-bottom:5px; - padding-left:10px; - padding-right:10px; - background: #fff; - border-left: #000 1px solid; - -} -tr.csv_row1 td { - padding-top:5px; - padding-bottom:5px; - padding-left:10px; - padding-right:10px; - background: #f9f9f1; - border-left: #000 1px solid; - -} -tr.csv_row1 th, tr.csv_row0 th { - padding-top:5px; - padding-bottom:5px; - padding-left:10px; - padding-right:10px; - border-left: #000 1px solid; - -} - -td.cell_modified { - font-weight: bold; - color: #000; -} - -td.cell_error { - font-weight: bold; - color: #D81515; -} -table.transparent, table.transparent td { - background: transparent; -} -p.page-header { - color:#1c94c4; - font-weight: bold; - font-size: 12pt; - font-family: Verdana, Arial, Helvetica, Sans-Serif -} -td.dashboard { - vertical-align:top; - border: 1px solid #ccc; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - padding: 10px; - width: 50%; -} -.white { - background-color: #fff; -} - -/*** New Lacanau layout ***/ - -.ui-layout-pane { /* all 'panes' */ - overflow: auto; -} - -.ui-layout-resizer { /* all 'resizer-bars' */ - background: #DDD; -} -.ui-layout-toggler { /* all 'toggler-buttons' */ - background: #AAA; -} -div#top-left { - width: 28px; - height: 70px; - background: #f6f6f1 url(../images/top-left-bkg.png) top left no-repeat; - float:left; -} -div#header-logo { - width: 100%; - height: 70px; - background: #f6f6f1 url(../images/splitter-top.png) top repeat-x; -} -.ui-layout-pane-west { - background: #f6f6f1 url(../images/left-bkg.png) left repeat-y; -} -div#right { - min-width: 260px; -} -div#menu { - width: 100%; - overflow: auto; -} -.header-menu { - padding-left: 24px; - padding-right: 8px; - padding-bottom: 24px; - background: transparent; -} -div#inner_menu { - padding-left: 24px; - padding-right: 8px; - background: transparent; -} -div#logo { - height: 70px; - nowidth: 100%; - text-align: center; -} -div#logo div { - height: 88px; - width: 244px; - background: url(../images/itop-logo-2.png) left no-repeat; -} -#top-bar { - height: 55px; - background: url(../images/banner-bkg.png) repeat-x scroll 0 0 transparent; - text-align: right; -} -#admin-banner { - float: left; - margin-top: 2px; - padding: 8px; - border: 1px solid #c33; - background-color: #fee; - -moz-border-radius: 0.5em; -} -#global-search { - height: 55px; - float: right; - background: url(../images/banner-search.png) no-repeat; - nopadding-top: 15px; - text-align: right; - overflow-y: hidden; -} -#global-search > form div { - padding-left: 4px; -} -#global-search table, #global-search tr td, #global-search tr { - padding: 0; - border: 0; - height: 55px; - margin: 0; - background: transparent; - overflow-y: hidden; - vertical-align: middle; -} -#global-search > form input[type="text"] { - border: 0; - height: 18px; - width: 180px; - padding-top: 4; - background: transparent; -} -#global-search > form tr td#g-search-input { - padding-top: 3px; - padding-left: 3px; - background: transparent; -} -div.icon { - width: 20px; - height: 20px; - margin: 2px; - float: right; -} -span.ui-icon { - float:left; - margin:0 2px; -} -.ui-layout-button-pin-down { - background: url(../images/splitter-bkg.png) transparent; - width: 16px; - background-position: -144px -144px; -} -.ui-layout-resizer-west-open { - background: url(../images/splitter-bkg.png) repeat-y scroll 0 0 transparent; - width: 16px; -} -div.footer img { - border: 0; - margin-bottom: 5px; - margin-top: 5px; -} -div.footer{ - text-align:center; -} -#SearchResultsToAdd table.listResults tbody { - height: 300px; - overflow-y: auto; -} -tr.row_unchanged td { - border-bottom: 1px #ccc solid; - padding: 2px; -} -.wizContainer table tr.row_error td { - border-bottom: 1px #ccc solid; - background-color: #fdd; - padding: 2px; -} -tr.row_modified td { - border-bottom: 1px #ccc solid; - padding: 2px; -} -tr.row_added td { - border-bottom: 1px #ccc solid; - padding: 2px; -} -a.truncated { - cursor: pointer; -} -.org_combo -{ - font-size:x-small; - width: auto; - max-width: 200px; -} -span.form_validation { - width:24px; - text-align:center; -} -.notification { - border: 1px solid #c33; - background-color: #fee; - padding: 0.5em; - margin: 0.5em; - text-align:center; - width: 95%; - -moz-border-radius: 0.5em; -} -.wiki_broken_link { - text-decoration: line-through; -} -.synoptics, .synoptics tr td { - background: transparent; - padding:10px; - font-size:1em; - vertical-align:middle; - color:#fff; - text-align:center; -} -.synoptics tr td.arrow { - color:#333; - border-top: 1px dashed #333; - width:100px; -} -.synoptics tr.synoptics_header td { - color:#000; font-size:1em; - vertical-align:middle; - text-align:center; -} -.mono_value { - display: inline-block; - background-color: #3c3; - color: #fff; - font-weight:bold; - padding: 3px; - padding-left: 5px; - padding-right: 5px; - margin-left:3px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} -.multi_values { - display: inline-block; - background-color: #c33; - color: #fff; - font-weight:bold; - padding: 3px; - padding-left: 5px; - padding-right: 5px; - margin-left:3px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} -.caselog { - overflow-x: hidden; - display: block; - overflow-y: auto; - border: 1px #ddd solid; - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 12px; -} -.caselog_input_header { - padding-top:3px; - padding-bottom:3px; - border-top:1px solid #fff; - background: #ddd; - width:100%; -} -.caselog_header { - padding:3px; - border-top:1px solid #fff; - background: #ddd url(../images/plus.gif) left no-repeat; - padding-left: 16px; - cursor: pointer; - width:100%; -} -.caselog_header.open { - background: #ddd url(../images/minus.gif) left no-repeat; -} -.caselog_entry { - padding:3px; - padding-left: 16px; - border-bottom:1px #999 solid; - margin-left:0; - margin-right:0; - white-space: pre-wrap; /* css-3 */ - white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+, CSS3 */ -} -table.details { - border-collapse: collapse; - noborder-bottom: 2px #fff solid; - width:100%; -} -table.details>tbody>tr>td { - border-bottom: 2px #ddd solid; - padding-bottom: 5px; - padding-top: 3px; -} -fieldset table.details>tbody>tr>td { - padding-top: 3px; - background: transparent; - border: 0; -} -.ac_dlg_loading { - background: white url('../images/indicator.gif') right center no-repeat; -} -table.pagination { - display:inline-block; -} -table.pagination tr td { - padding: 3px; -} -.pagination_container { - padding-left: 3px; -} -.pager p { - margin-top: 0; - margin-bottom: 0; -} -.pager td span { - min-width: 20px; - padding-left: 2px; - padding-right: 2px; - display:inline-block; - text-align: center; - cursor: pointer; -} - -.pager td span.curr_page { - color: #fff; - background: #999; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} -img.prev, img.first, img.next, img.last { - cursor: pointer; -} -div.actions_button { - float:right; - background: url("../images/actions_left.png") no-repeat scroll left top transparent; - padding-left: 5px; - margin-top: 0; - margin-right: 10px; - height:17px; - vertical-align: middle; -} - -div.actions_button a, .actions_button a:hover, .actions_button a:visited { - background:url(../images/actions_bkg.png) no-repeat scroll right top transparent; - color:#fff; - padding-right: 8px; - cursor:pointer; - font-family: Tahoma,sans-serif; - font-size: 11px; - font-weight: bold; - padding-left: 4px; - text-decoration: none; - height:17px; - line-height: 17px; - display: block; -} -select#org_id { - max-width: 90%; -} -/*********** Dashboards ***********/ -.itop-dashboard { - background-color: #fff; -} -.dragHover { - background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); -} -.edit_mode .dashlet { - background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); - padding: 5px; - margin:0; - position:relative; -} -.edit_mode .dashlet-selected { - background: #EB8F00 !important; - padding: 5px; - margin:0; -} -td.layout_cell { - height: 50px; /* min-height does not work */ - vertical-align: top; -} -.dashlet-content { - background: #fff; - margin:0; -} -table.prop_table { - border-bottom: 2px solid #F9F9F1; - padding: 1px; - width: 100%; -} -.close-box { - margin: 5px; - width: 20px; - height: 20px; - position: absolute; - top: 0; - right: 0; - z-index: 10; - background: transparent url(../images/delete.png) no-repeat center; -} -td.prop_value { - text-align: left; -} -tr.itop-property-field-modified td { - background: #fbb; -} -tr.itop-property-field-modified td.hover { - background: #f99; -} -td.prop_value textarea, td.prop_value input[type=text]{ - width: 98%; -} -td.prop_icon { - width: 20px; -} - -.dashlet { - text-align:left; -} -.dashlet-inline { - display: inline-block; -} -.dashlet-badge a.actions { - background: none repeat scroll 0 0 transparent; - color: #666666; - font-size: 16px; - text-decoration: none; -} -.dashlet-content .display_block { - text-align:left; -} -.prop_apply .ui-icon-alert { - display: none; -} -.prop_apply .ui-state-error .ui-icon-alert { - display: block; -} -.ui-state-error .ui-icon-circle-check { - display: none; -} -.summary-details { - float: right; - margin-top: 5px; -} -.summary-details th { - background: none repeat scroll 0 0 #CCCCCC; - color: #EEEEEE; - padding: 5px; - text-align: center; -} -.main_header { - background-color: #F1F1F6; - min-height: 60px; - width: 100%; -} -.main_header h1 { - color: #1C94C4; - line-height: 16px; - margin-bottom: 0; - margin-top: 0; - padding-bottom: 10px; - padding-top: 10px; -} -.main_header img { - margin-top: 10px; - margin-right: 10px; - float:left; -} -a.summary, a.summary:hover { - background: none repeat scroll 0 0 transparent; - color: #666666; - text-decoration: none; - padding-left: 0; -} -.summary-details td { - background: none repeat scroll 0 0 transparent; - padding: 5px; - text-align: center; -} - -#DashboardMenu > ul > li { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - cursor: pointer; -} - -#DashboardMenu > ul { - list-style: none; - vertical-align: middle; - margin: 0; - padding: 0; - height: 25px; -} -#DashboardMenu li a { - display: block; - padding: 5px 12px; - text-decoration: none; - color: #000; - font-weight: bold; - text-align: left; - white-space: nowrap; - background: #fff; -} -#DashboardMenu li span { - display: block; - padding: 5px 12px; - text-decoration: none; - color: #000; - white-space: nowrap; - background: #fff; -} -#DashboardMenu li { - list-style: none; -} -#DashboardMenu li a:hover { - background: #1A4473; -} - -#DashboardMenu ul > li > ul -{ - border: 1px solid black; - background: #fff; -} - -#DashboardMenu li > ul -{ margin: 0; - padding: 0; - position: absolute; - display: none; - border-top: 1px solid white; - z-index: 999; -} -#DashboardMenu li ul li a:hover{ - background: #D81515; - color: #fff; - font-weight: bold; - list-style: none; -} -.sortable_field_list { - display: inline-block; - width: 250px; - height: 150px; - border: 1px #333 solid; - overflow: auto; - padding-left: 0; - margin: 0; -} -.sortable_field_list li { - list-style: none; - font-size: 11px; -} -.sort_order { - display: inline-block; - width: 16px; - height: 12px; -} -.sort_none { - background: url(../images/bg.gif) no-repeat center; -} -.sort_asc { - background: url(../images/desc.gif) no-repeat center; -} -.sort_desc { - background: url(../images/asc.gif) no-repeat center; -} -.sort_hidden { - display: none; -} -.sortable_field_list > li.selected { - background: #F6A828; -} -.itop-deleted-object { - text-decoration: line-through; -} -.header_message { - padding: 1em; - font-size: 10pt; - background: #fff; - border: 1px solid #999; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - margin-bottom: 10px; -} -.header_message { - padding: 1em; - font-size: 10pt; - background: #fff; - border: 1px solid #999; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - margin-bottom: 10px; -} -.message_info { - border: 1px solid #993; - background: url(../images/info-mini.png) 1em 1em no-repeat #ffc; - padding-left: 3em; -} -.message_ok { - border: 1px solid #393; - background: url(../images/ok.png) 1em 1em no-repeat #cfc; - padding-left: 3em; -} -.message_error { - border: 1px solid #933; - background: url(../images/error.png) 1em 1em no-repeat #fcc; - padding-left: 3em; -} -.fg-menu a img { - border: 0; -} -div.ui-dialog-header { - padding-bottom: 10px; - padding-top: 7px; -} -.form_field_error { - border: 1px solid #933; - background: #fcc; -} -.simple-graph { - background: #fff; -} \ No newline at end of file +/* + * CSS Document + */ +body { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 10pt; + color: black; + margin: 0; + /* + * Remove body margin/padding + */ + + padding: 0; + overflow: hidden; + /* + * Remove scroll bars on browser window + */ + +} + + +/* + * to prevent flicker, hide the pane's content until it's ready + */ +.ui-layout-center, .ui-layout-north, .ui-layout-south { + display: none; +} + + +.ui-layout-content { + padding-left: 10px; +} + + +.raw_output { + font-family: Courier-New, Courier, Arial, Helvetica; + font-size: 8pt; + background-color: #eeeeee; + color: black; + border: 1px dashed black; + padding: 0.25em; + margin-top: 1em; +} + + +h1 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: black; + font-weight: bold; + font-size: 12pt; +} + + +h2 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: black; + font-weight: normal; + font-size: 12pt; +} + + +h3 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: black; + font-weight: normal; + font-size: 10pt; +} + + +.hilite, .hilite a, .hilite a:visited { + color: #e87c1e; + text-decoration: none; +} + + +table.datatable { + width: 100%; + border: 0; + padding: 0; +} + + +td.menucontainer { + text-align: right; +} + + +table.listResults { + padding: 0px; + border-top: 3px solid #f1f1f1; + border-left: 3px solid #f1f1f1; + border-bottom: 3px solid #e6e6e1; + border-right: 3px solid #e6e6e1; + width: 100%; + background-color: white; +} + + +table.listResults td { + padding: 2px; +} + + +table.listContainer { + border: 0; + padding: 0; + width: 100%; + clear: both; +} + + +tr.containerHeader, tr.containerHeader td { + background: transparent; +} + + +.wizContainer tr.even td, tr.even td { + background-color: #f1f1f1; +} + + +.wizContainer tr.red_even td, tr.red_even td { + background-color: #f97e75; + color: white; +} + + +.wizContainer tr.red td, tr.red td { + background-color: #f9a397; + color: white; +} + + +.wizContainer tr.orange_even td, tr.orange_even td { + background-color: #f4d07a; +} + + +.wizContainer tr.orange td, tr.orange td { + background-color: #f4e96c; +} + + +.wizContainer tr.green_even td, tr.green_even td { + background-color: #bee5a3; +} + + +.wizContainer tr.green td, tr.green td { + background-color: #b3e5b4; +} + + +.hover a, .hover a:hover, .hover a:visited, .wizContainer tr td.hover, .wizContainer tr.even td.hover, tr td.hover, tr.even td.hover { + background-color: #fdf5d0; + color: black; +} + + +th { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: #1c94c4; + height: 20px; + background: #f1f1f1 bottom repeat-x; +} + + +th.header { + cursor: pointer; + background-repeat: no-repeat; + background-position: center right; + background-repeat: no-repeat; + padding-right: 16px; +} + + +th.headerSortUp { + background-image: url(../images/asc.gif); + text-decoration: underline; + cursor: pointer; +} + + +th.headerSortDown { + background-image: url(../images/desc.gif); + text-decoration: underline; + cursor: pointer; +} + + +td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color: #696969; + nobackground-color: white; + padding: 0px; +} + + +tr.clicked td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: smaller; + background-color: #ffcfe8; +} + + +td.label { + vertical-align: top; +} + + +td.label span { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color: black; + padding: 5px; + padding-right: 10px; + font-weight: bold; + vertical-align: top; + text-align: right; + display: block; +} + + +fieldset td.label span { + padding: 3px; + padding-right: 10px; +} + + +fieldset { + margin-top: 3px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border-style: solid; + border-color: #dddddd; +} + + +legend { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + padding: 8px; + color: white; + background-color: #1c94c4; + font-weight: bold; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} + + +legend.transparent { + background: transparent; + color: #333333; + font-size: 1em; + font-weight: normal; + padding: 0; +} + + +.ui-widget-content td legend a, .ui-widget-content td legend a:hover, .ui-widget-content td legend a:visited { + color: white; +} + + +.ui-widget-content td a, p a, p a:visited, td a, td a:visited { + text-decoration: none; + color: #1c94c4; + padding-left: 14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + + +p a:hover, td a:hover { + text-decoration: underline; + color: #e87c1e; + padding-left: 14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + + +.SearchDrawer a.no-arrow, .SearchDrawer a.no-arrow:visited, td a.no-arrow, td a.no-arrow:visited { + text-decoration: none; + color: black; + padding-left: 0px; + background: inherit; +} + + +td a.no-arrow:hover { + text-decoration: underline; + color: #d81515; + padding-left: 0px; + background: inherit; +} + + +td a.mailto, td a.mailto:visited { + text-decoration: none; + color: black; + padding-left: 20px; + background: url(../images/mail.png) no-repeat left; +} + + +td a.mailto:hover { + text-decoration: underline; + color: #e87c1e; + padding-left: 20px; + background: url(../images/mail.png) no-repeat left; +} + + +a.small_action { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: black; + text-decoration: none; +} + + +.display_block { + padding: 0.25em; +} + + +.actions_details { + float: right; + margin-top: 10px; + margin-right: 10px; + padding-left: 5px; + padding-top: 2px; + padding-bottom: 2px; + background: url(../images/actions_left.png) no-repeat left; +} + + +.actions_details span { + background: url(../images/actions_right.png) no-repeat right; + color: white; + font-weight: bold; + padding-top: 2px; + padding-bottom: 2px; + padding-right: 12px; +} + + +.actions_details a { + text-decoration: none; +} + + +.loading { + noborder: 1px dashed #cccccc; + background: #b9c1c8; + padding: 0.25em; +} + + +input.textSearch { + border: 1px solid black; + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + color: black; +} + + +.ac_input { + border: 1px solid #7f9db9; + background: white url(../images/ac-background.gif) no-repeat right; +} + + +/* + * By Rom + */ +.csvimport_createobj { + color: #aa0000; + background-color: #eeeeee; +} + + +.csvimport_error { + font-weight: bold; + color: red; + background-color: #eeeeee; +} + + +.csvimport_warning { + color: #cc8888; + background-color: #eeeeee; +} + + +.csvimport_ok { + color: black; + background-color: #bbffbb; +} + + +.csvimport_reconkey { + font-style: italic; + color: #888888; + background-color: white; +} + + +.csvimport_extreconkey { + color: #888888; + background-color: white; +} + + +#accordion h3 { + padding: 10px; +} + + +.ui-accordion-content ul { + list-style: none; + list-style-image: url(data:0); + padding-left: 16px; + margin-top: 8px; +} + + +.ui-accordion-content li.submenu { + margin-top: 8px; +} + + +.ui-accordion-content ul ul { + padding: 8px 0px 8px 8px; + list-style: none; + list-style-image: url(data:0); + border: 0; +} + + +.nothing { + noborder-top: 1px solid #8b8b8b; + padding: 4px 0px 0px 16px; + font-size: 8pt; + background: url(../images/green-square.gif) no-repeat bottom left; + color: #83b217; + font-weight: bold; + text-decoration: none; +} + + +div.ui-accordion-content { + padding-top: 10px; + padding-left: 10px; +} + + +.ui-accordion-content a, ui-accordion-content a:visited { + color: #1c94c4; + text-decoration: none; +} + + +.ui-accordion-content a:hover { + color: #e87c1e; + text-decoration: none; +} + + +.ui-accordion-content ul { + padding-left: 0; + margin-top: 0; +} + + +.ui-accordion-content li { + color: #555555; + text-decoration: none; + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 9pt; + background: url(../images/mini-arrow-orange.gif) no-repeat top left; + font-weight: normal; + border: 0; +} + + +a.CollapsibleLabel, td a.CollapsibleLabel { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 8pt; + text-decoration: none; + color: #555555; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +a.CollapsibleLabel.open, td a.CollapsibleLabel.open { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 8pt; + text-decoration: none; + color: #e87c1e; + background: url(../images/mini-arrow-orange-open.gif) no-repeat left; +} + + +.page_header { + background-color: #f1f1f1; + padding: 5px; +} + + +/* + * move up a header immediately following a display block (i.e. "actions" menu) + */ +.display_block + .page_header { + margin-top: -8px; +} + + +.notreeview li { + background: url(../images/tv-item.gif) 0 0 no-repeat; +} + + +.notreeview .collapsable { + background-image: url(../images/tv-collapsable.gif); +} + + +.notreeview .expandable { + background-image: url(../images/tv-expandable.gif); +} + + +.notreeview .last { + background-image: url(../images/tv-item-last.gif); +} + + +.notreeview .lastCollapsable { + background-image: url(../images/tv-collapsable-last.gif); +} + + +.notreeview .lastExpandable { + background-image: url(../images/tv-expandable-last.gif); +} + + +#OrganizationSelection { + padding: 5px 0px 16px 20px; +} + + +/* + * popup menus + */ +div.itop_popup { + margin: 0; + padding: 0; + float: right; +} + + +div.itop_popup > ul > li { + list-style: none; + cursor: pointer; +} + + +div.actions_menu > ul { + height: 19px; + line-height: 17px; + vertical-align: middle; + display: block; + nowidth: 70px; + /* + * Nasty work-around for IE... en attendant mieux + */ + + padding-left: 5px; + background: url(../images/actions_left.png) no-repeat top left; + cursor: pointer; + margin: 0; +} + + +div.actions_menu > ul > li { + float: left; + list-style: none; + font-size: 11px; + font-family: Tahoma, sans-serif; + height: 17px; + padding-right: 16px; + padding-left: 4px; + background: url(../images/actions_right.png) no-repeat top right transparent; + font-weight: bold; + color: white; + vertical-align: middle; + margin: 0; +} + + +#logOffBtn > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} + + +#logOffBtn > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; + noline-height: 25px; +} + + +#logOffBtn li a, .itop_popup li a { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: black; + font-weight: bold; + white-space: nowrap; + background: white; +} + + +#logOffBtn li span { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: black; + white-space: nowrap; + background: white; +} + + +.itop_popup ul { + padding-left: 0; +} + + +.menucontainer div.toolkit_menu { + margin-left: 10px; +} + + +#logOffBtn li a:hover, .itop_popup li a:hover { + background: #1a4473; +} + + +#logOffBtn ul > li > ul, .itop_popup ul > li > ul { + border: 1px solid black; + background: white; +} + + +#logOffBtn li > ul, .itop_popup li > ul { + margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} + + +#logOffBtn li ul li, .itop_popup li ul li { + float: none; + display: inline; +} + + +#logOffBtn li ul li a, .itop_popup li ul li a { + width: auto; + text-align: left; +} + + +#logOffBtn li ul li a:hover, .itop_popup li ul li a:hover { + background: #e87c1e; + color: white; + font-weight: bold; +} + + +.itop_popup > ul { + margin: 0; +} + + +hr.menu-separator { + border: none 0; + border-top: 1px solid #cccccc; + color: #cccccc; + background-color: transparent; + height: 1px; + margin: 3px; + cursor: default; +} + + +/* + * ********************************** + */ +.wizHeader { + background: #1c94c4; + padding: 15px; +} + + +.wizContainer { + border: 5px solid #1c94c4; + background: #d6e8ef; + padding: 5px; +} + + +.wizContainer table tr td { + background: transparent; +} + + +.alignRight { + text-align: right; + padding: 3px; +} + + +.alignLeft { + text-align: left; + padding: 3px; +} + + +.red { + background-color: #ff6000; + color: black; +} + + +th.red { + background: url(../images/red-header.gif) bottom left repeat-x; + color: black; +} + + +.green { + background-color: #00cc00; + color: black; +} + + +th.green { + background: url(../images/green-header.gif) bottom left repeat-x; + color: black; +} + + +.orange { + background-color: #ffde00; + color: black; +} + + +th.orange { + background: url(../images/orange-header.gif) bottom left repeat-x; + color: black; +} + + +/* + * For Date Picker: Creates a little calendar icon + * * instead of a text link for "Choose date" + */ +a.dp-choose-date, a.dp-choose-date:hover, a.dp-choose-date:visited, td a.dp-choose-date, td a.dp-choose-date:hover, td a.dp-choose-date:visited { + float: left; + width: 16px; + height: 16px; + padding: 0; + margin: 5px 3px 0; + display: block; + text-indent: -2000px; + overflow: hidden; + background: url(../images/calendar.png) no-repeat; +} + + +a.dp-choose-date.dp-disabled, td a.dp-choose-date.dp-disabled { + background-position: 0 -20px; + cursor: default; +} + + +/* + * For Date Picker: makes the input field shorter once the date picker code + * * has run (to allow space for the calendar icon) + */ +input.dp-applied { + width: 140px; + float: left; +} + + +/* + * For search forms + */ +.SearchDrawer { + border-top: 5px solid #1c94c4; + border-left: 5px solid #1c94c4; + border-right: 5px solid #1c94c4; + border-bottom: 0; + background: #d6e8ef; + color: black; + padding: 10px; + margin: 0; + font-size: 12px; +} + + +.SearchDrawer label { + background: #d6e8ef; + color: black; +} + + +.SearchDrawer h1 { + color: black; +} + + +.DrawerClosed { + display: none; +} + + +.DrawerHandle { + margin: 0; + padding: 5px; + background: url(../images/drawer-handle.gif) bottom no-repeat transparent; + color: white; + cursor: pointer; + text-align: center; + /* + * center the block + */ + + width: 100px; + margin-left: auto; + margin-right: auto; + margin-top: 0; + margin-bottom: 0; + display: block; + font-size: 12px; +} + + +div.HRDrawer { + height: 5px; + width: 100%; + margin: 0; + background-color: #1c94c4; + margin: 0; + padding: 0; + border: 0; + display: block; +} + + +.mini_tabs a { + text-decoration: none; + font-weight: bold; + color: #cccccc; + background-color: #333333; + padding-left: 1em; + padding-right: 1em; + padding-bottom: 0.25em; +} + + +.mini_tabs a.selected { + color: white; + background-color: #1c94c4; + padding-top: 0.25em; +} + + +.mini_tabs ul { + margin: -10px; +} + + +.mini_tabs ul li { + float: right; + list-style: none; + nopadding-left: 1em; + nopadding-right: 1em; + margin-top: 0; +} + + +.mandatory { + border: 1px solid red; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +.wizContainer table.listResults tr td.truncated, .wizContainer table.listResults tr.odd td.truncated, table.listResults tr td.truncated, table.listResults tr.odd td.truncated { + background: url(../images/truncated.png) bottom repeat-x; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +.wizContainer table.listResults tr.even td.truncated, table.listResults tr.even td.truncated { + background: #f9f9f1 url(../images/truncated.png) bottom repeat-x; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +, .wizContainer table.listResults tr.even td.hover.truncated, table.listResults tr.even td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + + +/* + * Beware: IE6 does not support multiple selector with multiple classes, only the last class is used + */ +.wizContainer table.listResults tr td.hover.truncated, .wizContainer table.listResults tr.odd td.hover.truncated, table.listResults tr td.hover.truncated, table.listResults tr.odd td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + + +table.listResults.truncated { + border-bottom: 0; + padding-bottom: 0; +} + + +tr.csv_row0 td { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + background: white; + border-left: black 1px solid; +} + + +tr.csv_row1 td { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + background: #f9f9f1; + border-left: black 1px solid; +} + + +tr.csv_row0 th, tr.csv_row1 th { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + border-left: black 1px solid; +} + + +td.cell_modified { + font-weight: bold; + color: black; +} + + +td.cell_error { + font-weight: bold; + color: #d81515; +} + + +table.transparent, table.transparent td { + background: transparent; +} + + +p.page-header { + color: #1c94c4; + font-weight: bold; + font-size: 12pt; + font-family: Verdana, Arial, Helvetica, Sans-Serif; +} + + +td.dashboard { + vertical-align: top; + border: 1px solid #cccccc; + padding: 0.5em; + width: 50%; +} + + +.white { + background-color: white; +} + + +/* + * ** New Lacanau layout ** + */ +.ui-layout-pane { + /* + * all 'panes' + */ + + overflow: auto; +} + + +.ui-layout-resizer { + /* + * all 'resizer-bars' + */ + + background: #f1f1f1; +} + + +.ui-layout-toggler { + /* + * all 'toggler-buttons' + */ + + background: #aaaaaa; +} + + +div#top-left { + width: 28px; + height: 70px; + background: #f1f1f1; + float: left; +} + + +div#header-logo { + width: 100%; + height: 70px; + background: #f1f1f1; +} + + +.ui-layout-pane-west { + background: #f1f1f1; +} + + +div#right { + min-width: 260px; +} + + +div#menu { + width: 100%; + overflow: auto; +} + + +.header-menu { + padding-left: 24px; + padding-right: 8px; + padding-bottom: 24px; + background: transparent; +} + + +div#inner_menu { + padding-left: 24px; + padding-right: 8px; + background: transparent; +} + + +div#logo { + height: 70px; + nowidth: 100%; + text-align: center; +} + + +div#logo div { + height: 88px; + width: 244px; + background: url(../images/itop-logo-2.png) left no-repeat; +} + + +#left-pane .ui-layout-north { + overflow: hidden; +} + + +#top-bar { + height: 55px; + background: #f1f1f1; + text-align: right; +} + + +#admin-banner { + float: left; + margin-top: 2px; + padding: 8px; + border: 1px solid #cc3333; + background-color: #ffeeee; + -moz-border-radius: 0.5em; +} + + +#global-search { + height: 55px; + float: right; + background: url(../images/banner-search.png) no-repeat; + nopadding-top: 15px; + text-align: right; + overflow-y: hidden; +} + + +#global-search > form div { + padding-left: 4px; +} + + +#global-search table, #global-search tr, #global-search tr td { + padding: 0; + border: 0; + height: 55px; + margin: 0; + background: transparent; + overflow-y: hidden; + vertical-align: middle; +} + + +#global-search > form input[type="text"] { + border: 0; + height: 18px; + width: 180px; + padding-top: 4; + background: transparent; +} + + +#global-search > form tr td#g-search-input { + padding-top: 3px; + padding-left: 3px; + background: transparent; +} + + +div.icon { + width: 20px; + height: 20px; + margin: 2px; + float: right; +} + + +span.ui-icon { + float: left; + margin: 0 2px; +} + + +.ui-layout-button-pin-down { + background: url(../images/splitter-bkg.png) transparent; + width: 16px; + background-position: -144px -144px; +} + + +.ui-layout-resizer-west-open { + background-color: #f1f1f1; + width: 8px; +} + + +div.footer img { + border: 0; + margin-bottom: 5px; + margin-top: 5px; +} + + +div.footer { + text-align: center; +} + + +#SearchResultsToAdd table.listResults tbody { + height: 300px; + overflow-y: auto; +} + + +tr.row_unchanged td { + border-bottom: 1px #cccccc solid; + padding: 2px; +} + + +.wizContainer table tr.row_error td { + border-bottom: 1px #cccccc solid; + background-color: #ffdddd; + padding: 2px; +} + + +tr.row_modified td { + border-bottom: 1px #cccccc solid; + padding: 2px; +} + + +tr.row_added td { + border-bottom: 1px #cccccc solid; + padding: 2px; +} + + +a.truncated { + cursor: pointer; +} + + +.org_combo { + font-size: x-small; + width: auto; + max-width: 200px; +} + + +span.form_validation { + width: 24px; + text-align: center; +} + + +.notification { + border: 1px solid #cc3333; + background-color: #ffeeee; + padding: 0.5em; + margin: 0.5em; + text-align: center; + width: 95%; + -moz-border-radius: 0.5em; +} + + +.wiki_broken_link { + text-decoration: line-through; +} + + +.synoptics, .synoptics tr td { + background: transparent; + padding: 10px; + font-size: 1em; + vertical-align: middle; + color: white; + text-align: center; +} + + +.synoptics tr td.arrow { + color: #333333; + border-top: 1px dashed #333333; + width: 100px; +} + + +.synoptics tr.synoptics_header td { + color: black; + font-size: 1em; + vertical-align: middle; + text-align: center; +} + + +.mono_value { + display: inline-block; + background-color: #33cc33; + color: white; + font-weight: bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left: 3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + + +.multi_values { + display: inline-block; + background-color: #cc3333; + color: white; + font-weight: bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left: 3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + + +.caselog { + overflow-x: hidden; + display: block; + overflow-y: auto; + border: 1px #dddddd solid; + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; +} + + +.caselog_input_header { + padding-top: 3px; + padding-bottom: 3px; + border-top: 1px solid white; + background: #dddddd; + width: 100%; +} + + +.caselog_header { + padding: 3px; + border-top: 1px solid white; + background: #dddddd url(../images/plus.gif) left no-repeat; + padding-left: 16px; + cursor: pointer; + width: 100%; +} + + +.caselog_header.open { + background: #dddddd url(../images/minus.gif) left no-repeat; +} + + +.caselog_entry { + padding: 3px; + padding-left: 16px; + border-bottom: 1px #999999 solid; + white-space: pre-wrap; + /* + * css-3 + */ + + white-space: -moz-pre-wrap; + /* + * Mozilla, since 1999 + */ + + white-space: -pre-wrap; + /* + * Opera 4-6 + */ + + white-space: -o-pre-wrap; + /* + * Opera 7 + */ + + word-wrap: break-word; + /* + * Internet Explorer 5.5+, CSS3 + */ + +} + + +table.details { + border-collapse: collapse; + noborder-bottom: 2px white solid; + width: 100%; +} + + +table.details>tbody>tr>td { + border-bottom: 2px #dddddd solid; + padding-bottom: 5px; + padding-top: 3px; +} + + +fieldset table.details>tbody>tr>td { + padding-top: 3px; + background: transparent; + border: 0; +} + + +.ac_dlg_loading { + background: white url('../images/indicator.gif') right center no-repeat; +} + + +table.pagination { + display: inline-block; +} + + +table.pagination tr td { + padding: 3px; +} + + +.pagination_container { + padding-left: 3px; +} + + +.pager p { + margin-top: 0; + margin-bottom: 0; +} + + +.pager td span { + min-width: 20px; + padding-left: 2px; + padding-right: 2px; + display: inline-block; + text-align: center; + cursor: pointer; +} + + +.pager td span.curr_page { + color: white; + background: #999999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + + +img.first, img.last, img.next, img.prev { + cursor: pointer; +} + + +div.actions_button { + float: right; + background: url("../images/actions_left.png") no-repeat scroll left top transparent; + padding-left: 5px; + margin-top: 0; + margin-right: 10px; + height: 17px; + vertical-align: middle; +} + + +.actions_button a:hover, .actions_button a:visited, div.actions_button a { + background: url(../images/actions_bkg.png) no-repeat scroll right top transparent; + color: white; + padding-right: 8px; + cursor: pointer; + font-family: Tahoma, sans-serif; + font-size: 11px; + font-weight: bold; + padding-left: 4px; + text-decoration: none; + height: 17px; + line-height: 17px; + display: block; +} + + +select#org_id { + max-width: 90%; +} + + +/* + * ********** Dashboards ********** + */ +.itop-dashboard { + background-color: white; +} + + +.dragHover { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); +} + + +.edit_mode .dashlet { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); + padding: 5px; + position: relative; +} + + +.edit_mode .dashlet-selected { + background: #e87c1e !important; + padding: 5px; +} + + +td.layout_cell { + height: 50px; + /* + * min-height does not work + */ + + vertical-align: top; +} + + +.dashlet-content { + background: white; +} + + +table.prop_table { + border-bottom: 2px solid #f9f9f1; + padding: 1px; + width: 100%; +} + + +.close-box { + margin: 5px; + width: 20px; + height: 20px; + position: absolute; + top: 0; + right: 0; + z-index: 10; + background: transparent url(../images/delete.png) no-repeat center; +} + + +td.prop_value { + text-align: left; +} + + +tr.itop-property-field-modified td { + background: #ffbbbb; +} + + +tr.itop-property-field-modified td.hover { + background: #ff9999; +} + + +td.prop_value input[type=text], td.prop_value textarea { + width: 98%; +} + + +td.prop_icon { + width: 20px; +} + + +.dashlet { + text-align: left; +} + + +.dashlet-inline { + display: inline-block; +} + + +.dashlet-badge a.actions { + background: none repeat scroll 0 0 transparent; + color: #666666; + font-size: 16px; + text-decoration: none; +} + + +.dashlet-content .display_block { + text-align: left; +} + + +.prop_apply .ui-icon-alert { + display: none; +} + + +.prop_apply .ui-state-error .ui-icon-alert { + display: block; +} + + +.ui-state-error .ui-icon-circle-check { + display: none; +} + + +.summary-details { + float: right; + margin-top: 5px; +} + + +.summary-details th { + background: none repeat scroll 0 0 #555555; + color: #eeeeee; + padding: 5px; + text-align: center; +} + + +.main_header { + background-color: #f1f1f1; + min-height: 60px; + width: 100%; +} + + +.main_header h1 { + color: #1c94c4; + line-height: 16px; + margin-bottom: 0; + margin-top: 0; + padding-bottom: 10px; + padding-top: 10px; +} + + +.main_header img { + margin-top: 10px; + margin-right: 10px; + float: left; +} + + +a.summary, a.summary:hover { + background: none repeat scroll 0 0 transparent; + color: #666666; + text-decoration: none; + padding-left: 0; +} + + +.summary-details td { + background: none repeat scroll 0 0 transparent; + padding: 5px; + text-align: center; +} + + +#DashboardMenu > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} + + +#DashboardMenu > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; +} + + +#DashboardMenu li a { + display: block; + padding: 5px 12px; + text-decoration: none; + color: black; + font-weight: bold; + text-align: left; + white-space: nowrap; + background: white; +} + + +#DashboardMenu li span { + display: block; + padding: 5px 12px; + text-decoration: none; + color: black; + white-space: nowrap; + background: white; +} + + +#DashboardMenu li { + list-style: none; +} + + +#DashboardMenu li a:hover { + background: #1a4473; +} + + +#DashboardMenu ul > li > ul { + border: 1px solid black; + background: white; +} + + +#DashboardMenu li > ul { + margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} + + +#DashboardMenu li ul li a:hover { + background: #d81515; + color: white; + font-weight: bold; + list-style: none; +} + + +.sortable_field_list { + display: inline-block; + width: 250px; + height: 150px; + border: 1px #333333 solid; + overflow: auto; + padding-left: 0; + margin: 0; +} + + +.sortable_field_list li { + list-style: none; + font-size: 11px; +} + + +.sort_order { + display: inline-block; + width: 16px; + height: 12px; +} + + +.sort_none { + background: url(../images/bg.gif) no-repeat center; +} + + +.sort_asc { + background: url(../images/desc.gif) no-repeat center; +} + + +.sort_desc { + background: url(../images/asc.gif) no-repeat center; +} + + +.sort_hidden { + display: none; +} + + +.sortable_field_list > li.selected { + background: #f6a828; +} + + +.itop-deleted-object { + text-decoration: line-through; +} + + +.header_message { + padding: 1em; + font-size: 10pt; + background: white; + border: 1px solid #999999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} + + +.header_message { + padding: 1em; + font-size: 10pt; + background: white; + border: 1px solid #999999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} + + +.message_info { + border: 1px solid #999933; + background: url(../images/info-mini.png) 1em 1em no-repeat #ffffcc; + padding-left: 3em; +} + + +.message_ok { + border: 1px solid #339933; + background: url(../images/ok.png) 1em 1em no-repeat #ccffcc; + padding-left: 3em; +} + + +.message_error { + border: 1px solid #993333; + background: url(../images/error.png) 1em 1em no-repeat #ffcccc; + padding-left: 3em; +} + + +.fg-menu a img { + border: 0; +} + + +div.ui-dialog-header { + padding-bottom: 10px; + padding-top: 7px; +} + + +.form_field_error { + border: 1px solid #993333; + background: #ffcccc; +} + + +.graph_config, .simple-graph { + background: white; +} + + +.graph_config { + padding: 0.25em; +} + + +.graph_config button.ui-widget { + font-size: 12px; +} + + +.arrow:after, .ui-tooltip { + background: #f1f1f1; + border: 1px solid #555555; +} + + +.ui-tooltip { + padding: 10px 10px; + box-shadow: 0 0 7px black; +} + + +.arrow { + width: 70px; + height: 16px; + overflow: hidden; + position: absolute; + left: 50%; + margin-left: -35px; + bottom: -16px; +} + + +.arrow.top { + top: -16px; + bottom: auto; +} + + +.arrow.left { + left: 20%; +} + + +.arrow:after { + content: ""; + position: absolute; + left: 20px; + top: -20px; + width: 25px; + height: 25px; + box-shadow: 6px 5px 9px -9px black; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + + +.arrow.top:after { + bottom: -20px; + top: auto; +} + + diff --git a/css/light-grey.scss b/css/light-grey.scss new file mode 100644 index 000000000..46ffc0481 --- /dev/null +++ b/css/light-grey.scss @@ -0,0 +1,1439 @@ +@import 'css-variables.scss'; + +$hilight-color = $highlight-color; +$summary-details-background = $grey-color; +$main-header-background = $frame-background-color; +$table-even-background = $frame-background-color; +$popup-menu-highlight-color = $highlight-color; +$popup-menu-text-color: #000; +$popup-menu-background-color: #fff; +$popup-menu-text-higlight-color: #fff; + +/* CSS Document */ +body { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 10pt; + color: $text-color; + margin: 0; /* Remove body margin/padding */ + padding: 0; + overflow: hidden; /* Remove scroll bars on browser window */ +} + +/* to prevent flicker, hide the pane's content until it's ready */ +.ui-layout-center, .ui-layout-north, .ui-layout-south { + display: none; +} +.ui-layout-content { + padding-left: 10px; +} + +.raw_output { + font-family: Courier-New, Courier, Arial, Helvetica; + font-size: 8pt; + background-color: #eeeeee; + color: $text-color; + border: 1px dashed $text-color; + padding: 0.25em; + margin-top: 1em; +} + +h1 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: $text-color; + font-weight: bold; + font-size: 12pt; +} +h2 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: $text-color; + font-weight: normal; + font-size: 12pt; +} +h3 { + font-family: Tahoma, Verdana, Arial, Helvetica; + color: $text-color; + font-weight: normal; + font-size: 10pt; +} +.hilite, .hilite a, .hilite a:visited { + color: $hilight-color; + text-decoration: none; +} +table.datatable { + width: 100%; + border: 0; + padding: 0; +} +td.menucontainer { + text-align: right; +} +table.listResults { + padding: 0px; + border-top: 3px solid $frame-background-color; + border-left: 3px solid $frame-background-color; + border-bottom: 3px solid #e6e6e1; + border-right: 3px solid #e6e6e1; + width: 100%; + background-color: #fff; +} + +table.listResults td { + padding: 2px; +} + +table.listContainer { + border: 0; + padding: 0; + margin:0; + width: 100%; + clear: both; +} + +tr.containerHeader, tr.containerHeader td { + background: transparent; +} + +tr.even td, .wizContainer tr.even td { + background-color: $table-even-background; +} +tr.red_even td, .wizContainer tr.red_even td { + background-color: #f97e75; + color: #fff; +} +tr.red td, .wizContainer tr.red td { + background-color: #f9a397; + color: #fff; +} +tr.orange_even td, .wizContainer tr.orange_even td { + background-color: #f4d07a; +} +tr.orange td, .wizContainer tr.orange td { + background-color: #f4e96c; +} +tr.green_even td, .wizContainer tr.green_even td { + background-color: #bee5a3; +} +tr.green td, .wizContainer tr.green td { + background-color: #b3e5b4; +} + +tr td.hover, tr.even td.hover, .hover a, .hover a:visited, .hover a:hover, .wizContainer tr.even td.hover, .wizContainer tr td.hover { + background-color: #fdf5d0; + color: $text-color; +} + +th { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: $complement-color; + height:20px; + background: $frame-background-color bottom repeat-x; +} + +th.header { + cursor: pointer; + background-repeat: no-repeat; + background-position: center right; + background-repeat: no-repeat; + padding-right: 16px; // some space for the asc/desc icons +} + +th.headerSortUp { + background-image: url(../images/asc.gif); + text-decoration: underline; + cursor: pointer; +} + +th.headerSortDown { + background-image: url(../images/desc.gif); + text-decoration: underline; + cursor: pointer; +} + +td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color:#696969; + nobackground-color: #ffffff; + padding: 0px; +} + +tr.clicked td { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: smaller; + background-color: #ffcfe8; +} + +td.label { + vertical-align: top; +} +td.label span { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + color: #000000; + padding: 5px; + padding-right: 10px; + font-weight:bold; + vertical-align: top; + text-align: right; + display: block; +} +fieldset td.label span { + padding: 3px; + padding-right: 10px; +} +fieldset { + margin-top: 3px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border-style: solid; + border-color: #ddd; +} + +legend { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; + padding:8px; + color: #fff; + background-color: $complement-color; + font-weight: bold; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} +legend.transparent { + background: transparent; + color: #333333; + font-size: 1em; + font-weight: normal; + padding: 0; +} +.ui-widget-content td legend a, .ui-widget-content td legend a:hover, .ui-widget-content td legend a:visited { + color: #fff; +} + +.ui-widget-content td a, p a, p a:visited, td a, td a:visited { + text-decoration:none; + color: $complement-color; + padding-left:14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} +p a:hover, td a:hover { + text-decoration:underline; + color:$highlight-color; + padding-left:14px; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + +td a.no-arrow, td a.no-arrow:visited, .SearchDrawer a.no-arrow, .SearchDrawer a.no-arrow:visited { + text-decoration:none; + color:#000000; + padding-left:0px; + background: inherit; +} +td a.no-arrow:hover { + text-decoration:underline; + color:#d81515; + padding-left:0px; + background: inherit; +} +td a.mailto, td a.mailto:visited { + text-decoration:none; + color:#000000; + padding-left:20px; + background: url(../images/mail.png) no-repeat left; +} +td a.mailto:hover { + text-decoration:underline; + color:$highlight-color; + padding-left:20px; + background: url(../images/mail.png) no-repeat left; +} + +a.small_action { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 8pt; + color: #000000; + text-decoration:none; +} +.display_block { + padding:0.25em; +} +.actions_details { + float:right; + margin-top:10px; + margin-right:10px; + padding-left: 5px; + padding-top: 2px; + padding-bottom: 2px; + background: url(../images/actions_left.png) no-repeat left; +} +.actions_details span{ + background: url(../images/actions_right.png) no-repeat right; + color: #fff; + font-weight: bold; + padding-top: 2px; + padding-bottom: 2px; + padding-right: 12px; +} +.actions_details a { + text-decoration:none; +} +.loading { + noborder: 1px dashed #CCC; + background: #b9c1c8; + padding:0.25em; +} + +input.textSearch { + border:1px solid #000; + font-family:Tahoma,Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + color:#000000; +} + +.ac_input { + border: 1px solid #7f9db9; + background: #fff url(../images/ac-background.gif) no-repeat right; +} + +/* By Rom */ +.csvimport_createobj { + color: #AA0000; + background-color:#EEEEEE; +} +.csvimport_error { + font-weight: bold; + color: #FF0000; + background-color:#EEEEEE; +} +.csvimport_warning { + color: #CC8888; + background-color:#EEEEEE; +} +.csvimport_ok { + color: #00000; + background-color:#BBFFBB; +} +.csvimport_reconkey { + font-style: italic; + color: #888888; + background-color:#FFFFF; +} +.csvimport_extreconkey { + color: #888888; + background-color:#FFFFFF; +} + +#accordion h3 { + padding: 10px; +} + +.ui-accordion-content ul { + list-style:none; + list-style-image: url(data:0); + padding-left:16px; + margin-top: 8px; +} + +.ui-accordion-content li.submenu { + margin-top: 8px; +} + +.ui-accordion-content ul ul { + padding: 8px 0px 8px 8px; + margin:0; + list-style:none; + list-style-image: url(data:0); + border: 0; +} + +.nothing { + noborder-top: 1px solid #8b8b8b; + padding: 4px 0px 0px 16px; + font-size:8pt; + background: url(../images/green-square.gif) no-repeat bottom left; + color:#83b217; + font-weight:bold; + text-decoration:none; +} +div.ui-accordion-content { + padding-top: 10px; + padding-left: 10px; +} +.ui-accordion-content a, ui-accordion-content a:visited { + color: $complement-color; + text-decoration:none; +} + +.ui-accordion-content a:hover { + color: $highlight-color; + text-decoration: none; +} + +.ui-accordion-content ul { + padding-left: 0; + margin-top: 0; +} + +.ui-accordion-content li { + color:$grey-color; + text-decoration:none; + margin: 0; + padding: 0px 0pt 0px 16px; + font-size: 9pt; + background: url(../images/mini-arrow-orange.gif) no-repeat top left; + font-weight:normal; + border: 0; +} + +a.CollapsibleLabel, td a.CollapsibleLabel { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size:8pt; + text-decoration:none; + color:$grey-color; + background: url(../images/mini-arrow-orange.gif) no-repeat left; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +a.CollapsibleLabel.open, td a.CollapsibleLabel.open { + margin: 0; + padding: 0px 0pt 0px 16px; + font-size:8pt; + text-decoration:none; + color: $highlight-color; + background: url(../images/mini-arrow-orange-open.gif) no-repeat left; +} + +.page_header { + background-color:$frame-background-color; + padding:5px; +} +/* move up a header immediately following a display block (i.e. "actions" menu) */ +.display_block + .page_header { + margin-top: -8px; +} + +.notreeview li { background: url(../images/tv-item.gif) 0 0 no-repeat; } +.notreeview .collapsable { background-image: url(../images/tv-collapsable.gif); } +.notreeview .expandable { background-image: url(../images/tv-expandable.gif); } +.notreeview .last { background-image: url(../images/tv-item-last.gif); } +.notreeview .lastCollapsable { background-image: url(../images/tv-collapsable-last.gif); } +.notreeview .lastExpandable { background-image: url(../images/tv-expandable-last.gif); } + +#OrganizationSelection { + padding:5px 0px 16px 20px; +} + +/* popup menus */ +div.itop_popup { + margin: 0; + padding: 0; + float:right; +} +div.itop_popup > ul > li { + list-style: none; + cursor: pointer; +} + +div.actions_menu > ul { + height:19px; + line-height: 17px; + vertical-align: middle; + display:block; + nowidth:70px; /* Nasty work-around for IE... en attendant mieux */ + padding-left: 5px; + background: url(../images/actions_left.png) no-repeat top left; + cursor: pointer; + margin: 0; +} + +div.actions_menu > ul > li { + float: left; + list-style: none; + font-size: 11px; + font-family: Tahoma,sans-serif; + height: 17px; + padding-right: 16px; + padding-left: 4px; + background: url(../images/actions_right.png) no-repeat top right transparent; + font-weight: bold; + color: $popup-menu-text-higlight-color; + vertical-align: middle; + margin: 0; +} +#logOffBtn > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} +#logOffBtn > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; + noline-height: 25px; +} + +.itop_popup li a, #logOffBtn li a { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: $popup-menu-text-color; + font-weight: bold; + white-space: nowrap; + background: $popup-menu-background-color; +} + +#logOffBtn li span { + display: block; + padding: 5px 12px; + text-decoration: none; + nowidth: 70px; + color: $popup-menu-text-color; + white-space: nowrap; + background: $popup-menu-background-color; +} +.itop_popup ul { + padding-left: 0; +} + +.menucontainer div.toolkit_menu { + margin-left: 10px; +} + +.itop_popup li a:hover, #logOffBtn li a:hover { + background: #1A4473; +} + +.itop_popup ul > li > ul, #logOffBtn ul > li > ul +{ + border: 1px solid black; + background: #fff; +} + +.itop_popup li > ul, #logOffBtn li > ul +{ margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} + +.itop_popup li ul li, #logOffBtn li ul li { + float: none; + display: inline; +} + +.itop_popup li ul li a, #logOffBtn li ul li a { + width: auto; + text-align: left; +} + +.itop_popup li ul li a:hover, #logOffBtn li ul li a:hover{ + background: $popup-menu-highlight-color; + color: $popup-menu-text-higlight-color; + font-weight: bold; +} +.itop_popup > ul { + margin: 0; +} +hr.menu-separator { + border: none 0; + border-top: 1px solid #ccc; + color: #ccc; + background-color: transparent; + height: 1px; + margin: 3px; + cursor: default; +} +/************************************/ +.wizHeader { + background: $complement-color; + padding: 15px; +} +.wizContainer { + border: 5px solid $complement-color; + background: $complement-light; + padding: 5px; +} + +.wizContainer table tr td { + background: transparent; +} +.alignRight { + text-align: right; + padding: 3px; +} + +.alignLeft { + text-align: left; + padding: 3px; +} + +.red { + background-color: #ff6000; + color: #000; +} + +th.red { + background: url(../images/red-header.gif) bottom left repeat-x; + color: #000; +} + +.green { + background-color: #00cc00; + color: #000; +} +th.green { + background: url(../images/green-header.gif) bottom left repeat-x; + color: #000; +} + +.orange { + background-color: #ffde00; + color: #000; +} + +th.orange { + background: url(../images/orange-header.gif) bottom left repeat-x; + color: #000; +} + +/* For Date Picker: Creates a little calendar icon + * instead of a text link for "Choose date" + */ +td a.dp-choose-date, a.dp-choose-date, td a.dp-choose-date:hover, a.dp-choose-date:hover, td a.dp-choose-date:visited, a.dp-choose-date:visited { + float: left; + width: 16px; + height: 16px; + padding: 0; + margin: 5px 3px 0; + display: block; + text-indent: -2000px; + overflow: hidden; + background: url(../images/calendar.png) no-repeat; +} +td a.dp-choose-date.dp-disabled, a.dp-choose-date.dp-disabled { + background-position: 0 -20px; + cursor: default; +} +/* For Date Picker: makes the input field shorter once the date picker code + * has run (to allow space for the calendar icon) + */ +input.dp-applied { + width: 140px; + float: left; +} + +/* For search forms */ +.SearchDrawer { + //background: $complement-color url(../images/search-top-left-corner.png) top left no-repeat; + border-top: 5px solid $complement-color; + border-left: 5px solid $complement-color; + border-right: 5px solid $complement-color; + border-bottom: 0; + background: $complement-light; + color: #000; + padding: 10px; + margin: 0; + font-size: 12px; +} +.SearchDrawer label { + background: $complement-light; + color: #000; +} +.SearchDrawer h1 { + color: #000; +} +.DrawerClosed { + display: none; +} +.DrawerHandle { + margin: 0; + padding: 5px; + background: url(../images/drawer-handle.gif) bottom no-repeat transparent; + color: #fff; + cursor: pointer; + text-align: center; + /* center the block */ + width: 100px; + margin-left: auto; + margin-right: auto; + margin-top: 0; + margin-bottom: 0; + display: block; + font-size: 12px; +} + +div.HRDrawer { + height: 5px; + width: 100%; + margin: 0; + background-color: $complement-color; + margin: 0; + padding: 0; + border: 0; + display: block; +} +.mini_tabs a { + text-decoration: none; + font-weight:bold; + color: #ccc; + background-color:#333; + padding-left: 1em; + padding-right: 1em; + padding-bottom: 0.25em; +} +.mini_tabs a.selected { + color: #fff; + background-color: $complement-color; + padding-top: 0.25em; +} +.mini_tabs ul { + margin: -10px; +} +.mini_tabs ul li { + float: right; + list-style: none; + nopadding-left: 1em; + nopadding-right: 1em; + margin-top: 0; +} +.mandatory { + border: 1px solid #f00; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.odd td.truncated, table.listResults tr td.truncated, .wizContainer table.listResults tr.odd td.truncated, .wizContainer table.listResults tr td.truncated { + background: url(../images/truncated.png) bottom repeat-x; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.even td.truncated, .wizContainer table.listResults tr.even td.truncated { + background: #f9f9f1 url(../images/truncated.png) bottom repeat-x; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.even td.hover.truncated, , .wizContainer table.listResults tr.even td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + +/* Beware: IE6 does not support multiple selector with multiple classes, only the last class is used */ +table.listResults tr.odd td.hover.truncated, table.listResults tr td.hover.truncated, .wizContainer table.listResults tr.odd td.hover.truncated, .wizContainer table.listResults tr td.hover.truncated { + background: #fdf5d0 url(../images/truncated.png) bottom repeat-x; +} + +table.listResults.truncated { + border-bottom: 0; + padding-bottom: 0; +} + +tr.csv_row0 td { + padding-top:5px; + padding-bottom:5px; + padding-left:10px; + padding-right:10px; + background: #fff; + border-left: #000 1px solid; + +} +tr.csv_row1 td { + padding-top:5px; + padding-bottom:5px; + padding-left:10px; + padding-right:10px; + background: #f9f9f1; + border-left: #000 1px solid; + +} +tr.csv_row1 th, tr.csv_row0 th { + padding-top:5px; + padding-bottom:5px; + padding-left:10px; + padding-right:10px; + border-left: #000 1px solid; + +} + +td.cell_modified { + font-weight: bold; + color: #000; +} + +td.cell_error { + font-weight: bold; + color: #D81515; +} +table.transparent, table.transparent td { + background: transparent; +} +p.page-header { + color:$complement-color; + font-weight: bold; + font-size: 12pt; + font-family: Verdana, Arial, Helvetica, Sans-Serif +} +td.dashboard { + vertical-align:top; + border: 1px solid #ccc; + padding: 0.5em; + width: 50%; +} +.white { + background-color: #fff; +} + +/*** New Lacanau layout ***/ + +.ui-layout-pane { /* all 'panes' */ + overflow: auto; +} + +.ui-layout-resizer { /* all 'resizer-bars' */ + background: #f1f1f1; +} +.ui-layout-toggler { /* all 'toggler-buttons' */ + background: #AAA; +} +div#top-left { + width: 28px; + height: 70px; + background: $frame-background-color; + float:left; +} +div#header-logo { + width: 100%; + height: 70px; + background: $frame-background-color; +} +.ui-layout-pane-west { + background: $frame-background-color; +} +div#right { + min-width: 260px; +} +div#menu { + width: 100%; + overflow: auto; +} +.header-menu { + padding-left: 24px; + padding-right: 8px; + padding-bottom: 24px; + background: transparent; +} +div#inner_menu { + padding-left: 24px; + padding-right: 8px; + background: transparent; +} +div#logo { + height: 70px; + nowidth: 100%; + text-align: center; +} +div#logo div { + height: 88px; + width: 244px; + background: url(../images/itop-logo-2.png) left no-repeat; +} +#left-pane .ui-layout-north { + overflow: hidden; +} +#top-bar { + height: 55px; + background: $frame-background-color; + text-align: right; +} +#admin-banner { + float: left; + margin-top: 2px; + padding: 8px; + border: 1px solid #c33; + background-color: #fee; + -moz-border-radius: 0.5em; +} +#global-search { + height: 55px; + float: right; + background: url(../images/banner-search.png) no-repeat; + nopadding-top: 15px; + text-align: right; + overflow-y: hidden; +} +#global-search > form div { + padding-left: 4px; +} +#global-search table, #global-search tr td, #global-search tr { + padding: 0; + border: 0; + height: 55px; + margin: 0; + background: transparent; + overflow-y: hidden; + vertical-align: middle; +} +#global-search > form input[type="text"] { + border: 0; + height: 18px; + width: 180px; + padding-top: 4; + background: transparent; +} +#global-search > form tr td#g-search-input { + padding-top: 3px; + padding-left: 3px; + background: transparent; +} +div.icon { + width: 20px; + height: 20px; + margin: 2px; + float: right; +} +span.ui-icon { + float:left; + margin:0 2px; +} +.ui-layout-button-pin-down { + background: url(../images/splitter-bkg.png) transparent; + width: 16px; + background-position: -144px -144px; +} +.ui-layout-resizer-west-open { + background-color: $frame-background-color; + width: 8px; +} +div.footer img { + border: 0; + margin-bottom: 5px; + margin-top: 5px; +} +div.footer{ + text-align:center; +} +#SearchResultsToAdd table.listResults tbody { + height: 300px; + overflow-y: auto; +} +tr.row_unchanged td { + border-bottom: 1px #ccc solid; + padding: 2px; +} +.wizContainer table tr.row_error td { + border-bottom: 1px #ccc solid; + background-color: #fdd; + padding: 2px; +} +tr.row_modified td { + border-bottom: 1px #ccc solid; + padding: 2px; +} +tr.row_added td { + border-bottom: 1px #ccc solid; + padding: 2px; +} +a.truncated { + cursor: pointer; +} +.org_combo +{ + font-size:x-small; + width: auto; + max-width: 200px; +} +span.form_validation { + width:24px; + text-align:center; +} +.notification { + border: 1px solid #c33; + background-color: #fee; + padding: 0.5em; + margin: 0.5em; + text-align:center; + width: 95%; + -moz-border-radius: 0.5em; +} +.wiki_broken_link { + text-decoration: line-through; +} +.synoptics, .synoptics tr td { + background: transparent; + padding:10px; + font-size:1em; + vertical-align:middle; + color:#fff; + text-align:center; +} +.synoptics tr td.arrow { + color:#333; + border-top: 1px dashed #333; + width:100px; +} +.synoptics tr.synoptics_header td { + color:#000; font-size:1em; + vertical-align:middle; + text-align:center; +} +.mono_value { + display: inline-block; + background-color: #3c3; + color: #fff; + font-weight:bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left:3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} +.multi_values { + display: inline-block; + background-color: #c33; + color: #fff; + font-weight:bold; + padding: 3px; + padding-left: 5px; + padding-right: 5px; + margin-left:3px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} +.caselog { + overflow-x: hidden; + display: block; + overflow-y: auto; + border: 1px #ddd solid; + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 12px; +} +.caselog_input_header { + padding-top:3px; + padding-bottom:3px; + border-top:1px solid #fff; + background: #ddd; + width:100%; +} +.caselog_header { + padding:3px; + border-top:1px solid #fff; + background: #ddd url(../images/plus.gif) left no-repeat; + padding-left: 16px; + cursor: pointer; + width:100%; +} +.caselog_header.open { + background: #ddd url(../images/minus.gif) left no-repeat; +} +.caselog_entry { + padding:3px; + padding-left: 16px; + border-bottom:1px #999 solid; + margin-left:0; + margin-right:0; + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+, CSS3 */ +} +table.details { + border-collapse: collapse; + noborder-bottom: 2px #fff solid; + width:100%; +} +table.details>tbody>tr>td { + border-bottom: 2px #ddd solid; + padding-bottom: 5px; + padding-top: 3px; +} +fieldset table.details>tbody>tr>td { + padding-top: 3px; + background: transparent; + border: 0; +} +.ac_dlg_loading { + background: white url('../images/indicator.gif') right center no-repeat; +} +table.pagination { + display:inline-block; +} +table.pagination tr td { + padding: 3px; +} +.pagination_container { + padding-left: 3px; +} +.pager p { + margin-top: 0; + margin-bottom: 0; +} +.pager td span { + min-width: 20px; + padding-left: 2px; + padding-right: 2px; + display:inline-block; + text-align: center; + cursor: pointer; +} + +.pager td span.curr_page { + color: #fff; + background: #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} +img.prev, img.first, img.next, img.last { + cursor: pointer; +} +div.actions_button { + float:right; + background: url("../images/actions_left.png") no-repeat scroll left top transparent; + padding-left: 5px; + margin-top: 0; + margin-right: 10px; + height:17px; + vertical-align: middle; +} + +div.actions_button a, .actions_button a:hover, .actions_button a:visited { + background:url(../images/actions_bkg.png) no-repeat scroll right top transparent; + color:#fff; + padding-right: 8px; + cursor:pointer; + font-family: Tahoma,sans-serif; + font-size: 11px; + font-weight: bold; + padding-left: 4px; + text-decoration: none; + height:17px; + line-height: 17px; + display: block; +} +select#org_id { + max-width: 90%; +} +/*********** Dashboards ***********/ +.itop-dashboard { + background-color: #fff; +} +.dragHover { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); +} +.edit_mode .dashlet { + background: url(./ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png); + padding: 5px; + margin:0; + position:relative; +} +.edit_mode .dashlet-selected { + background: $highlight-color !important; + padding: 5px; + margin:0; +} +td.layout_cell { + height: 50px; /* min-height does not work */ + vertical-align: top; +} +.dashlet-content { + background: #fff; + margin:0; +} +table.prop_table { + border-bottom: 2px solid #F9F9F1; + padding: 1px; + width: 100%; +} +.close-box { + margin: 5px; + width: 20px; + height: 20px; + position: absolute; + top: 0; + right: 0; + z-index: 10; + background: transparent url(../images/delete.png) no-repeat center; +} +td.prop_value { + text-align: left; +} +tr.itop-property-field-modified td { + background: #fbb; +} +tr.itop-property-field-modified td.hover { + background: #f99; +} +td.prop_value textarea, td.prop_value input[type=text]{ + width: 98%; +} +td.prop_icon { + width: 20px; +} + +.dashlet { + text-align:left; +} +.dashlet-inline { + display: inline-block; +} +.dashlet-badge a.actions { + background: none repeat scroll 0 0 transparent; + color: #666666; + font-size: 16px; + text-decoration: none; +} +.dashlet-content .display_block { + text-align:left; +} +.prop_apply .ui-icon-alert { + display: none; +} +.prop_apply .ui-state-error .ui-icon-alert { + display: block; +} +.ui-state-error .ui-icon-circle-check { + display: none; +} +.summary-details { + float: right; + margin-top: 5px; +} +.summary-details th { + background: none repeat scroll 0 0 $summary-details-background; + color: #EEEEEE; + padding: 5px; + text-align: center; +} +.main_header { + background-color: $main-header-background; + min-height: 60px; + width: 100%; +} +.main_header h1 { + color: $complement-color; + line-height: 16px; + margin-bottom: 0; + margin-top: 0; + padding-bottom: 10px; + padding-top: 10px; +} +.main_header img { + margin-top: 10px; + margin-right: 10px; + float:left; +} +a.summary, a.summary:hover { + background: none repeat scroll 0 0 transparent; + color: #666666; + text-decoration: none; + padding-left: 0; +} +.summary-details td { + background: none repeat scroll 0 0 transparent; + padding: 5px; + text-align: center; +} + +#DashboardMenu > ul > li { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; +} + +#DashboardMenu > ul { + list-style: none; + vertical-align: middle; + margin: 0; + padding: 0; + height: 25px; +} +#DashboardMenu li a { + display: block; + padding: 5px 12px; + text-decoration: none; + color: #000; + font-weight: bold; + text-align: left; + white-space: nowrap; + background: #fff; +} +#DashboardMenu li span { + display: block; + padding: 5px 12px; + text-decoration: none; + color: #000; + white-space: nowrap; + background: #fff; +} +#DashboardMenu li { + list-style: none; +} +#DashboardMenu li a:hover { + background: #1A4473; +} + +#DashboardMenu ul > li > ul +{ + border: 1px solid black; + background: #fff; +} + +#DashboardMenu li > ul +{ margin: 0; + padding: 0; + position: absolute; + display: none; + border-top: 1px solid white; + z-index: 999; +} +#DashboardMenu li ul li a:hover{ + background: #D81515; + color: #fff; + font-weight: bold; + list-style: none; +} +.sortable_field_list { + display: inline-block; + width: 250px; + height: 150px; + border: 1px #333 solid; + overflow: auto; + padding-left: 0; + margin: 0; +} +.sortable_field_list li { + list-style: none; + font-size: 11px; +} +.sort_order { + display: inline-block; + width: 16px; + height: 12px; +} +.sort_none { + background: url(../images/bg.gif) no-repeat center; +} +.sort_asc { + background: url(../images/desc.gif) no-repeat center; +} +.sort_desc { + background: url(../images/asc.gif) no-repeat center; +} +.sort_hidden { + display: none; +} +.sortable_field_list > li.selected { + background: #F6A828; +} +.itop-deleted-object { + text-decoration: line-through; +} +.header_message { + padding: 1em; + font-size: 10pt; + background: #fff; + border: 1px solid #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} +.header_message { + padding: 1em; + font-size: 10pt; + background: #fff; + border: 1px solid #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-bottom: 10px; +} +.message_info { + border: 1px solid #993; + background: url(../images/info-mini.png) 1em 1em no-repeat #ffc; + padding-left: 3em; +} +.message_ok { + border: 1px solid #393; + background: url(../images/ok.png) 1em 1em no-repeat #cfc; + padding-left: 3em; +} +.message_error { + border: 1px solid #933; + background: url(../images/error.png) 1em 1em no-repeat #fcc; + padding-left: 3em; +} +.fg-menu a img { + border: 0; +} +div.ui-dialog-header { + padding-bottom: 10px; + padding-top: 7px; +} +.form_field_error { + border: 1px solid #933; + background: #fcc; +} +.simple-graph, .graph_config { + background: #fff; +} +.graph_config { + padding: 0.25em; +} +.graph_config button.ui-widget { + font-size: 12px; +} +.ui-tooltip, .arrow:after { + background: $frame-background-color; + border: 1px solid $grey-color; +} +.ui-tooltip { + padding: 10px 10px; + box-shadow: 0 0 7px black; +} +.arrow { + width: 70px; + height: 16px; + overflow: hidden; + position: absolute; + left: 50%; + margin-left: -35px; + bottom: -16px; +} +.arrow.top { + top: -16px; + bottom: auto; +} +.arrow.left { + left: 20%; +} +.arrow:after { + content: ""; + position: absolute; + left: 20px; + top: -20px; + width: 25px; + height: 25px; + box-shadow: 6px 5px 9px -9px black; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} +.arrow.top:after { + bottom: -20px; + top: auto; +} \ No newline at end of file diff --git a/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png index e20472bb87f5eaea41d5219906d82bc97307d697..ea3abcbd5be801a33a04927354fc8d53fb742b6c 100644 GIT binary patch delta 95 zcmZ3)yoh;&H)FV|u7QcJk#UHjp_Q?*m8p@ofq|8Q!HM|l6b1$c)e_f;l9a@fRIA+l el+3hB1|tJQ>>7459lin7z~JfX=d#Wzp$P!AE*WtE delta 95 zcmZ3)yoh;&H)FW5u7Rnpky(hLrIo3vm64^cfw`4|!RwEcTNoG^R7+eVN>UO_Qmu0H eQ!>*k8H@}Jv1^#MM%x0Yfx*+&&t;ucLK6V-E*a+l diff --git a/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png index 1ed71358072fa0cbccfe2d67524703980d03ffe4..61826c13c268a3c1ed6f96c2ad2cfe44325cdd6c 100644 GIT binary patch delta 94 zcmdnNw1a8F!*Ekw0~1{%;}AnbD`R6TQzLBy11kfA6Yg delta 94 zcmdnNw1a8F!*F9=15;fivk*f|D^pV|V*_0Sb1MUbO^2_YWME)WEpd$~Nl7e8waU#; d$xN$cFfuU2uHo>!yi%YB22WQ%mvv4FO#m~E8!`X@ diff --git a/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png index bbabfb194896931676b1d0b5961fdb1680c0bea5..c9c77a43ab3fa513a70503fc45959d98d73ba925 100644 GIT binary patch delta 75 zcmX@hc$RTOnUtxnfr+k>afqRzm9epvsgbsUft7*5iTLW2i4(-tu*>dbI(&lx2s~Z= KT-G@yGywnt7!*+e delta 75 zcmX@hc$RTOnUt}vfvK*MS%{&fm8q$fv4O6Exs`#zro-1xPMjdFhF$jXyu4BdAnoVKWC*^IbYhbKvXc%H>Vr6P+WoV>rU|?lnV6ZZCH3I{KYKdz^NlIc#s#R`& XN@iLmgOPzDb`6eSE{adSDP;%%9*P)n delta 87 zcmeA&>oVKWC*^IdYha{nU>IUxYGrI}WoV#lU}0ropqX%B5(5K+YKdz^NlIc#s#R`& XN@iLmgOPzDb`24>6?&6zN*MwG5_A`I diff --git a/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/css/ui-lightness/images/ui-icons_ffd27a_256x240.png index 8b6c05868b55d63ff932afa2efbd9d7cedd5909a..4435b497eb4f472cbb1bd75616da555f6d49d082 100644 GIT binary patch delta 87 zcmX@Ad{lXZr=Yi~u7R~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 zfTXFFsR7VNh6(HpEI^$GMur9xCNY88mKH_~ObZ|;1643EBe7Yb>^&gsfPe{TKSWoM zr3H`$HOlS`CefJabLOiD^ZOhQ6NUPDPnR!vSqLRnu~O;bx(S65om(8N&NL_x0t}4IOw61JF(w9P7Dho#gYB%MW7nq#9$8|p~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 z46F>ytV}I|HZn|LXJ7&9G%zwWm@tV6%(gVNWMEnVFPzs=CXz|O+T#>&FZ#>&Rd z&d$Ll$j!yc$tB7!z#}LrCM6{yCLtjsuc0I(t0pHQp{%d0rm3Z?t1GQ&Xkw^sqM@U! z&B)Eo&Ckm(CnzZApsk|qKr;A$gdq>;IYv-m!vWAyjO+poOiYYStjtX8P;o{kW)?vP zRv|@0$3QmWLZgKyi6t8kUHrfZ)DG7QW&l+Rg3LrQm61u%kXh*eEe0N-awb8b3VVik zzrXI@dPLhzY{H2fI&6iXA5>a-zp8zlzgxGY?a6`b6EOv ziku=IjwjZW|GwOOvrF7#`BX8tm->>@a zU2uE*dru9nx)mQM&PiV1>wEt6!P8e4hQCxjC{ULAZK)8S+>f^(m&z?&D6{Q#b&2+A zm35ApqD~t>RR6SEV8vYa$M62H`44V+thtaK?b5$9xI!{vZA@x%r%1wohPFA`{Q13k J6XgHj1OSw%#6AE3 diff --git a/images/Resize of Resize of erwanPC.jpg b/images/Resize of Resize of erwanPC.jpg deleted file mode 100644 index 25e2e016cb5dc4412ad5624e5ef587129d7548ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 z46F=HtV}I|HZn|LXJ7&9G%zwWm@tV6%r-PIWnfwWFPzs=CXz|O+T#>&FZ#>&Rd z&d$Ll$j!yc$tB7!z#}LrCM6{yCLtjsuc0I(t0pHQp{%d0rm3Z?t1GQ&Xkw^sqM@U! z&B)Eo&Ckm(CnzZApsk|qKr;A$grN}VIYv-m!vPyR2Mdz`10yptBhY!k@BsrxCT5^( z1sT|d6b&7PMU4^*8#$De11B0gB~Mz&2s8t(AEsQ85d@Hgfx#rG`2Q9I4^T0aAhRHY zJwtWucNXuY`%^>b)XnDn88}Z*=SPsu$tySJF1yvjuGNy&qs zWwu(?*x$PNx;(t%O4!MyIZn3{vm`6;-#)y;-##X5!lmohVb$joco)8@ySw|^nG?_d^Qy-&yS#!Y zczn5_X|C)w?M>EaAs?%nO2NCiwu@ZexOg?bvi1?4zeB3%&7|c8KGSww&Dv|{?6ZC9 z(TsJ@9WU(mG1)eTZ|h4BUKkSFv8u)5Qg^=Wq2Hcy?@v^w6kI#9P*-Q$B`1Li22*+% L-!4qh|9=wzJ%aKf diff --git a/images/Resize of erwanBuidling.jpg b/images/Resize of erwanBuidling.jpg deleted file mode 100644 index 865f64f321139aa710ed6769860a508048ebfc04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 976 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 zfTV$yfhEvJh6(HpEI^$GMur9xCNY88#s-EAObZ|;%K_z>k=U$I_8yRRK)?jFAEGPB z(gMhWnr3KV0Fh^4_`6BMiWBV`c;eHXHz5!@(lJz{t$V&cw{h2^D8#VrF4wU}F~) zQZ#f76c#DuP*M(R6cr0jY??S};U-2@Gk~GOEXcsb#K_EwFdGzWf;zDHDjX%99P;_c31J#_AKQ&v>zj ze~&+N-nYl!Y7R~G&D?#z>hY9a6CXKrJSxwr)0%w$sjTJOwA+tuyS6HAS)#FNy1;9x zm_mh>o-8G2Ru^u#QS~{y#T(V4yBxfC7uputtm1bD7g5wLPHS>Ea#FgJFhVHmHVa2EE9~WeM z*{}-uWvDbR`1YdWcIQ^Nrc3qH-v#D~g}HGZT9Yu{f46bo+XqRpZsyaY6!+cWidN~_ zqO+oLac!q{;f@C_R(JiD3Ko7*)v?-YIr&p5lYj8itvvr3LKk0I*`4Zc{BE0RRaISm zVDiNLCo8zvMBI#j&I{_aKeGJyxwHOBSug91xrKQ4Oj&bsx9IJIc5{t2id-r+N*~=m zqU$N;c5A`}KhIayk>Yae*FIi%FEx18hGl^Zox=(jSedN&@=?U?RG_R|0&jbef8su~ zeY4I~l>TxlpHZ5~S)~{hlQWOcE0Fz#>%_uvfmITXF+MXr1RuJy8a!HFaLHd~-YQF; V^KTQ5Z#)`3$Aw$;8e9GUn*ilD9OVE2 diff --git a/images/Resize of erwanBuilding.jpg b/images/Resize of erwanBuilding.jpg deleted file mode 100644 index d2b640907c7905a8aff46b1b937497803a3452c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 zK%|v{3D8D{3G56kK%E9gh6WQRF@f0@#-+*HDs?Rg;sDP}Wyg)6~+{)sG%?gR(a_P=X5{AP z=I7;?6BLwl&{olQAQ}8W!cYzL05CX_04qBi2NN@k00Sd46ALRNGcQz*5h%zi$iT*~ zC?u?8=ol!{xKK>p$iy@#II*x~^5zeWK!9Wn127;N1%Za68qdfi$ZW_GC?u@-{}uxe zGcf1`nFSf_8C;*#EDbtm**Pmzlest6Z`Z~Phm&_*sbxR%wwwP`vFcWj*5&6N3y#m2 zsyXwhg4N@f?_Ss*T6;sb-l3rCdGA1O;tu7S z!c!{`)UD(SKB!futQGC`Omp+ua1OH#@3Y@O=Y0I}TE@1!Y-i_RSD7&N%9{4j6H^bf zEt>S0FE()LQWeE7zxthQmLGq)Pw9{PpTZR7@J!RW5-WDEcwg<4w$xHiyMeFjj>pTV z^R>U)uC0FC8h^I`VcPvC$!v2E`5E1M;SxV-16#~ICB-Y6*99(bd(M~05h1&y;l}Nw z?>p~Bor{bU?(jKSSbMsl>G+Yvr1Mwezb8w?`^x=E-FIs8jc3;^qpFovoF{rm$*tUb wWQWr{?@WjNQF9z`aCb)?m}IY`x^rFaAAuEryFLHz-hXQi_mO>XF8{v?0JlT$&;S4c diff --git a/images/Resize of erwanDocument.jpg b/images/Resize of erwanDocument.jpg deleted file mode 100644 index 7611dcb812a06e5d07c6036af0b7a5b78ed3448d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 z46KX{t&EL#*K^&%%GS;0?aIof(%Sd%#6t5Krb^1DLNMZzs0}<)W9UjEXZKb z@Fvg3@6jEjXWP5)Y_9Waa5L6aIX)@a=}Le`=-txC4gv|!H|{hwHR8HC?Q$dQ@%e=^ zQyc>xO*^j|!M=O3`(BA(%YGj&J9pw-tLljrm4?oFmY=0UBXrl4b#HRmrxMrtsWUio z+O#)6^-ttZl65(!VHm8V>-dS;N`{uomIp<#SP|^L4 z_MD4_ao@~YmQI_g5hxa#_55@%pUY3FYUb-zQ^Ku;ndO;GP6jKlJkoUQ_O}foI!t0q z7(DEBR{XqbyX{ux92T`D8>Or}QZ;p5qUK~Wa4~8r2x;x2x(B-rFwNrEpNK-JP7<#8&pL fWZwFF>Z0@W87^Eq6Mt`K{iE!^Rtnb`|K9`ver)zz diff --git a/images/Resize of erwanIncidents.jpg b/images/Resize of erwanIncidents.jpg deleted file mode 100644 index 71d44335f43232b53f57466f590ed494daa160d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 zfTWp~krB{Fh6(HpEI^$GMur9xCNY88#^x3bObZ|;O917Vk=U$I_8yRRK)?jFAEGPB z5~zy-YMP;e0Z3K}i2om85aeKxV31&DRAOKfWMmd({C}IFg@K)gm5r5!osE@^ot>S7 zOOTt3laou7Uw}tYQcOxpLQFzJMqWcnMpjKuLPA+zSxr+*S65eB(a^+D+eAZ0SDTTW zo134PUrta^&Ouv6+ks^8{|G}R&;!8WL;`H=3>=J1%mNIIER4)d%s?�L6grWndQ+ zQWQ3FUR;{RI= zJj}p=6J!=-uxC*Gc3{_*Wk)sVF55Jl@wmFCc1-w{ivb_bCk44HI|j_z+Q0qdq8lmV zN{{ki8S{4U4ZODSl<>1peGK--3(sCUk+*((+_h!*j{XcSEnBzBB;DdgPOHEK>+1b$ zO$+bvna=un_0E1-zMD?-*0Ub{@R8d&ajT-;UgfF6FHc;wRCz00HaBR?s~blA`8S%D zohcS8T2b&UW&2*w8MpJycD|eVoT15T%l$vj#UHEXpR9ksbX|7;$<=oxvZmbkXq!hBaLm@WZzc1syUl=x1N=|W7BqyPuD0~X!)Mkd<&m7M1`z7 zzH6uKzNl-bx~tS0rfa;tDc^)K7J(sZSzp?GxBicp&hp#?6t zYp+bq6%78kJm|oLTXXHSU0Pb3{8dwaW&CIO^jqVH_5B_F`_`~6TN|P;pu6?0W$|SD G|2F}x-Se;j diff --git a/images/Resize of erwanNetwork.jpg b/images/Resize of erwanNetwork.jpg deleted file mode 100644 index adfc0de66f5b95dc6b26e5f29fa0e5c5d2cc4f87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 z46F>ytV~UTHZn|LXJ7&9G%zwWm@tWnff>j)GGbt0S^zQG4#;PQvh{&%Rw#Q9kPQM% zK>L}%CInep09jDe3=Iq*@(c|B4=@OFFz7SbF*7PLFbOg;3o`z{&CtTY&ce#Z%EHdZ z%Er#l&cP+f&Be*dCCV?rBPb~*B_$yyAt58Lp(G=#CMO}Gtgo!5simu{E3If~VyJDR zp`)wK$j!~o&&w|-C@ANkt)lHfGWdUl0T^zKEX<(Lh5J)VF(8G_649twk1_4cGVrCI!gaDZF zz|az8Vm4I#e~Wvmk>#!0{v@DvTYrry?`D;ve+WuQ}MnVQ{$L= zU-us`&8RG!J;iR$bl0AZj(ZqxJmLEqT)Lh+d-dE8`CGPesm(J#>Ez}YeuuHo-CmU2 z^P}jxrCc{m__KAol0)@hD$8FwJm*hAwz!n(na{`54LWWvjNcxxTA87EOG9B#-<>N; z7FU#ixh!~+w%IqzItVDOK<#PoR#c0e%PBL+v7(=V`9&jJ`CaeJ<0o6&x9ktL^g7Nc~E_kZQ%mvl_t5h z3Ue1rgk?;TsqVAgr^U81S7zJV^z4F7wwqIPr>XipNN8+4d2s2uxjFWGo@nbBv&jXy zynes))chNl)2t8pDQ>g*_-&2-wPjlm9iMx82Xm7rFYv75SNQha0I4V&w>^Qzwq-ucg< zeOb{^WscY1GWFet-zHL)@=EG(lPT^I5E*xuJ zeDnP3J2P*&PrK&Rad`XmNyWR_cS;_7`8lLyzNAh6rA=2BZ@aK1Q|YqK>6Q$)W%N diff --git a/images/Resize of erwanPC.jpg b/images/Resize of erwanPC.jpg deleted file mode 100644 index 05369a00a3d83d400845a7e1e012630815029557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823 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 TSC#5QQ<|d}62BjvZR2H60 zwE-$}@^o&6h2cL4F4((#GEjuGz$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0YKqVCOKg{Jc#bD9_OE>EaktaqI2PgStA(!h4%Awtyo^Kx|L&@GCQ=? zfQ=*mOI|mhx6AiTJ^{JAySLqpvRd+4lHJNm;Nr#a*DfjUUTnSopwPuw_jb`myC3i^ zvi|U#FZA7u33=~dy0)uY{kmSsyXdan`j5;V?D`@v+A{osZe#Ft^>bP0l+XkK0(xMs diff --git a/images/actions_left.png b/images/actions_left.png index e9ac41043e77ad6cdb31db4d074cea3da3485515..182b616912a0c2b90506c25ff98ede3949ef3bde 100644 GIT binary patch delta 98 zcmX@hSUN#6hKYfJVV2iNdmtrQ;u=vBoS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=8f)5S5Q;#N{kpz`qsmKhQO2R$A$vq&(k7G+%W>Z6MZPzi<Dnm{r-UW|45uH{ delta 187 zcmXRt%Q!)@o{fQlK~y6x14ywYdAqwX{0G4WdzViJif|TqL>4nJa0`PlBg3pY5H=O_Ul~Yyuy;6XS+87g`zxN978H@_4aM#Z7|?r(Vw_{fu}3G^Cs4$uqVqG9PH!X zSF^YFI>Wk+-Tt>M&2~DqGalixa;>ssH85qI=iR{hq~7tF(Dp~y*JVYX-2cT>?&^X! hky@q=$&rV@FuuH^(z%lN{XC#G44$rjF6*2UngDO;Lcah2 diff --git a/images/actions_right.png b/images/actions_right.png index ccd1a9a25d95e5b45e479aef0f8387d4a009a52a..fe7fc548386403af4ec1a5938bafb50642a03e5e 100644 GIT binary patch delta 223 zcmV<503iRm0`LKl8Gix*004UpCMy5{02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM005FnL_t(|+U(Y`4T3-vfMFnp-UUe9!cFL%!yRA(dX~Uax1go7(T2)P zOb8*CR*&y1E_YX6{=8g1U8@ZCq3{IA9pnyj2f2gXLGB=T_*k2RCm@XSbUt4C_06-Z z=kZ~>6HqGqeQTFv+OJ!eJJGy`=39JP)81!>_{GoTeKXfhcOw64e%{NS9g#b7hloA` Z3;=jAB%k+=&EEh3002ovPDHLkV1hENV^078 delta 298 zcmeysxQl6mWIY=L1H+g6jWs}uu{g-xiDBJ2nU_EgTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ETJ!OmgAZJp@%87Q>N)5S5Q;?~=nhI~y9A}tRiH(h7Q zPTDg~{KC9@3E2;~>S(Ot>1;Phkrx$NEmxl)|Npw<&XX;YW_QZjg&DT@t#{|xp5}jn z@wiWr%F~8?&!D4*4Ck8j+%7cwhI~I_$#8DJzX3_DsH{GbJzQJfW(1^=9!ajE!th!q44Ja z|IKXIei<6482Q@gJejj?w)j2%vU%)Im*Vz)c&w5+IZNg^!@pI%3@(g|7y=tK97Ghj z1Xw$m(730r)qG36f4}$jS1YsGxjEZ!e<+bV>Q-34U!py6s&jqAqs0+A`}$X3)sjD- z_SwSvw@|Ek@3yy#*3C@~j1Vz5|E&K7mk015s8=3k_hlk%!GMYJq z%XM{o;tBTW&*NDcHM>ftYtB6H@5>w{a{TsMy=4ytS_N@9>koTiNa$4lzWRDa_CT3M z6;-c5x^g$ymmmE6dHsvu@@h>QuRLWhXO>6k)*UOVlwH4GU(I>rsxMFOzJ2?3$L+VD zN?mWMzdS3Kd;3}K^-?ug!&!fe0+*^P&q|wixT5;@(X`FyqL1VUFWNKp(Tj(PKc72C s8QSFqq=+=gzefotsRR2z>m6WVQfn0OT)OfuFk%=yUHx3vIVCg!08rYycmMzZ delta 512 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 O0<2!S-t&$-oBw~fR*01V diff --git a/images/connect_to_network.png b/images/connect_to_network.png deleted file mode 100644 index bafb6c68520ccbe6bca0f6774b2411ecc2f2bfd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15254 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 diff --git a/images/contacts.gif b/images/contacts.gif deleted file mode 100644 index f8934bb8c91d35b3c379ae042ef178b8e3e8361f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057 zcmZ?wbhEHb6krfw_`aXvW{LXY!-t|=EnBv1Z-m^_r%&zr>^{D}SLY%2 zX|i5MMn>5Bu-mt9fBg6{V0}p7oQW4^`F;NUIi~c7x3{--m-Vaj3wHxSo#F&HnZSyt zjn0zpAw?Qh8V4HGW7lQ4XPvlw`SP0$-Zzde(Dgg}=Ij6eOC5G}n*qU;Hpq{$;N!v*48Umu6#dHr?azj)v8ruVq((L(tPYJj$zaP&ob?t)0v%}of#3F-}5i* za9E~+u;o_E`1tq>^Mj&QoP+8f7U>9FUltX7D0qRj=%W7ol!GZd+qJU7&Hrx;bV_lu zZJ$)(nP`%4;uG%^ocsCt^XDf|p4{vw9o~B9=FOY`m)Kug5_~LK*(Pp}S@qy1Kfb-rTpdv(s+VE=dZ`3HSZ9$=9gEDCtzv%$cC1!Z5^v;!hSv z28R6%Iv{_5@&p6NKZbfv8IKJM8k?ATZ%hhm7Vd21S>Q0~vf@R3UQ4-!AHJxZUN4uZ zqOqdo2q%+TjacU_=2K3JW@;J&kq0xJCt2^#sQFmD>eT8etDXr#$zC4o1XqjcO!%r9 z#$dc6iebhoujwi>?0gzc7Y|%mYh1t=yMSd`uN)tzP|r)_C(PO$8E>9cHe^m(s$d_o zLrTR>VGT!#8*A2+6J8UgBfbSheqMcgqIYRoPGX?b5f%lxEe|XO51eMu%M-ZRb%`^e zLt^i}BL}a#wDmLEaBSU`l-#ADDp|4j$7Ai_B_^y~XNm%|JhkGvPGo!%eIVWxz`|jn XF*&J?frrN|RDgkL;rB*HMh0sD)P|h3 diff --git a/images/contacts_big.gif b/images/contacts_big.gif deleted file mode 100644 index 6d0d4ba4d2d0b59ceae5d2b22f123cb463f8f111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4586 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 diff --git a/images/documents.jpg b/images/documents.jpg deleted file mode 100644 index 14f1143e05bef6a4399611fa8feb3f8544bb65f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7871 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 diff --git a/images/erwanBuilding.jpg b/images/erwanBuilding.jpg deleted file mode 100644 index 082ae15fe8156f0757e4d506dfc1a35c70d65e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 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 diff --git a/images/erwanContracts2.jpg b/images/erwanContracts2.jpg deleted file mode 100644 index 8d825a5607c9258cbda1edc554a6e481b03b082e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3298 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 DVp-zZ diff --git a/images/erwanContracts3.jpg b/images/erwanContracts3.jpg deleted file mode 100644 index b7bbf7d827f1d1763992b412299af786270c3040..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2609 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 X=U_(TQW>p_RZw=>KgW$#IGFwybgGCQ diff --git a/images/erwanDocument.jpg b/images/erwanDocument.jpg deleted file mode 100644 index 97d8345c09cb223dae6901b6961e813afd72171b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 z46KX{txQaSHZn|LXJ7&9G%zwWm@tV6%(gHvWMEnVFGgN|+iJ3)^ zm4Qu2(U4t4N!i%3uyLc2SurC6s%~Idu`miUFaZrkHWlb+CLu+~!vD7zcz_z11epaH z>>0M-saSh>hw7Pp@ttaaR2h2G{2cpLmbI=}5U_gJ>thWG2hS%LWo4y^Zq{AS#NBWA z$Wo(e;ZfarUK{w!-TJExzxsY}dpmdHTrTg40iTlE?i4>VS+yZL;;nc}V~xjN?x#Y_ zHtXu%{1iXowu)8foPeYidjny}Y${_jb-{`*6s) ze@D3GqDOnTnX@dNHd7-|EHvx+>0UmUpHg=nO_zEWFElXxpzJf%$ZC#gH}mX{!)p@~%{6CiyyL9tnWf#DtH9`>>gAylS}B!M9UiDN>po+Cn8B&Z z-BWhlIR0F(q*yW|k=4t&`CjHNroWey{vAGOb@E}3%;lw8Q#YxejH>T?VzcD>jiT2+ zv-agbsQYTT?1xUwjW7Qhl;@pTEOhSf@kcv!`D}je6y3tOd)KcYpYLt6uvQipQqHk> jb6l+P*4~Al`w!S=uT%d$E&Pwv-&fE4&xLK^|9=wzxfS@* diff --git a/images/erwanIncidents.jpg b/images/erwanIncidents.jpg deleted file mode 100644 index 5d5a0a3a41df85a89b365a2356d3ccfb9eb487f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 zfTWp~u_@3-h6(HpEI^$GMur9xCNY88CProqObZ|;O917Vk=U$I_8yRRK)?jFAEGPB z(gMhWnr3KV0FqS#;{OL21UVQa7$le(l^B==8JPtc|KDb4VPI!rWn*PwXJch!XJ_Z& z66EIMoq>siS%86&g^`JciH#d7!N|l6bS{G+ zyO6M=kt2s_U}$2YxRPPe#K}_@9=v#okpa~d29SC|1|}v(79N7he2- zi-89y$0W!s$Y9T)@MX`=Ez6E-&Rw=?Hsf)1P3@TQD;EP^&O5TC_gJ&y&P-{>Ua>mI z;@6e?BhHxVeRhv(d*R=G$c*8SU%SP^2{HEygRZT*cl4*})M@KxT%2=z;@&Av4sYN5 z-E!&phKOrf$LH*rD9Lx@@Vs^1-8UbJwH?lKs`=^mO8s=bK=4 zS0=G1IUV5sDflPj@v{5(^FLhH&QdYbG~F4u>#M~x8?!U_9U0L~?ZQ%utC7&hIqE;~2tGRU_ z?$hwx*0FNO<&y~>xqkCDyR@`6`8`efneqL_ch&DE{pYfOUw&(+{ORhJgDkV-Q`?Ir H|K9`vy%qWW diff --git a/images/erwanMobilePhones.jpg b/images/erwanMobilePhones.jpg deleted file mode 100644 index da9c953aa698f13aa6347761ce386c48f0feeb38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2569 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 aOtj_xzkFoBAoL*QH5Fj)r@}<}v;PH-lVw=| diff --git a/images/erwanNetwork.jpg b/images/erwanNetwork.jpg deleted file mode 100644 index 1be5244f43911c0e342799b99fdc0adce027316e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 z46F<+tW3;+HZn|LXJ7&9G%zwWm@tV6%r-PMVqjVTFPzs=CXz|O+T#>&FZ#>&Rd z&d$Ll$j!yc$tB7!z#}LrCM6{yCLtjsuc0I(t0pHQp{%d0rm3Z?t1GQ&Xkw^sqM@U! z&B)Eo&Ckm(CnzZApsk|qKr;A$gdrE`IYv-m!vWAyjO+poOiYYStjtX8P;o{kW)?vP zRv|@0$3QmW!i679oDxemZo0?_1aPe&22i0O12fQ2WKocyq0s+Z3_L(_CPAPIdxm$v zzpmbTMB7bl!igI?Y=xg6R9bnzs(qZlTeqa`$${$=Hf97&s7#hT{&CTEujx@|SI+ow zSS4rUa*0POD`f0t`t@o{b#+RQc}E!jn|aJ`)@7MhFU9>TBD{B*?h-t?<-{dX1!Mhy z8&4zzPn4_wy~k2uUiDqO zA%Jt+$h9?zL|(!l!x0 zG+okaO@8qGQ>lYhfAiAc`yYM#&v0k{s}jY8Z`(TMi`2YX_ diff --git a/images/erwanPC.jpg b/images/erwanPC.jpg deleted file mode 100644 index 4c2b86166881b3364a35226cc307b6655fbf0836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmex=~kX3=9mc3_^^|42(b)2pcjoF~|UEFCaDovPFP2P%(or z6GBa9I}2EC6;K=m9GzVhf-8$lQge$HTr$%$OA>PwJaZG%GxO3Jj0_CStqcvU3@sE4 z46KZdtxS!9HZn|LXJ7&9G%zwWm@tV6%r>zwV_;eUF&X3nW++<%$YzDI_W;=-zy!1( zqASSK0?2}zW@umll2roY{|6WZIT$1uWSAM17?=bZnFSgD-)3lGU}s@vV`X7yV`XD! zXXoG&+*HDs?Rg;sDP}Wyg)6~+{)sG%?gR(a_P= zX5{AP=I7;?6BLwl&{olQAQ}8W!cYQoJu@h@VSt^DgOQ1aRe*t!nURf&gN+#~!N|nS z!pgwLE~scIlqjsEY~&bNSi~V}+Bk9J!G|9hfdFO#m}UZclYtpcl#xkM(D45)1|Fb| zOoBiK_6$i!R^K>#ZrA(sHd>SRolxw`3-^E$h zFGNi4C*=0z?fsnnqtQ%cT3oN(l!twXwJ*%sUhsRrLzLFc?%HWLZP+fh>iVMHa@_$-HoWd@TI$ucXu>Urt6rWTK3w>5Gh5H;$bSaDE5Aau zI-X2dHT_(9q@*K0WZ}j;4(j#BeF{4DqNOHVAgFHy^z#T66fp02q0(CfIX z`QNM}!ge-%?_*6+Yg_TvgWIxo*N@bUCmSdJ=|8$A;BMTsoAZ9(+t#^hOV?}n!@G|i zS?W3~?Z}i%TeD>R=5l-9Xb)R3=UnvDUfpId|$i``v0H_5W`I0B8;F4gdfE diff --git a/images/erwanServices.jpg b/images/erwanServices.jpg deleted file mode 100644 index b840279c2f830efe37a2fd52f0a5b58e976138f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2839 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 CaWuaG diff --git a/images/erwanTask.jpg b/images/erwanTask.jpg deleted file mode 100644 index 250e931dc7861ac44f70e87de6b6e745a287a800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2914 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 diff --git a/images/erwanTools.jpg b/images/erwanTools.jpg deleted file mode 100644 index 96862cb2c6e1f1c4e7d7f734d64d00de5b5c4d52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2247 zcmb7Fc{tSV8vf0UeVvhgCuOIx8`)(UvWzABzJ{z3*$df5n31KDEn5_Yu@&->R7`fm zSjxUcVjRLZopYV@{eAA|zxR3X`?=red9Uj^pE_Rvph$fqeEcQgoOq91O!CH6r@Bh!$k!Iq}8S2ipmHC;-aLc zo~DYff+|A!j|hm4j*gLmk(-&BTltc}CFTDc=iLB|2Ji)ZAs}G@3mXOaZ2*f>2Zbxd8%0016nT5ETnt+ro|df^bM;P9rPZ zMV-)65jl5ulx0{_4?ef4cX5|Y=OVWO@~0L500gFhP?A$3FmhQCgn}&hUx2_c2#XM$ z;)3?BMMzE~{(J^tAR8l}!T?R6QyghdM`vzMhiVLvW%;QTPKj(oRkfyWYk8rt$+a8i zei3`0LmnGR=%sfV!y$*WCyCGG{m2{?28^i$D&Zz%x_g2-#NOEB@VdL#TCNgv=Z?m^ zu3H=MYLi!cBKb{l@Y0-j#(|7=>Id;7?i5;$h-$`D(tKy6mk$?Xpcj0f^3jaPzWF<5 z#Qf&*!stlsl#oBCq|FPjlpSLt{#yXbtkq3qO>p$f! zS)Z|1icyLqfrx5>il(&7#fYIn1P1`t^>C*l!47s68^007oCQWttzV0e$$+3W^A96K zuXfxi$+F_0uXc7M5M~Dz_CF5sI=AR-(Z;5j2J7mfw+JZzM}hQybuN<7{4*gDP>Y z5;QiF{Mz#yVX+2gMZPS;4SGSz-GiVM1C731<*BjOYa!plV(@E%VaTt+RZzknQ$Z_i zQ3m?cj45n`aN4uMd~(mB9kW$YwzQs(!U&=;|9-9i?NfJx?&zhr9imtzE9xlDUluFz zq?y+Zm(fIyA|I=CMX8+ukQSH7xN6@Feo3wHHdkLwC4n7{2laSs7Hq|qCvH6se6<#4 zhcF0G>Bx?Q@r^gr9u%)1ND?|tR)rNElhnl2G4X>xT&@dEH=Md*3f;8uNrac?oKXSS zLcGchrHD%l#s0oMp=_Xl3sd1dPtO7F$>~{zqU{X*QXz9!&RLv$^wZO~I(3{KExyA= zi15FD93RVO1zGvxbOQDHDsrch(0FVKAdna|Q^Ql4J6EI-#m?11r4n$PBC9mup-v^KF|wF=08#XF_PBg0!XGKk)5F9JZQpGapKv9vo&U7bNiuqWkzB)UuP1 zxR%$ssJbw(t1i4JBu|9(PrK7j9#YDuMbESagylcU%ob@m^TK(E7rqHhH^TdkgX(T4UO$z z`84fWYY)HAINXIMqr%#N#L3WL4pFY|O^bEumBb5^KkMKcy>P<(zM}uJ@`$yO!!X_(4Yx$yDHX>neTJLb)r$y>;=YHy~ssbN1=E#rr(oV}6MqPJ< z8EPn!LF=Dbm!84<1k;4q8mqNTzq@)Yj#$ZECqaE>CiaNyX{m-IX5fa{P_h2`F)E@f zXv*5Bx`)3oqMoDqIT0KM4A;fPxx73F=(+?|lQh3-V4b6lM<{IMT7-0$zn~`f@*oTZy9xOA&^yX?fvx&+FtTpL>SYUJ2<`*2}pV!a% zkz79a#m=@=#Uereof&hzX=AfT*W>Gvd=oTSDml$71G-wixN_8ZctN?6(pn(9W?#Ff z9Os8UbM1cRFU;+wp?lcvgF3sL!FEpCa*MgPhcS290z3m(lFOV4EB^>8J~F~ z=Pk6%TZ^pHhC_T)Y}+yvB-(rj9A7^8xw*LLI27gK&xh^L6TuVvdY+6m3MEy!8%lq1 z;eE!0D(9-}3_i@{De$w=T2<5PinFdA$7xKE$YP)%|A6Y=J7q1_a=H4t*oXtW5{3EfRn= aN{N2UW^p7)`=9kFuJvcXqA=9w(|-dil=k8P diff --git a/images/hgrabber2.gif b/images/hgrabber2.gif deleted file mode 100644 index 1a43c7adfcae2d4e1c156222db755342b14340f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmZ?wbhEHbG-BXjIKsdXk<+kv{qE;)K0bf*>B-A?rj9;t;c5HM-118-4$rCIe&oW& zy~lSPy|ifku1)(+_D-3dUDo{n|Ns4GZ!-`F6o0aS73zRUkev*yVF@35QZnadteVvN za8H5G`I6lI-Hiq{@BiC7rFf_?^gFOJDP&sBzwn|#LeORXb>@c7w|2`z*GHTdt!59~ hEIxt5}0 diff --git a/images/hgrabber2_active.gif b/images/hgrabber2_active.gif deleted file mode 100644 index fa5947bb58992f80209f41c2bbeb7afb29eadb4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmZ?wbhEHbG-BXjIKsf7q@<**tQ?+GpOar0k=yX()%&d6d__gYhtJ>a+Izsn!RP6# z52lVj_n*Ajz3-rZQgK#Jo?CeOgQu^u^9uYDi(JD}vvcz!avC1Jc)NSwfd@}t9zJn4 zyR7-?>kkZIp!kyoOzVJ1kev*ykqaKBq-4&^ShX(lP{<^;^Ch|WE7q9`w*Eb^z@Vdn zfyrY@>WLIPmboiRyq1dbus4(iyshF4SRYY!w&-|JC Q{~8*bnp;}iniLtV0X>~zng9R* diff --git a/images/home.gif b/images/home.gif deleted file mode 100644 index c2c8262e3e4d7dcf5101d509201caa3fddb9be92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmeH`TTfB}0DzB)mzp|9cH4BN>o(T|56q$FLJ`HyHD|52He0x9tF~M(&dp2Zb&4ZQ z#an`K1SC)M4p9Xk5 zVHgfO9+Frrslj0N4Q4}a>7mhlu~=oZg%k>%QmM1P&48dIo!(ws%li$Im2!;>L8;Vk z{|L!ESsmOF@C9=5-2TkG*69ozMb%Cx+R;8O6mE}?Yx?>nR%?jKoOij=r6u*=o~5Q{ zbYWo=9=wAL+%_;s6B8P%YzRS66Xg5Wbziq{+1PZ1ruq&J5YudnT&@*~)N9;M%WDGS zMJ6(<+ncsIHD51oPG4E1LuLv-3o}d5;J6deI=4e9%*LXb(b=cV%T~y|Yx;Q)ruO ztElK*Wi@fR%R1&gM%Uc;p5nTCp4W#4zRVy4*;YCpl5qqA<>b_^onJQjahJ!Fxm@T6 zz9a~eX|!3hxK+2M-W+)1c84_@NUKk~%$EHR%C+0|ml}1(*u^@$bQNT8?y~%vK>bw-N X=C)tSkhc(WiBLE0Dolxs1+xDDJ!yzi diff --git a/images/itop-logo-external.png b/images/itop-logo-external.png index 14b80bfc186924b98ebdffa8d4131120e143b9c5..8f9f434f81c4d640f665b96417db287d8e7faee0 100755 GIT binary patch delta 3202 zcmV-|41M##AFCOVNPi4XNkl^RfW(LScNgM!uZ2?|DR8-XGfYp2u~KCpmL0fj(>BzKp~ z`yRX7|F`>vTrS^UZj*xm-T%yw3wwLt?(OgUzkc7BNV=}Wv42zBWakk$Bs%7h=$J#I zV-AT9iH;kTy(i8iZK zT>zE?H7LbHh`>sCM_%4JL(UjWME(t~0p|d!mU#@DS$~(%C^+7jGN5j8PPW!``n4Fk zPTr<<19W;#=S>0CYI7>*t1aLS4mSLtvBzV{>*{c`7Arv@Op z;ipI(`V`IoUO^sr0elnYclm5=&jvJYdDxgPN}vLP>sFdoYnL&WAaQs*Bv;lUR}$ny z@DQ46o_{_(8~5o|*w6!)JVo%1p5EP+^MmFOYAYgZe`t7>@1h09q4wQX2*2=sI+QRT zyW}Z^_pBM+$MBVz0Wy1w6SfQT-4UsCB=)*5Ei5u(2J=afYOIW|;jgJVQDkEXBMAXQ z8=;!8o6wvCKFSFf^Ra6Q|KYDWDr|Hf_9QvoO@EK|gc3c2$eM*viUvdSl@fuo=}{&i zDT>){u+MAMF~~0Q7(JLGX>d!13m+v+6lH9gO%~J5TL@Fr2)lsru7Jb{;Zj04ZMf8_ zHIHyNVZ7kEF(O|g{3=5(9Yk17$QR`C9}w>1C{KBh-OpOWeT0VNSDmKjGub378Tk^5 znty=W7K7qb#OK-#8ARZbcoEjukL3(>Er=xMg1Uqj)r-1B0X#BG!bX*v?s2k3#m4&M zc8jq39O1?cw^u>Buo%|rj&3e_s*GwP~S*o9w-UEzvAZe zm5LT#fwu2_6_U5ec-V|o$;I<1^FUc}Nq^bZV*+HTsy`oF8_tARPRcywNNMM3JwRe!IT&!Fvtiva-L#>c+#|F1L_-Rn+5NvX>@Lx>8x!Hh=2Jnv~6EaA#^)ct#TJfF{Qc^1m|rqUh7v( zL6SUPa_3xYwQKAKz9TrU@_#}jl5%VrVHRPOAdg+jJvNiI@yfS4N-o>kj-gmO&;@YJG2|0i9Ro5;?k*R|4O~ z^N~09Iz-nmGixKsd>nE?G0GNffP1i+*Mkc;qyDLB6mGvd9-_G&V}I4=*@EMH3EKqT z|CWG6_64rUf<%?~z3H~i;`|G;^F&RDLY`N0JLyt8Z4728*RjJHcKYWI~no9qQaproX%Lo6=hvBZ6)OCC!GQ9c* zBx*mS{<7aT9*ne5gn#y=2?8DVJ}){%!a#53&w7g-KOid-nVy+HevVL~ag~ih$(-jX zR5luYVZ*xHh`7%F)*z11ZA>E9J@9Mj_Do5;hVIm%X{s6UVleq4HL9msN0aBw#JY* z=IWj+T(=Lg1D~Mov2kF(Iv~kj_^CK1f{C?g34;^Vv1Fj ztz~%;$q4n4*X}a@*Fj`#&qjowzn=0SlhU}jW#@M}j8zO%6wwpyh^$>`j^ClR?plZN zsyTF8(va%<(SNLVH{@9y57-k)l@F_N|WXfmW| z*lN<0^MB-%g20Xf<|E!BqC)O6E(2ac^?$@zY0ts#`%_7>F0 zL346&i&ou@c=bnS?|Jgr%K{RaJ<2uO^}Lr{0e|sktWAVNSze2UqK^qr^8e4Z&}`X8 z+JE-0dScb2n|i$Amvwt9{PJ9=jdhea6*I!Nt0S-+zEoGPILOBRSe%6b3r>N=T`VY>|z!JXOzx z&Cfkfn2(^U2{DFumiKurIjLD}Sr_ps@l^)l4Q5)ts&T_EHXGYi)(xi$W0Z%}F;# z{0>25-@@Ok=S7pBPsT7T)so00uGi4CnA z4fP*ZWAqqvGzAli4r5e)Jw9(OXZvjWi$tCGk##v7uOp%~pch+9a#Pq4Ie)s^W=M3c zAFNCva2>*{=Nija#$Licep9yN?VEwUa16cl#2&R##aJhdRNhHm=cC@wkMOFwrq-Gx zDJ@3ccyVzxwl6h~v4F(oApEG1b2pJDLaObXU}= zY_dhU-3OPH&0$#spBpXIoqO($}Xu&-%NPx# delta 3999 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 FV1h}3i>Ckp diff --git a/images/itop-logo.png b/images/itop-logo.png index 14b80bfc186924b98ebdffa8d4131120e143b9c5..8f9f434f81c4d640f665b96417db287d8e7faee0 100755 GIT binary patch delta 3202 zcmV-|41M##AFCOVNPi4XNkl^RfW(LScNgM!uZ2?|DR8-XGfYp2u~KCpmL0fj(>BzKp~ z`yRX7|F`>vTrS^UZj*xm-T%yw3wwLt?(OgUzkc7BNV=}Wv42zBWakk$Bs%7h=$J#I zV-AT9iH;kTy(i8iZK zT>zE?H7LbHh`>sCM_%4JL(UjWME(t~0p|d!mU#@DS$~(%C^+7jGN5j8PPW!``n4Fk zPTr<<19W;#=S>0CYI7>*t1aLS4mSLtvBzV{>*{c`7Arv@Op z;ipI(`V`IoUO^sr0elnYclm5=&jvJYdDxgPN}vLP>sFdoYnL&WAaQs*Bv;lUR}$ny z@DQ46o_{_(8~5o|*w6!)JVo%1p5EP+^MmFOYAYgZe`t7>@1h09q4wQX2*2=sI+QRT zyW}Z^_pBM+$MBVz0Wy1w6SfQT-4UsCB=)*5Ei5u(2J=afYOIW|;jgJVQDkEXBMAXQ z8=;!8o6wvCKFSFf^Ra6Q|KYDWDr|Hf_9QvoO@EK|gc3c2$eM*viUvdSl@fuo=}{&i zDT>){u+MAMF~~0Q7(JLGX>d!13m+v+6lH9gO%~J5TL@Fr2)lsru7Jb{;Zj04ZMf8_ zHIHyNVZ7kEF(O|g{3=5(9Yk17$QR`C9}w>1C{KBh-OpOWeT0VNSDmKjGub378Tk^5 znty=W7K7qb#OK-#8ARZbcoEjukL3(>Er=xMg1Uqj)r-1B0X#BG!bX*v?s2k3#m4&M zc8jq39O1?cw^u>Buo%|rj&3e_s*GwP~S*o9w-UEzvAZe zm5LT#fwu2_6_U5ec-V|o$;I<1^FUc}Nq^bZV*+HTsy`oF8_tARPRcywNNMM3JwRe!IT&!Fvtiva-L#>c+#|F1L_-Rn+5NvX>@Lx>8x!Hh=2Jnv~6EaA#^)ct#TJfF{Qc^1m|rqUh7v( zL6SUPa_3xYwQKAKz9TrU@_#}jl5%VrVHRPOAdg+jJvNiI@yfS4N-o>kj-gmO&;@YJG2|0i9Ro5;?k*R|4O~ z^N~09Iz-nmGixKsd>nE?G0GNffP1i+*Mkc;qyDLB6mGvd9-_G&V}I4=*@EMH3EKqT z|CWG6_64rUf<%?~z3H~i;`|G;^F&RDLY`N0JLyt8Z4728*RjJHcKYWI~no9qQaproX%Lo6=hvBZ6)OCC!GQ9c* zBx*mS{<7aT9*ne5gn#y=2?8DVJ}){%!a#53&w7g-KOid-nVy+HevVL~ag~ih$(-jX zR5luYVZ*xHh`7%F)*z11ZA>E9J@9Mj_Do5;hVIm%X{s6UVleq4HL9msN0aBw#JY* z=IWj+T(=Lg1D~Mov2kF(Iv~kj_^CK1f{C?g34;^Vv1Fj ztz~%;$q4n4*X}a@*Fj`#&qjowzn=0SlhU}jW#@M}j8zO%6wwpyh^$>`j^ClR?plZN zsyTF8(va%<(SNLVH{@9y57-k)l@F_N|WXfmW| z*lN<0^MB-%g20Xf<|E!BqC)O6E(2ac^?$@zY0ts#`%_7>F0 zL346&i&ou@c=bnS?|Jgr%K{RaJ<2uO^}Lr{0e|sktWAVNSze2UqK^qr^8e4Z&}`X8 z+JE-0dScb2n|i$Amvwt9{PJ9=jdhea6*I!Nt0S-+zEoGPILOBRSe%6b3r>N=T`VY>|z!JXOzx z&Cfkfn2(^U2{DFumiKurIjLD}Sr_ps@l^)l4Q5)ts&T_EHXGYi)(xi$W0Z%}F;# z{0>25-@@Ok=S7pBPsT7T)so00uGi4CnA z4fP*ZWAqqvGzAli4r5e)Jw9(OXZvjWi$tCGk##v7uOp%~pch+9a#Pq4Ie)s^W=M3c zAFNCva2>*{=Nija#$Licep9yN?VEwUa16cl#2&R##aJhdRNhHm=cC@wkMOFwrq-Gx zDJ@3ccyVzxwl6h~v4F(oApEG1b2pJDLaObXU}= zY_dhU-3OPH&0$#spBpXIoqO($}Xu&-%NPx# delta 3999 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 FV1h}3i>Ckp diff --git a/images/logo-combodo.png b/images/logo-combodo.png index dbf8a3ee6adbf32db08bbb386abca3c969759f9b..66b1e07d23d24d03296171c4f37882052dd25651 100755 GIT binary patch literal 5462 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 literal 7369 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 literal 146 zcmZ?wbhEHb6k!lySj52aeY^kn9schZYkfOh`0f0p=lvZ2|NsBK-B0l+3j+w~fC!LU z2IlaLEqBg!^?0tH>pJi3ZhI%Q8Wr&@`G9%Jo|~dCNFLM9({dM=Kl60=Jzsb2OIG`O xFP^xqV%~a4?-mQMt>gL05vH-Wfr_V={+%@UnX&hQyxsS6G)w)~OA9er0{~O)J&^za diff --git a/images/mini_search.gif b/images/mini_search.gif index 618bc7ad359ded69951a59b51d6234e072ab8c53..cbb169da13bfc0d50169d7e7c70d73a3da6f007a 100644 GIT binary patch literal 99 zcmZ?wbhEHb6k!lyn8?8JezDf`evbeD|G%h_Q~b%o00KH70wmACWHP6J<>|NlGiNAC yF*dCeV7F`N{g4{|VZxJ*R@zl%9pZsEQZl9UBpFy=@Yb!3V^j0dnm&Pv!5RQn1tBy5 literal 148 zcmZ?wbhEHb6k!lyIK;~Eyr1L!Vy*An{k|P8{C0lQe;CkV00NL22Ij(F&}x45HOjf!|y%tEoJmU*rm3~!zvO4NO^jN|gc`Omj4W(+#cx3R!Stlcg`{n;IX w#MKR4U60PBX{SzE63V(Jd6QOU?%4}>g}$rKXMgu&&%eAszy8;=axz#00O(srRR910 diff --git a/images/mini_tree.gif b/images/mini_tree.gif index 211861da175bb233d3c45e7aaf8d0df826c616f1..9d7ad958b8202eb8eeb9b53f903a3566a341a5ad 100644 GIT binary patch literal 74 zcmZ?wbhEHb6k!lyXkcLY|NsAs8ac(EEDRu^10p~&3`~kW{VPwu<(2CW3T$|JSn>6% Y&_$nnmsX@Eh|GG$ar~3dc~%B%08&>PX#fBK literal 140 zcmV;70CWFGNk%v~VH5xq0Kx|V_qR{?xKHn+D)z&1_Ro^%j|l(&|M#~}EC2ui02BZe z000A7XtdnUii}CCokgC_yFWrUd?XiYhf#Xxn66#Bsi|R;a$VcSmjg4Kp~n(^3P@ti u=%L}59j6bV_!{?nM z5R@y?uu>?#Rf9>Tv-8uZPtp_i^LZuRzkgpefAWbF zC;tBZ`}yce6M{L77Y?EWHq$9Fs5yA_}B{J)dv;?^>GSJ>v3rj)7qYdbG+ ih7`>&TKH8ofuZ6d$IJRZWru-=GkCiCxvX{eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00gT^L_t(|+U%E2Y#T)s$N#(DT|54W?HD&vlr|rhh#)8pqEt{6sgwwW zg1B*^2P7&{pqENq3aAnl7sRFI5CK)hg#&_HDTqcY5-8%MKz|bwf`BA$X&oo^_r_k^ z>u+YBosv-2wUwj?$dg9vUC-`s-kbk>Gb240Ygkt{*(3K~0t^5>uOFK3VFTd+0000Y?C;(7v`(K_nNAlLJ?fqVH0AQUK%P4GXw>sRDPD!*wrgN&-P1CH3B9m10 z@NboaW2J`cM<$gJ=@Wzct^qAZNe3tZluEOOn)S+PeSfTE1HiVdvb{UrlVCjw*5cs> z%lom|I$p5P)LZ}<)RlL)uhM0q1N7vXvwKHMvre!lLz}U3R@8B`QbyKj*c7711sbEhqSJ>$*ZMgn>rwWYV{vpkGol>dTYT3R&|DwV$^gOT8 zs83H9`jYJN{uBTl`nA+>{RrsSe;B62hi{K(6@Q^zE<27hXNO2}&Mm89n$?}X$)reX zZU4wQQ@DEF=V!|RFuW@1d7kfc#u#I4G5;XCZd;RtEg9u#&Kk*E5zuqh765Em9(S5` zNfH?oI$KDfl#)%E_|cp-UT#HfDB5mUOi&~-@WgmL0T6bCGR6p@*@OfDhQp(?2*Qvt zCV$Hc;x(C_QYuLz5*Gj%#R%wfMVvBQZb)QV76iJGJN{iUs3=M$rw#y`7zOR^lBdkp zPqWQ!t5TGbYl9L(=*gl504o(5@uY_PGywQwssezBo%;CWLn4A|gQ~@BcF6@E|VWeSg^)iL7RKtw{J`_`>n2rsrScVlk#D{;RF>rzhh%{YA5NH8h=a=>TbsV|sgDo@faf=A0l?u269AsupzT?A<3s=u zF4v2fhIB+siFD8Ut|iW=Xc)ztKb~{WZ!VE@{uc~23{MIzhUfqQ002ovP6b4+LSTYw COJEWJ diff --git a/images/software.jpg b/images/software.jpg deleted file mode 100644 index 28da976d886f249ca01532ea2214ec700404f1a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2186 zcmb7Ac|6ox8$YudYfPF#m|`o%_@6ec!*|@A;hbd_T|k+0G;C67>T)X9uzafWZNPK?jIFf?@l= zBEtb7lXZbO000G6!w@UduSL$8V1W|Aq?5u8H? z1OLS>%*_D&+P{^LKpNsV_k}p>H?N2I3gA%xf3rL`SwQS}HKMWcin=nh=n24x17C0i z0aFKX3=DyRi9UcdfJUOkP)M{GN(_xgi%VjpBqbyyv9fZ~7{#?pN(yTg6qIq=>dGpb zstO7OBZ8)mu7QEUdNm@6s7KP)H_(GgNlD4d$f{y6sy2EWdN%(zL@xleH#hs1Ev_;Fi2d_~#VO+P{U5WKLn%(vhssZ6Y zMOG{fj)Z=?;)ELfSAb#QtJR1IThV(Ujes_XL12J2_%Z?-4n>IRTyXc$)r(-|z+9TZ zr_B4gf87)?JiV)`8>3R~taOHV$xGJi3DYEZ?VKvCEbxd+V%qwf$ga6C)?2PsVrXpH z*>6V`w#TiSP9CeiX4hVOZNcnfhq-_GwsMV4b4*)05qQM8Dv5wwdBe-Wq^{+Iha{Dv zR6ot6n3V)l;xjC6mRzuks-|>wz3Ypg<++dWqdlA52qfo0Prpp$5%(YwW|}b!C_JUwI>F+>RSm){HYyTL~2n+ zd_?m8Y_lw9smM@8r<0=zI5kHLmc5lX$=r|Xb)L)at zYYgNUFt)$Sz1X)t{R92;w_ZOEK3Fa>d=lmJWyja?j!2Hak1(j6BcZURk|kAb_JOx= zhGnFob@la;$>PyR6O^d20Deh*{XUqhZtZbZX9&TaT>=lKg>8;%D#Ufk-wX)dD-V1{LTQAM>A@%j&hXZNt@7_8wm3XSkodRY%Qu0WUXQ(3cjG!Wb zm3u=FXzFm~MOdm+?6q0N`6lczvzyIPVYA*}VXJqv0Hlt}{Kxb}7(QSR^%15SHS9T8AjGQvUXEE|cCJ_spUR z{ZyqPf@?98x0SGiqUC>C_}2fJe!Fs2&0I_F{L}!u&M}D5_m7kc;$qVG4wtU$aGKXa?^!?G1(}cUf!OP2zYkTw+ z;ZfXFK=e#v+@p^@hUaP)H&p7#&CTtdW3Ic^d;L@&xnepaGKEj7M$!n64!tTkC;oF} zTm+~*t>;dEH}bXzxx4L`o@E*e_{`}M7iSB-)0ws+#~eM6J#F^I^dU~xpQqZZTU^h32d_07u>m;v zMTRZIx3w-)9_Gm4p&HzKhmRW?2-Cx4lux+x=a4~}-*C6*u`izsIEAjYJjpB78i-QX z#-XJ7FASmgJ@2aErLgINcYGOfb!@6<74rR?WZZ?l#f#oJbL?|2ekPJV^L(VXe6MDa z>3;OtnHM5}PeQ`7XA1cTc-8UrZZ@5%zac@&=<(P3FsdvWwlh(&MI(Ww!lIA6(#O90 zjCnoSMTwTs9aITKxn|Gm`EVw(Iy15NU9^!0-&M%JUa(oxYd5-j=(18Mv1f+}Y0$P-~>6hhCC21%|2oFoD{d`GQ zsZ*6nkm6Z&jxZQVkFyzWDLl&5^p;rqr-WxOgv%Ylx9A2mk643ft)PR`mr?`=ZYC^W zl;7_d5}h%sCIY!S1~*Ozd%`AlhR|ZIT=lwr_oLqG6Kd>-%4j#~6jO&keSPoj{qb0n z&2d6`3XC+XwD0D|t|B^DK3%#q^6osj`E=(KzeTrQC#Kg%Q;*3ATLX`7)7p}`{)|jS zVihAZpQ@j0OgoDWteNdRS*xGLdR*$;+t8JKYA%0vYeVRlL+iRbP0~5(KOIU>P?|SS0ZkRuR-p7w0w{PG6`}gl9OO`x(^yvKg^MC*T`Tzg_w{IVTEaktaVzNoGgDlhLPBzCVp>v4LIZa};fI3F#aumL$g_dLp@ETM X(R*#!M*0@;+9yj!@utC>gwv|%*@Eo&&$=- z(A3n>*x1w2(arPo@0ggD^78J$z`el0yo`*Ar>CT|v#+|kwwjukx3{$K@9N;++rh!U zq@*VC$;o;q_t*Y(q>7k*X-rm{t^zfUTn5?X+j*g4uPh&-wZFudl4c#KD}Ln2d~yj*g6|sHL*9ubiBju&}MIt*Mifkix>hm6ei~mXoHY zqt@2Z@bK)syt$vBoTQ_mwY9P7>E+1C#m&vh*4EPR@9Vp}xUR0Nlar6n&&T>)o}AFo&B@Bfy}h~4&dR>NyQ-?E%ge{#-`bIp zkC>R1#Kgd$pq;q5wcOm-mX?&Uv8~9+#Gam;=;-6x+Sc;&?fw1y|NsB?_VH15Tx$RT z0VYXAK~#9!?8?PR3_(AG;E0SSAD4c0l94OJ`dewAOjezsw{=` zI2gG(tr`da+q)?I!!IDAr8REE!2mQYu4i10iU7Ov<_@1t3sCA$a&7Ak0F7td<2hpo zSm_^J*b_AXl}{&!)XOHoT0!b`L^%O)Z+sqhXlQ`R0oBDpdKo}_X7X($p#a#}8TT@@ z5}>oY&vKk20CXi@`V3|@z-!a>lwIiocsPoWx)Vr%m>ae_YbYO}YJZE$^|%32N?hSI znGI0fR@Y;ira@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%@dWsUxPJQd_SdiP|NsC0_U&W$ zx7~+;;>w;bjv*Ddk`mn5dA0~2WO*|4a0j2nj0=ocU0z7q9d=?-IKVLTHtVa1nE1m$ OMLAKZBUZtt~6;prt89>011 z@$2g^KlblGxa0Eu-FpwtU9n~Qk`33NzTLI|$mbuwHgDZo+&=5TfkVqT?t1n1!@gr@ zqY9d@UB9t@!=}r(?jODT;>fM10TJofZ{NH6?A`4b@7A8VbM(w5bC>A7hfX|r@Nmbj zeXCC0c=+(~)vMQLFWXq!Is3qgGt1ZSc>d~bLDS^xH}4$0{`lhcJKHbakI$*P_3GpL z^&2ieeSiAW_0CDNzkT~w+%lzq$>y_HZf)PS|J3;_XCJ({efR#_)3*=bepX)-zp}^i zKNv937byN@VPs&4V$cCu3yKp4_8AQkP0dYFZS7GJk=;EE5glz^J>3j_6DCE9Sen}h zYWKHyF8 diff --git a/images/tab-topleft.gif b/images/tab-topleft.gif deleted file mode 100644 index 9676d01941716393f108e7d9334a8fdd90d16335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMN=oXkcV0pSk=0|Nn|VSs1w(7#VaJfB+=Jz{J`j&$u#%!5RP+w+cf5 diff --git a/images/tab.png b/images/tab.png deleted file mode 100644 index 992cdfce5cd8d2298066430fd3a909ea54336ac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0htFB_QcND?)LdnW_juJ{gkDz zXnKgX#?VDxa;>$!KUHeQ&fdMn)?;&w>+tq_l$=j!eBkc)%h1-f#n#l@rXj2E00009a7bBm000XT000XT0n*)m`~Uy|A9O`nbW?9;ba!ELWdKcK zV{&h8Wn^h#AVz6&Wp{6KYjYqtwP@0K0000ObVXQnLvm$dbZKvHAXI5>WdJcZE-*7L zGB7YVD@7Jw00031NklfN00000NkvXXu0mjf;IA6) diff --git a/images/toolkit_menu.png b/images/toolkit_menu.png index 636393795e251216240c0f43714f55ce2da13d01..f3b252df9eb321a86c3805b33ea0c61e58ed0af0 100644 GIT binary patch delta 415 zcmV;Q0bu@%2Cf5;8Gix*007+lQk4Jz02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM00B@*L_t(|+G2cBBga5vz=TJRP0<2~a7j_Y4xlN5Nh?_-wK1i5oC<+b z#9PCJ#{wXO%Q6|$0&d5Gm$mZ0?w_F4AD_23{r&KiSwI?SD1WluKnox?5g%yGC3gIn zqJKX;`Th9(x8rje85x0w0!fIgnFVDy4MQPDLj*;NkN$pe0;nF39W3~r@MT{=kc7A$ z$YxWtgi8Shf#~c02?PU;g`iL2*02JTnF31404;#XQfddp8e|K=Za)rW5E<=6*#V4U zWDC&T4o`$|@PB?@II{Ij#8?1{4~PXows`YHBFO@{4}gNm)&RvJ z)?kex>}eN|1;8W=$rF&|3rXk@-vATw_w#E=$b-0i0CzIPH^_wzt|Wld4oJ$u>V3F1 zKv(~HewF-m1#}cJc>psV)*JwI!M`7$fEEywd>QFbe;5D+7ywMCy&=1^K%D>p002ov JPDHLkV1ngCt)Bn@ delta 766 zcmV>h0 zjRGZ2kVqsd1dE~Ag&)hgyvl~U>`OzaY@N4@=5(9;>c#_q4$tBDzVDysdESSkxR<2^ z5G>Pk;{A|9`XyxH6Ecw`(1UPS$22N&Yk}rKH?!c3EmD zdDuwCj)I8XPJinaN?Yu#&(Dj;@p+xRoDY zz9IW!oB9JN+XCpMSEq#ZLQyV~qE{iJb`qN?C|F zKyck}3NkWkZ$^8tEQl+rw@_4XVWjN|o}RwAOQKBVZVrbSDfGV=KQGSJ;A(A8s3(+( zHd3e&fUb+RIGbAkYfcD2=@W87iwZ8B##nhO5PN$1m~g&jseR6RM#8?`(By@cT1v!# zv8p1>fPcnh;Bd!d%32@9JTNq#FNYNGP%&0jP;jO)u(;RONSFCqAkH)yIMmrjYRJH9 z@E_cui9E<8*`Ja~Ql_jyfBZ<00f*JbtGZi!bh-Jk=oX~u@-bANWZkCRpgpc@@}iy* zvm9!@E~p6|RvV6+w*&E`@}qd2!wVC%WH-ras&}|cECG@%1kp4(;0!EyX}-#9t1XOq ze*O~fj%NT&^baxXog&u0^YRH9MO}tg$U@8kNs-*HT$_SguVZq+$ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%T@COFaeeXP@vmRs|NQy=@#Dwe zzkfe^bnoWPt8d;sfA;Lrt5?tN-o1J2*0no#Zrr)pFo4a{YwTBPye*XOK^5ydvFP^(`8cA53{yM1o%IZJp8by)IDfTfgsUl!{~l~TkiU4 z4`;ZzbuI3jVtL$XlfA{WfT9x{J4&W57FeWPr!7-^pT8-lJDG89mdyMM#~wsDZBE^B kZ1E1~&UWiK;diVO4D(cPR5n~@0C|=YOplfUHB==pPYdl52C;NRbcn5vqoxKKU-U0`J!o#Er^`#ocT@A303GB$y10EKqN zoSdCQHiS}AQUCw{A^8LW0018VEC2ui03HAx000I5;3tmch(QA;lx#~1oQHVJl2L@K ziv)sm5kiFG$ao+-7H2`>IGP4Wqru252FVd&VHg+)0s=+ikT4>M1u}_YIvo%QN2QQZ z5{HK;>o^h|17d&}7#0j32?-B5Iv5#X91sF>5CjGi4H6Lv7Xf=Z0}Bxf1_CgW0u~Ym z6buIl0T~!N92pUS0ty_ag%$${cozi^Yb^#>6cI23sTNZa5eFUt0avuZ2^moevAME{?Bf67mt^cn(wuP@zDEBpxm(yddsOx(f#m z6rlEiLy}MsfivE+c(9Kx5(%tb-@Mzm@{kM lym`X{su|kK%+R5<>C>oFGof(yLkthFW6PdR+rfws06QDb#?b%( diff --git a/images/wan.gif b/images/wan.gif deleted file mode 100644 index f05524cb3db152e157dba283dadedb5469cf09dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmV+h0r~z%Nk%w1VGsZi0K^{vxw^MqXK)i_k%^3t{QCKIjiP~U*qk|2o*0x_8g zG6Pp5A?V*LZYD4s90?79E&~)50WK&2kOLhH8jw9s4jUK}3kwnv5uBbF8vq9s7#gap MtQZtzF0mm1JEzNL2LJ#7 diff --git a/images/wizActiveStepLeft.gif b/images/wizActiveStepLeft.gif deleted file mode 100644 index b0ce7bfc7d0f41b60931b71a8574410f8eaf8641..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmZ?wbhEHbg5Gu-%gy^5HI$;py0Hw=*Kl{cKL`kZxX*DD*FHbe+Fzo@h1ydSO-Lc z{KUZ4?l8L`qk0d6$0FZ?9hP$sJ088sz`D-q(3>{R2m9g^Uq0(-ICy%tQwdwXg?aw( z>>Yv69-MjG^uH`ms@B5P+@z_ct+u1RwWqV9yQ_CnfAPc$F?0DQ9&`03MRU0(7HxC2 tS~E^_j+M;1=0+7xY?|g;!nw{GzUF!c%8AZG0{;G9W;%x4Dt?X()&QaekuU%N diff --git a/images/wizActiveStepRight.gif b/images/wizActiveStepRight.gif deleted file mode 100644 index 6740587fc132aa776bb1d1e3ab51c27c632b6cd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmZ?wbhEHb+{hryaFv0fd6W2Y6VXl4V%H=^Ti1y{FDQ5v6x6ao{HnC*E+4TC@nU~J zfBv#}@B8`l|9<@Vz{TZ?jOh2XXWz}4^SZNhTEF;NP0?d!qI*2W)~1O4ynXxs-@hFz z#pld))fvpU4yFI>1SMC^vB=>Px!8SnzdpDbW`9S{lf69e1-12YRe zbfo%EEGasfV>SQ63*pU54C^9hm7RWDwg16}3Lm}M=UV6-+xMStef<3G?APzVj{N-nZ`a>{oHbh;*jgGn(o+{G zDlI%5&YPi9;jvLfQ9#r@!5RQd8|#q( diff --git a/images/wizArrow.gif b/images/wizArrow.gif deleted file mode 100644 index 20d39ca9b9898213c3e26910d96743d6ac226199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmZ?wbhEHb6l0KJ*vtR||NsAQ-Xz|&O?lIW+?`h|&pw)W<=LtipU(ru!SX1C;!hSv z1_n+B9grx<3|w?b+m|C&CWgY@NQ}=E=vC-P_fk ze>%J3RMf(wzMC)Roqjm`@rPq~UhkZH*!{wjCG(DWPTXy{_j=>L8_m0~)n0qCe)-9W z=1t-+KA&fR0mYvzV5Sa;1lh^J8umb~Pq`t3QIpH{*xor^JO(~yp1IvF>-KBk;@`o^ zQ$ATaU}L~BjdL>;cU=rvd+t@~?4w#+Z)S!$tqm}r_=asUo5Q|EOfe~zt7M$7wtcwp O(v^WnoSj{f!5RPoA7VxT diff --git a/images/wizStepRight.gif b/images/wizStepRight.gif deleted file mode 100644 index 037ba2bf99b2980a3e7994de72feade47b2f3245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmZ?wbhEHb>}8N;xXQq=<4Q&A7U>7?4xD;0bHNes>HBSZcW6BSbawVZr}gL3cVDZ0 z{NdQ;rz?)%o7A;k<=My66L%Z-?bLem@#L(74(A^)y7zY9qxVPJx5!?3wyI;R!lGmT z*IumOexpf|FEOx-iZy*f9$Etzvr^9rm?BHm?tE( zrL(I$jv=>a!o(VGwvI{DXB2Wyn>lx0qR5>2iK=!wYVCyy+XJ#!&W;`GHmedn*V76Ji1n9vo`6SOWkN$Fn&A diff --git a/js/extkeywidget.js b/js/extkeywidget.js index 52ff345c0..6cfe63dc5 100644 --- a/js/extkeywidget.js +++ b/js/extkeywidget.js @@ -95,6 +95,7 @@ function ExtKeyWidget(id, sTargetClass, sFilter, sTitle, bSelectMode, oWizHelper me.UpdateSizes(); me.UpdateButtons(); me.ajax_request = null; + FixSearchFormsDisposition(); me.DoSearchObjects(); }, 'html' diff --git a/js/linksdirectwidget.js b/js/linksdirectwidget.js index 080473e43..2ad60e55e 100644 --- a/js/linksdirectwidget.js +++ b/js/linksdirectwidget.js @@ -257,6 +257,7 @@ $(function() var c = this.value; me._onUpdateDlgButtons(c); }); + FixSearchFormsDisposition(); $('#SearchResultsToAdd_'+me.id).unblock(); me._onSearchDlgUpdateSize(); }); diff --git a/js/linkswidget.js b/js/linkswidget.js index dabb3048d..d42af420a 100644 --- a/js/linkswidget.js +++ b/js/linkswidget.js @@ -134,6 +134,7 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH var c = this.value; me.UpdateButtons(c); }); + FixSearchFormsDisposition(); $(sSearchAreaId).unblock(); }, 'html' diff --git a/js/utils.js b/js/utils.js index d15f875b9..b7ae5b9d4 100644 --- a/js/utils.js +++ b/js/utils.js @@ -210,12 +210,35 @@ function ReloadSearchForm(divId, sClassName, sBaseClass, sContext) } } } + FixSearchFormsDisposition(); oDiv.unblock(); oDiv.parent().resize(); // Inform the parent that the form has just been (potentially) resized } ); } +function FixSearchFormsDisposition() +{ + // Fix search forms + $('.SearchDrawer').each(function() { + var colWidth = 0; + var labelWidth = 0; + $('label:visible', $(this)).each( function() { + var l = $(this).parent().width() - $(this).width(); + colWidth = Math.max(l, colWidth); + labelWidth = Math.max($(this).width(), labelWidth); + }); + $('label:visible', $(this)).each( function() { + if($(this).data('resized') != true) + { + $(this).parent().width(colWidth + labelWidth); + $(this).width(labelWidth).css({display: 'inline-block'}).data('resized', true); + } + }); + }); + +} + /** * Stores - in a persistent way - user specific preferences * depends on a global variable oUserPreferences created/filled by the iTopWebPage @@ -389,6 +412,33 @@ function ShortcutListDlg(sOQL, sDataTableId, sContext) return false; } +function ExportListDlg(sOQL, sDataTableId, sFormat, sDlgTitle) +{ + var sDataTableName = 'datatable_'+sDataTableId; + var oColumns = $('#'+sDataTableName).datatable('option', 'oColumns'); + var aFields = []; + for(var j in oColumns) + { + for(var k in oColumns[j]) + { + if (oColumns[j][k].checked) + { + var sCode = oColumns[j][k].code; + if (sCode == '_key_') + { + sCode = 'id'; + } + aFields.push(j+'.'+sCode); + } + } + } + + $.post(GetAbsoluteUrlAppRoot()+'webservices/export-v2.php', {interactive: 1, advanced: 1, mode: 'dialog', format: sFormat, expression: sOQL, suggested_fields: aFields.join(','), dialog_title: sDlgTitle}, function(data) { + $('body').append(data); + }); + return false; +} + function DisplayHistory(sSelector, sFilter, iCount, iStart) { $(sSelector).block(); diff --git a/lib/sass/Phamlp.php b/lib/sass/Phamlp.php new file mode 100644 index 000000000..7bec17527 --- /dev/null +++ b/lib/sass/Phamlp.php @@ -0,0 +1,72 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + */ +/** + * Phamlp class. + * Static support classes. + * @package PHamlP + */ +class Phamlp { + /** + * @var string Language used to translate messages + */ + public static $language; + /** + * @var array Messages used for translation + */ + public static $messages; + + /** + * Translates a message to the specified language. + * @param string message category. + * @param string the original message + * @param array parameters to be applied to the message using strtr. + * @return string the translated message + */ + public static function t($category, $message, $params = array()) { + if (!empty(self::$language)) { + $message = self::translate($category, $message); + } + return $params!==array() ? strtr($message,$params) : $message; + } + + /** + * Translates a message to the specified language. + * If the language or the message in the specified language is not defined the + * original message is returned. + * @param string message category + * @param string the original message + * @return string the translated message + */ + private static function translate($category, $message) { + if (empty(self::$messages[$category])) self::loadMessages($category); + return (empty(self::$messages[$category][$message]) ? $message : self::$messages[$category][$message]); + } + + /** + * Loads the specified language message file for translation. + * Message files are PHP files in the "category/messages" directory and named + * "language.php", where category is either haml or sass, and language is the + * specified language. + * The message file returns an array of (source, translation) pairs; for example: + *
+	 * return array(
+	 *   'original message 1' => 'translated message 1',
+	 *   'original message 2' => 'translated message 2',
+	 * );
+	 * 
+ * @param string message category + */ + private static function loadMessages($category) { + $messageFile = dirname(__FILE__).DIRECTORY_SEPARATOR.$category.DIRECTORY_SEPARATOR.'messages'.DIRECTORY_SEPARATOR.self::$language.'.php'; + if (file_exists($messageFile)) { + self::$messages[$category] = require_once($messageFile); + } + } +} \ No newline at end of file diff --git a/lib/sass/PhamlpException.php b/lib/sass/PhamlpException.php new file mode 100644 index 000000000..1dc32032e --- /dev/null +++ b/lib/sass/PhamlpException.php @@ -0,0 +1,31 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + */ + +require_once('Phamlp.php'); + +/** + * Phamlp exception class. + * Base class for PHamlP::Haml and PHamlP::Sass exceptions. + * Translates exception messages. + * @package PHamlP + */ +class PhamlpException extends Exception { + /** + * Phamlp Exception. + * @param string Category (haml|sass) + * @param string Exception message + * @param array parameters to be applied to the message using strtr. + */ + public function __construct($category, $message, $params, $object) { + parent::__construct(Phamlp::t($category, $message, $params) . + (is_object($object) ? ": {$object->filename}::{$object->line}\nSource: {$object->source}" : '') + ); + } +} \ No newline at end of file diff --git a/lib/sass/haml/HamlException.php b/lib/sass/haml/HamlException.php new file mode 100644 index 000000000..e83f45ef5 --- /dev/null +++ b/lib/sass/haml/HamlException.php @@ -0,0 +1,29 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml + */ + +require_once(dirname(__FILE__).'/../PhamlpException.php'); + +/** + * Haml exception class. + * @package PHamlP + * @subpackage Haml + */ +class HamlException extends PhamlpException { + /** + * Haml Exception. + * @param string Exception message + * @param array parameters to be applied to the message using strtr. + * @param object object with source code and meta data + */ + public function __construct($message, $params = array(), $object = null) { + parent::__construct('haml', $message, $params, $object); + } +} \ No newline at end of file diff --git a/lib/sass/haml/HamlHelpers.php b/lib/sass/haml/HamlHelpers.php new file mode 100644 index 000000000..769f7ecff --- /dev/null +++ b/lib/sass/haml/HamlHelpers.php @@ -0,0 +1,199 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml + */ + +/** + * HamlHelpers class. + * Contains methods to make it easier to do various tasks. + * + * The class can be extended to provide user defined helper methods. The + * signature for user defined helper methods is ($block, $other, $arguments); + * $block is the string generated by the Haml block being operated on. + * + * Tthe path to the extended class is provided to HamlParser in the config + * array; class name == file name. + * + * HamlHelpers and any extended class are automatically included in the context + * that a Haml template is parsed in, so all the methods are at your disposal + * from within the template. + * + * @package PHamlP + * @subpackage Haml + */ +class HamlHelpers { + const XMLNS = 'http://www.w3.org/1999/xhtml'; + + /** + * Returns the block with string appended. + * @see succeed + * @param string Haml block + * @param string string to append + * @return string the block with string appended. + */ + public static function append($block, $string) { + return $block.$string; + } + + /** + * Escapes HTML entities in text, but without escaping an ampersand that is + * already part of an escaped entity. + * @param string Haml block + * @return string the block with HTML entities escaped. + */ + public static function escape_once($block) { + return htmlentities(html_entity_decode($block)); + } + + /** + * Returns an array containing default assignments for the xmlns, lang, and + * xml:lang attributes of the html element. + * This helper method is for use in the html element only. + * + * Examples:
+ * %html(html_attrs())
+ * produces
+ * + * + * %html(html_attrs('en-gb'))
+ * produces
+ * + * + * %html(html_attrs('en-gb', false))
+ * produces
+ * + * + * Although handled in HamlParser, the notes below are here for completeness.
+ * Other attributes are defined as normal. e.g.
+ * %html(xmlns:me="http://www.example.com/me" html_attrs('en-gb', false))
+ * produces
+ * + * + * PHamlP also allows for the language to be defined using PHP code that can + * be eval'd; the code must end with a semi-colon (;). e.g.
+ * %html(html_attrs("FW::app()->language);", false))
+ * produces (assuming FW::app()->language returns 'en-gb')
+ * + * + * @param string document language. Default = en-us + * @param boolean whether the html element has the lang attribute. Default: true + * Should be set false for XHTML 1.1 or greater documents + * @return string the block with string appended. + */ + public static function html_attrs($language = 'en-us', $lang = true) { + return ($lang ? + array('xmlns'=>self::XMLNS, 'xml:lang'=>$language, 'lang'=>$language) : + array('xmlns'=>self::XMLNS, 'xml:lang'=>$language)); + } + + /** + * Returns a copy of text with ampersands, angle brackets and quotes escaped + * into HTML entities. + * @param string Haml block + * @return string the block with HTML entities escaped. + */ + public static function html_escape($block) { + return htmlspecialchars($block); + } + + /** + * Iterates an array and using the block to generate a
  • element for each + * array element. + * Examples:
    + * = list_of(array('red', 'orange', ...., 'violet'), 'colour')
    + * = colour
    + * Produces:
    + *
  • red

  • + *
  • orange

  • + * |
    + * |
    + *
  • violet>

  • + * + * = list_of(array('Fly Fishing' => 'JR Hartley', 'Lord of the Rings' => 'JRR Tolkien'), 'title', 'author')
    + * %h3= title
    + * %p= author
    + * Produces:
    + *

  • + *

    Fly Fishing


    + *

    JR Hartley


    + *

  • + *

  • + *

    Lord of the Rings


    + *

    JRR Tolkien


    + *

  • + * + * @param string Haml block + * @param array items + * @param string string in block to replace with item key or item value + * @param string string in block to replace with item value + * @return string list items. + */ + public static function list_of($block, $items, $key, $value = null) { + $output = ''; + foreach ($items as $_key=>$_value) { + $output .= '
  • ' . strtr($block, (empty($value) ? array($key=>$_value) : + array($key=>$_key, $value=>$_value))) . '
  • '; + } // foreach + return $output; + } + + /** + * Alias for prepend. + * @see prepend + * @param string Haml block + * @param string string to prepend + * @return string the block with string prepended + */ + public static function preceed($block, $string) { + return self::prepend($block, $string); + } + + /** + * Returns the block with string prepended. + * @param string Haml block + * @param string string to prepend + * @return string the block with string prepended + */ + public static function prepend($block, $string) { + return $string.$block; + } + + /** + * Converts newlines in the block to HTML entities. + * @param string Haml block + * @return string the block with newlines converted to HTML entities + */ + public static function preserve($block) { + return str_replace("\n", ' ', $block); + } + + /** + * Alias for append. + * @see append + * @param string Haml block + * @param string string to apppend + * @return string the block with string apppended + */ + public static function succeed($block, $string) { + return self::append($block, $string); + } + + /** + * Surrounds a block of Haml code with strings. + * If $back is not given it defaults to $front. + * @param string Haml block + * @param string string to prepend + * @param string string to apppend + * @return string the block surrounded by the strings + */ + public static function surround($block, $front, $back=null) { + return $front.$block.(is_null($back) ? $front : $back); + } +} \ No newline at end of file diff --git a/lib/sass/haml/HamlParser.php b/lib/sass/haml/HamlParser.php new file mode 100644 index 000000000..47721d658 --- /dev/null +++ b/lib/sass/haml/HamlParser.php @@ -0,0 +1,1249 @@ + + *
  • Debug (addition)
      + *
    • Source debug - adds comments to the output showing each source line above + * the result - ?#s+ to turn on, ?#s- to turn off, ?#s! to toggle
    • + *
    • Output debug - shows the output directly in the browser - ?#o+ to turn on, ?#o- to turn off, ?#o! to toggle
    • + *
    • Control both at once - ?#so+ to turn on, ?#so- to turn off, ?#so! to toggle
    • + *
    • Ugly mode can be controlled by the template
    • + * + *
    • Ugly mode is turned off when in debug
  • + *
  • "-" command (notes)
      + *
    • PHP does not require ending ";"
    • + *
    • PHP control blocks are automatically bracketed
    • + *
    • Switch Case statements do not end with ":" + *
    • do-while control blocks are written as "do (expression)"
  • + * + * Comes with filters that run "out of the box": + * + plain: useful for large chunks of text to ensure Haml doesn't do anything. + * + escaped: like plain but the output is (x)html escaped. + * + preserve: like plain but preserves the whitespace. + * + cdata: wraps the content in CDATA tags. + * + javascript: wraps the content in \n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlPhpFilter.php b/lib/sass/haml/filters/HamlPhpFilter.php new file mode 100644 index 000000000..6fdbb1f28 --- /dev/null +++ b/lib/sass/haml/filters/HamlPhpFilter.php @@ -0,0 +1,27 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * PHP Filter for {@link http://haml-lang.com/ Haml} class. + * The text will be parsed with the PHP interpreter. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlPhpFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return "\n"; + } +} diff --git a/lib/sass/haml/filters/HamlPlainFilter.php b/lib/sass/haml/filters/HamlPlainFilter.php new file mode 100644 index 000000000..33bbe0b1d --- /dev/null +++ b/lib/sass/haml/filters/HamlPlainFilter.php @@ -0,0 +1,28 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Plain Filter for {@link http://haml-lang.com/ Haml} class. + * Does not parse the filtered text. This is useful for large blocks of text + * without HTML tags when lines are not to be parsed. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlPlainFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text). "\n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlPreserveFilter.php b/lib/sass/haml/filters/HamlPreserveFilter.php new file mode 100644 index 000000000..03a2cd327 --- /dev/null +++ b/lib/sass/haml/filters/HamlPreserveFilter.php @@ -0,0 +1,29 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Preserve Filter for {@link http://haml-lang.com/ Haml} class. + * Does not parse the filtered text and preserves line breaks. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlPreserveFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return str_replace("\n", ' ', + preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text) + ) . "\n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlSassFilter.php b/lib/sass/haml/filters/HamlSassFilter.php new file mode 100644 index 000000000..ce2ece6ce --- /dev/null +++ b/lib/sass/haml/filters/HamlSassFilter.php @@ -0,0 +1,37 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +require_once('HamlCssFilter.php'); +require_once(dirname(__FILE__).'/../../sass/SassParser.php'); + +/** + * {@link Sass http://sass-lang.com/} Filter for + * {@link http://haml-lang.com/ Haml} class. + * Parses the text as Sass then calls the CSS filter. + * Useful for including inline Sass. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlSassFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + $sass = new SassParser(); + $css = new HamlCssFilter(); + $css->init(); + + return $css->run($sass->toCss(preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text), false)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/HamlScssFilter.php b/lib/sass/haml/filters/HamlScssFilter.php new file mode 100644 index 000000000..7c783106a --- /dev/null +++ b/lib/sass/haml/filters/HamlScssFilter.php @@ -0,0 +1,37 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +require_once('HamlCssFilter.php'); +require_once(dirname(__FILE__).'/../../sass/SassParser.php'); + +/** + * {@link Sass http://sass-lang.com/} Filter for + * {@link http://haml-lang.com/ Haml} class. + * Parses the text as Sass then calls the CSS filter. + * Useful for including inline Sass. + * @package PHamlP + * @subpackage Haml.filters + */ +class HamlScssFilter extends HamlBaseFilter { + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + $sass = new SassParser(array('syntax'=>'scss')); + $css = new HamlCssFilter(); + $css->init(); + + return $css->run($sass->toCss(preg_replace(HamlParser::MATCH_INTERPOLATION, '', $text), false)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/filters/_HamlMarkdownFilter.php b/lib/sass/haml/filters/_HamlMarkdownFilter.php new file mode 100644 index 000000000..c7db577fd --- /dev/null +++ b/lib/sass/haml/filters/_HamlMarkdownFilter.php @@ -0,0 +1,50 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Markdown Filter for {@link http://haml-lang.com/ Haml} class. + * Parses the text with Markdown. + * + * This is an abstract class that must be extended and the init() method + * implemented to provide the vendorPath if the vendor class is not imported + * elsewhere in the application (e.g. by a framework) and vendorClass if the + * default class name is not correct. + * @package PHamlP + * @subpackage Haml.filters + */ +abstract class _HamlMarkdownFilter extends HamlBaseFilter { + /** + * @var string Path to Markdown Parser + */ + protected $vendorPath; + /** + * @var string Markdown class + * Override this value if the class name is different in your environment + */ + protected $vendorClass = 'MarkdownExtra_Parser'; + + /** + * Child classes must implement this method. + * Typically the child class will set $vendorPath and $vendorClass + */ + public function init() {} + + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return 'vendorPath)?'require_once "'.$this->vendorPath.'";':'').'$markdown___=new '.$this->vendorClass.'();echo $markdown___->safeTransform("'.preg_replace(HamlParser::MATCH_INTERPOLATION, '".\1."', $text).'");?>'; + } +} diff --git a/lib/sass/haml/filters/_HamlTextileFilter.php b/lib/sass/haml/filters/_HamlTextileFilter.php new file mode 100644 index 000000000..1bb3cdaa8 --- /dev/null +++ b/lib/sass/haml/filters/_HamlTextileFilter.php @@ -0,0 +1,50 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.filters + */ + +/** + * Textile Filter for {@link http://haml-lang.com/ Haml} class. + * Parses the text with Textile. + * + * This is an abstract class that must be extended and the init() method + * implemented to provide the vendorPath if the vendor class is not imported + * elsewhere in the application (e.g. by a framework) and vendorClass if the + * default class name is not correct. + * @package PHamlP + * @subpackage Haml.filters + */ +abstract class _HamlTextileFilter extends HamlBaseFilter { + /** + * @var string Path to Textile Parser + */ + protected $vendorPath; + /** + * @var string Textile class + * Override this value if the class name is different in your environment + */ + protected $vendorClass = 'Textile'; + + /** + * Child classes must implement this method. + * Typically the child class will set $vendorPath and $vendorClass + */ + public function init() {} + + /** + * Run the filter + * @param string text to filter + * @return string filtered text + */ + public function run($text) { + return 'vendorPath)?'require_once "'.$this->vendorPath.'";':'').'$textile___=new '.$this->vendorClass.'();echo $textile___->TextileThis("'.preg_replace(HamlParser::MATCH_INTERPOLATION, '".\1."', $text).'");?>'; + } +} \ No newline at end of file diff --git a/lib/sass/haml/messages/_i18n.php b/lib/sass/haml/messages/_i18n.php new file mode 100644 index 000000000..c878297cf --- /dev/null +++ b/lib/sass/haml/messages/_i18n.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.messages + */ + return array ( + 'Attribute must be "class" or "id" with array value'=>'', + 'Illegal indentation level ({indentLevel}); indentation level can only increase by one'=>'', + 'Invalid indentation'=>'', + 'Invalid {what} ({value})'=>'', + 'Invalid {what} ({value}); must be one of "{options}"'=>'', + 'Mixed indentation not allowed'=>'', + 'No getter function for {what}'=>'', + 'No setter function for {what}'=>'', + 'Unable to find {what}: {filename}'=>'', + '{what} must extend {base} class'=>'', + ); \ No newline at end of file diff --git a/lib/sass/haml/messages/de.php b/lib/sass/haml/messages/de.php new file mode 100644 index 000000000..84f41fdb1 --- /dev/null +++ b/lib/sass/haml/messages/de.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.messages + */ + return array ( + 'Attribute must be "class" or "id" with array value'=>'Attribute müssen "class" oder "id" mit array-wert', + 'Illegal indentation level ({indentLevel}); indentation level can only increase by one'=>'Illegale einrückungsebene ({indentLevel}); einrückungsebene kann nur von einem anstieg', + 'Invalid indentation'=>'Ungültige einrückung', + 'Invalid {what}'=>'Ungültige {what}', + 'Invalid {what} ({value}); must be one of "{options}"'=>'Ungültige {what} ({value}); muss einer der "{options}"', + 'Mixed indentation not allowed'=>'Mixed einzug nicht erlaubt', + 'No getter function for {what}'=>'Kein getter-funktion für {what}', + 'No setter function for {what}'=>'Kein setter-funktion für {what}', + 'Unable to find {what}: {filename}'=>'Kann zu finden {what}: {filename}', + '{what} must extend {base} class'=>'{what} muss {base} klasse erweitern', + ); \ No newline at end of file diff --git a/lib/sass/haml/messages/fr.php b/lib/sass/haml/messages/fr.php new file mode 100644 index 000000000..ebb0485ab --- /dev/null +++ b/lib/sass/haml/messages/fr.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.messages + */ + return array ( + 'Attribute must be "class" or "id" with array value'=>"D'attributs doivent être \"class\" ou \"id\" avec valeur de array", + 'Illegal indentation level ({indentLevel}); indentation level can only increase by one: {file}::{line}'=>"Niveau niveau d'indentation illégale ({indentLevel}); ne peut augmenter d'un: {file}::{line}", + 'Invalid indentation: {line}::{file}'=>'Indentation blancs: {line}::{file}', + 'Invalid {what} ({value}): {file}::{line}'=>'Invalide {what} ({value}): {file}::{line}', + 'Invalid {what} ({value}); must be one of "{options}".'=>"Invalide {what} ({value}); doit être l'un des \"{options}\"", + 'Mixed indentation not allowed: {file}::{line}'=>'Indentation mixte pas autorisé: {file}::{line}', + 'No getter function for {what}'=>'Pas de fonction getter pour {what}', + 'No setter function for {what}'=>'Pas de fonction setter pour {what}', + 'Unable to find {what}: {filename}.'=>'Impossible de trouver {what}: {filename}.', + '{what} must extend {base} class.'=>"{what} doit s'étendre classe {base}", + ); \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlCompactRenderer.php b/lib/sass/haml/renderers/HamlCompactRenderer.php new file mode 100644 index 000000000..aaa7f1077 --- /dev/null +++ b/lib/sass/haml/renderers/HamlCompactRenderer.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlCompactRenderer class. + * Renders blocks on single lines. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlCompactRenderer extends HamlRenderer { + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return ($node->isBlock ? '' : ' ') . parent::renderOpeningTag($node); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return parent::renderClosingTag($node) . ($node->isBlock ? "\n" : ' '); + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlCompressedRenderer.php b/lib/sass/haml/renderers/HamlCompressedRenderer.php new file mode 100644 index 000000000..5f68c7033 --- /dev/null +++ b/lib/sass/haml/renderers/HamlCompressedRenderer.php @@ -0,0 +1,48 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlCompressedRenderer class. + * Output has minimal whitespace. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlCompressedRenderer extends HamlRenderer { + /** + * Renders the opening of a comment. + * Only conditional comments are rendered + */ + public function renderOpenComment($node) { + if ($node->isConditional) return parent::renderOpenComment($node); + } + + /** + * Renders the closing of a comment. + * Only conditional comments are rendered + */ + public function renderCloseComment($node) { + if ($node->isConditional) return parent::renderCloseComment($node); + } + + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return ($node->isBlock ? '' : ' ') . parent::renderOpeningTag($node); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return parent::renderClosingTag($node) . ($node->isBlock ? '' : ' '); + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlExpandedRenderer.php b/lib/sass/haml/renderers/HamlExpandedRenderer.php new file mode 100644 index 000000000..8bb4657c4 --- /dev/null +++ b/lib/sass/haml/renderers/HamlExpandedRenderer.php @@ -0,0 +1,58 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlExpandedRenderer class. + * Blocks are on single lines and content indented. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlExpandedRenderer extends HamlRenderer { + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return parent::renderOpeningTag($node) . + ($node->whitespaceControl['inner'] ? '' : + ($node->isSelfClosing && $node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return ($node->isSelfClosing ? '' : parent::renderClosingTag($node) . + ($node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders content. + * @param HamlNode the node being rendered + * @return string the rendered content + */ + public function renderContent($node) { + return self::INDENT . parent::renderContent($node) . "\n"; + } + + /** + * Renders the start of a code block + */ + public function renderStartCodeBlock($node) { + return parent::renderStartCodeBlock($node) . "\n"; + } + + /** + * Renders the end of a code block + */ + public function renderEndCodeBlock($node) { + return parent::renderEndCodeBlock($node) . "\n"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlNestedRenderer.php b/lib/sass/haml/renderers/HamlNestedRenderer.php new file mode 100644 index 000000000..f3135d4e0 --- /dev/null +++ b/lib/sass/haml/renderers/HamlNestedRenderer.php @@ -0,0 +1,77 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +/** + * HamlNestedRenderer class. + * Blocks and content are indented according to their nesting level. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlNestedRenderer extends HamlRenderer { + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + return ($node->whitespaceControl['outer'] ? '' : $this->getIndent($node)) . + parent::renderOpeningTag($node) . ($node->whitespaceControl['inner'] ? '' : + ($node->isSelfClosing && $node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return ($node->isSelfClosing ? '' : ($node->whitespaceControl['inner'] ? '' : + $this->getIndent($node)) . parent::renderClosingTag($node) . + ($node->whitespaceControl['outer'] ? '' : "\n")); + } + + /** + * Renders content. + * @param HamlNode the node being rendered + * @return string the rendered content + */ + public function renderContent($node) { + return $this->getIndent($node) . parent::renderContent($node) . "\n"; + } + + /** + * Renders the opening of a comment + */ + public function renderOpenComment($node) { + return parent::renderOpenComment($node) . (empty($node->content) ? "\n" : ''); + } + + /** + * Renders the closing of a comment + */ + public function renderCloseComment($node) { + return parent::renderCloseComment($node) . "\n"; + } + + /** + * Renders the start of a code block + */ + public function renderStartCodeBlock($node) { + return $this->getIndent($node) . parent::renderStartCodeBlock($node) . "\n"; + } + + /** + * Renders the end of a code block + */ + public function renderEndCodeBlock($node) { + return $this->getIndent($node) . parent::renderEndCodeBlock($node) . "\n"; + } + + private function getIndent($node) { + return str_repeat(' ', 2 * $node->line['indentLevel']); + } +} \ No newline at end of file diff --git a/lib/sass/haml/renderers/HamlRenderer.php b/lib/sass/haml/renderers/HamlRenderer.php new file mode 100644 index 000000000..e707a203e --- /dev/null +++ b/lib/sass/haml/renderers/HamlRenderer.php @@ -0,0 +1,137 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.renderers + */ + +require_once('HamlCompressedRenderer.php'); +require_once('HamlCompactRenderer.php'); +require_once('HamlExpandedRenderer.php'); +require_once('HamlNestedRenderer.php'); + +/** + * HamlRenderer class. + * Provides the most common version of each method. Child classs override + * methods to provide style specific rendering. + * @package PHamlP + * @subpackage Haml.renderers + */ +class HamlRenderer { + /**#@+ + * Output Styles + */ + const STYLE_COMPRESSED = 'compressed'; + const STYLE_COMPACT = 'compact'; + const STYLE_EXPANDED = 'expanded'; + const STYLE_NESTED = 'nested'; + /**#@-*/ + + const INDENT = ' '; + + private $format; + private $attrWrapper; + private $minimizedAttributes; + + /** + * Returns the renderer for the required render style. + * @param string render style + * @return HamlRenderer + */ + static public function getRenderer($style, $options) { + switch ($style) { + case self::STYLE_COMPACT: + return new HamlCompactRenderer($options); + case self::STYLE_COMPRESSED: + return new HamlCompressedRenderer($options); + case self::STYLE_EXPANDED: + return new HamlExpandedRenderer($options); + case self::STYLE_NESTED: + return new HamlNestedRenderer($options); + } // switch + } + + public function __construct($options) { + foreach ($options as $name => $value) { + $this->$name = $value; + } // foreach + } + + /** + * Renders element attributes + */ + private function renderAttributes($attributes) { + $output = ''; + foreach ($attributes as $name => $value) { + if (is_integer($name)) { // attribute function + $output .= " $value"; + } + elseif ($name == $value && + ($this->format === 'html4' || $this->format === 'html5')) { + $output .= " $name"; + } + else { + $output .= " $name={$this->attrWrapper}$value{$this->attrWrapper}"; + } + } + return $output; + } + + /** + * Renders the opening tag of an element + */ + public function renderOpeningTag($node) { + $output = "<{$node->content}"; + $output .= $this->renderAttributes($node->attributes); + $output .= ($node->isSelfClosing ? ' /' : '') . '>'; + return $output; + } + + /** + * Renders the closing tag of an element + */ + public function renderClosingTag($node) { + return ($node->isSelfClosing ? '' : "content}>"); + } + + /** + * Renders the opening of a comment + */ + public function renderOpenComment($node) { + return ($node->isConditional ? "\n\n" : '') . "' . ($node->isConditional ? "\n" : ''); + } + + /** + * Renders the start of a code block + */ + public function renderStartCodeBlock($node) { + return $this->renderContent($node); + } + + /** + * Renders the end of a code block + */ + public function renderEndCodeBlock($node) { + return 'doWhile) ? " {$node->doWhile}" : '') . ' ?>'; + } + + /** + * Renders content. + * @param HamlNode the node being rendered + * @return string the rendered content + */ + public function renderContent($node) { + return $node->content; + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlCodeBlockNode.php b/lib/sass/haml/tree/HamlCodeBlockNode.php new file mode 100644 index 000000000..4252397ae --- /dev/null +++ b/lib/sass/haml/tree/HamlCodeBlockNode.php @@ -0,0 +1,58 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once('HamlRootNode.php'); +require_once('HamlNodeExceptions.php'); + +/** + * HamlCodeBlockNode class. + * Represents a code block - if, elseif, else, foreach, do, and while. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlCodeBlockNode extends HamlNode { + /** + * @var HamlCodeBlockNode else nodes for if statements + */ + public $else; + /** + * @var string while clause for do-while loops + */ + public $doWhile; + + /** + * Adds an "else" statement to this node. + * @param SassIfNode "else" statement node to add + * @return SassIfNode this node + */ + public function addElse($node) { + if (is_null($this->else)) { + $node->root = $this->root; + $node->parent = $this->parent; + $this->else = $node; + } + else { + $this->else->addElse($node); + } + return $this; + } + + public function render() { + $output = $this->renderer->renderStartCodeBlock($this); + foreach ($this->children as $child) { + $output .= $child->render(); + } // foreach + $output .= (empty($this->else) ? + $this->renderer->renderEndCodeBlock($this) : $this->else->render()); + + return $this->debug($output); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlCommentNode.php b/lib/sass/haml/tree/HamlCommentNode.php new file mode 100644 index 000000000..230244256 --- /dev/null +++ b/lib/sass/haml/tree/HamlCommentNode.php @@ -0,0 +1,41 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlCommentNode class. + * Represents a comment, including MSIE conditional comments. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlCommentNode extends HamlNode { + private $isConditional; + + public function __construct($content, $parent) { + $this->content = $content; + $this->isConditional = (bool)preg_match('/^\[.+\]$/', $content, $matches); + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + public function getIsConditional() { + return $this->isConditional; + } + + public function render() { + $output = $this->renderer->renderOpenComment($this); + foreach ($this->children as $child) { + $output .= $child->render(); + } // foreach + $output .= $this->renderer->renderCloseComment($this); + return $this->debug($output); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlDoctypeNode.php b/lib/sass/haml/tree/HamlDoctypeNode.php new file mode 100644 index 000000000..e64d416be --- /dev/null +++ b/lib/sass/haml/tree/HamlDoctypeNode.php @@ -0,0 +1,27 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlDoctypeNode class. + * Represents a Doctype. + * Doctypes are always rendered on a single line with a newline. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlDoctypeNode extends HamlNode { + /** + * Render this node. + * @return string the rendered node + */ + public function render() { + return $this->debug($this->content . "\n"); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlElementNode.php b/lib/sass/haml/tree/HamlElementNode.php new file mode 100644 index 000000000..5dfd9ef17 --- /dev/null +++ b/lib/sass/haml/tree/HamlElementNode.php @@ -0,0 +1,52 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once('HamlRootNode.php'); +require_once('HamlNodeExceptions.php'); + +/** + * HamlElementNode class. + * Represents an element. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlElementNode extends HamlNode { + public $isBlock; + public $isSelfClosing; + public $attributes; + public $whitespaceControl; + public $escapeHTML; + + public function render() { + $renderer = $this->renderer; + $this->output = $renderer->renderOpeningTag($this); + $close = $renderer->renderClosingTag($this); + + if ($this->whitespaceControl['outer']['left']) { + $this->output = ltrim($this->output); + $close = rtrim($close); + $this->parent->output = rtrim($this->parent->output); + } + + foreach ($this->children as $index=>$child) { + $output = $child->render(); + $output = ($this->whitespaceControl['inner'] ? trim($output) : $output); + if ($index && $this->children[$index-1] instanceof HamlElementNode && $this->children[$index-1]->whitespaceControl['outer']['right']) { + $output = ltrim($output); + } + $this->output .= $output; + } // foreach + + return $this->debug($this->output . (isset($child) && + $child instanceof HamlElementNode && + $child->whitespaceControl['outer']['right'] ? ltrim($close) : $close)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlFilterNode.php b/lib/sass/haml/tree/HamlFilterNode.php new file mode 100644 index 000000000..c92cd2875 --- /dev/null +++ b/lib/sass/haml/tree/HamlFilterNode.php @@ -0,0 +1,50 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlFilterNode class. + * Represent a filter in the Haml source. + * The filter is run on the output from child nodes when the node is rendered. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlFilterNode extends HamlNode { + /** + * @var HamlBaseFilter the filter to run + */ + private $filter; + + /** + * HamlFilterNode constructor. + * Sets the filter. + * @param HamlBaseFilter the filter to run + * @return HamlFilterNode + */ + public function __construct($filter, $parent) { + $this->filter = $filter; + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + /** + * Render this node. + * The filter is run on the content of child nodes before being returned. + * @return string the rendered node + */ + public function render() { + $output = ''; + foreach ($this->children as $child) { + $output .= $child->getContent(); + } // foreach + return $this->debug($this->filter->run($output)); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlHelperNode.php b/lib/sass/haml/tree/HamlHelperNode.php new file mode 100644 index 000000000..1066b7739 --- /dev/null +++ b/lib/sass/haml/tree/HamlHelperNode.php @@ -0,0 +1,73 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +/** + * HamlHelperNode class. + * Represent a helper in the Haml source. + * The helper is run on the output from child nodes when the node is rendered. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlHelperNode extends HamlNode { + const MATCH = '/(.*?)(\w+)\((.+?)\)(?:\s+(.*))?$/'; + const PRE = 1; + const NAME = 2; + const ARGS = 3; + const BLOCK = 4; + + /** + * @var string the helper class name + */ + private $class; + /** + * @var string helper method name + */ + private $pre; + /** + * @var string helper method name + */ + private $name; + /** + * @var string helper method arguments + */ + private $args; + + /** + * HamlFilterNode constructor. + * Sets the filter. + * @param string helper class. + * @param string helper call. + * @return HamlHelperNode + */ + public function __construct($class, $pre, $name, $args, $parent) { + $this->class = $class; + $this->pre = $pre; + $this->name = $name; + $this->args = $args; + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + /** + * Render this node. + * The filter is run on the content of child nodes before being returned. + * @return string the rendered node + */ + public function render() { + $children = ''; + foreach ($this->children as $child) { + $children .= trim($child->render()); + } // foreach + $output = 'pre) ? 'echo' : $this->pre)." {$this->class}::{$this->name}('$children',{$this->args}); ?>"; + return $this->debug($output); + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlNode.php b/lib/sass/haml/tree/HamlNode.php new file mode 100644 index 000000000..beec66767 --- /dev/null +++ b/lib/sass/haml/tree/HamlNode.php @@ -0,0 +1,253 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once('HamlRootNode.php'); +require_once('HamlCommentNode.php'); +require_once('HamlDoctypeNode.php'); +require_once('HamlElementNode.php'); +require_once('HamlFilterNode.php'); +require_once('HamlHelperNode.php'); +require_once('HamlCodeBlockNode.php'); +require_once('HamlNodeExceptions.php'); + +/** + * HamlNode class. + * Base class for all Haml nodes. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlNode { + /** + * @var HamlNode root node of this node + */ + protected $root; + /** + * @var HamlNode parent of this node + */ + protected $parent; + /** + * @var array children of this node + */ + protected $children = array(); + /** + * @var array source line token + */ + public $token; + /** + * @var boolean whether to show the output in the browser for debug + */ + public $showOutput; + /** + * @var boolean whether to show the source in the browser for debug + */ + public $showSource; + /** + * @var string content to render + */ + public $content; + /** + * @var string output buffer + */ + protected $output; + /** + * @var HamlRenderer Renderer object + */ + private $_r; + /** + * @var array Options + */ + private $_o; + + public function __construct($content, $parent) { + $this->content = $content; + if (!is_null($parent)) { // $parent === null for "else" code blocks + $this->parent = $parent; + $this->root = $parent->root; + $parent->children[] = $this; + } + + } + + /** + * Getter. + * @param string name of property to get + * @return mixed return value of getter function + */ + public function __get($name) { + $getter = 'get' . ucfirst($name); + if (method_exists($this, $getter)) { + return $this->$getter(); + } + throw new HamlNodeException('No getter function for {what}', array('{what}'=>$name)); + } + + /** + * Setter. + * @param string name of property to set + * @return mixed value of property + * @return HamlNode this node + */ + public function __set($name, $value) { + $setter = 'set' . ucfirst($name); + if (method_exists($this, $setter)) { + $this->$setter($value); + return $this; + } + throw new HamlNodeException('No setter function for {what}', array('{what}'=>$name)); + } + + /** + * Return a value indicating if this node has a parent + * @return array the node's parent + */ + public function hasParent() { + return !empty($this->parent); + } + + /** + * Returns the node's content and that of its child nodes + * @param integer the indent level. This is to allow properly indented output + * that filters (e.g. Sass) may need. + * @return string the node's content and that of its child nodes + */ + public function getContent($indentLevel = 0) { + $output = str_repeat(' ', 2 * $indentLevel++) . $this->content . "\n"; + foreach ($this->children as $child) { + $output .= $child->getContent($indentLevel); + } // foreach + return $output; + } + + /** + * Returns the node's parent + * @return array the node's parent + */ + public function getParent() { + return $this->parent; + } + + /** + * Returns a value indicating if this node has children + * @return boolean true if the node has children, false if not + */ + public function hasChildren() { + return !empty($this->children); + } + + /** + * Returns the node's children + * @return array the node's children + */ + public function getChildren() { + return $this->children; + } + + /** + * Returns the last child node of this node. + * @return HamlNode the last child node of this node + */ + public function getLastChild() { + return $this->children[count($this->children) - 1]; + } + + /** + * Returns the indent level of this node. + * @return integer the indent level of this node + */ + private function getLevel() { + return $this->token['level']; + } + + /** + * Sets the indent level of this node. + * Used during rendering to give correct indentation. + * @param integer the indent level of this node + * @return HamlNode this node + */ + private function setLevel($level) { + $this->token['level'] = $level; + return $this; + } + + /** + * Returns the source for this node + * @return string the source for this node + */ + private function getSource() { + return $this->token[HamlParser::HAML_SOURCE]; + } + + /** + * Returns the source for this node + * @return string the source for this node + */ + private function getLine() { + return $this->token['line']; + } + + /** + * Returns the filename for this node + * @return string the filename for this node + */ + private function getFilename() { + return $this->token['filename']; + } + + /** + * Returns the options. + * @return array the options + */ + public function getOptions() { + if (empty($this->_o)) { + $this->_r = $this->root->options; + } + return $this->_o; + } + + /** + * Returns the renderer. + * @return HamlRenderer the rendered + */ + public function getRenderer() { + if (empty($this->_r)) { + $this->_r = $this->root->renderer; + } + return $this->_r; + } + + public function render() { + $output = $this->renderer->renderContent($this); + foreach ($this->children as $child) { + $output .= $child->render(); + } // foreach + return $this->debug($output); + } + + protected function debug($output) { + $output = ($this->showSource ? $this->showSource($output) : $output); + return ($this->showOutput && $this->line['indentLevel'] == 0 ? + nl2br(str_replace(' ', ' ', htmlspecialchars($output))) : + $output); + } + + /** + * Adds a comment with source debug information for the current line to the output. + * The debug information is: + * + source file (relative to the application path) + * + line number + * + indent level + * + source code + * @param array source line(s) that generated the ouput + */ + protected function showSource($output) { + return "\n$output"; + } +} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlNodeExceptions.php b/lib/sass/haml/tree/HamlNodeExceptions.php new file mode 100644 index 000000000..9bf0c670f --- /dev/null +++ b/lib/sass/haml/tree/HamlNodeExceptions.php @@ -0,0 +1,19 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once(dirname(__FILE__).'/../HamlException.php'); + +/** + * HamlNodeException class. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlNodeException extends HamlException {} \ No newline at end of file diff --git a/lib/sass/haml/tree/HamlRootNode.php b/lib/sass/haml/tree/HamlRootNode.php new file mode 100644 index 000000000..fa0463b78 --- /dev/null +++ b/lib/sass/haml/tree/HamlRootNode.php @@ -0,0 +1,58 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Haml.tree + */ + +require_once(dirname(__FILE__).'/../renderers/HamlRenderer.php'); + +/** + * HamlRootNode class. + * Also the root node of a document. + * @package PHamlP + * @subpackage Haml.tree + */ +class HamlRootNode extends HamlNode { + /** + * @var HamlRenderer the renderer for this node + */ + protected $renderer; + /** + * @var array options + */ + protected $options; + + /** + * Root HamlNode constructor. + * @param array options for the tree + * @return HamlNode + */ + public function __construct($options) { + $this->root = $this; + $this->options = $options; + $this->renderer = HamlRenderer::getRenderer($this->options['style'], + array( + 'format' => $this->options['format'], + 'attrWrapper' => $this->options['attrWrapper'], + 'minimizedAttributes' => $this->options['minimizedAttributes'], + ) + ); + $this->token = array('level' => -1); + } + + /** + * Render this node. + * @return string the rendered node + */ + public function render() { + foreach ($this->children as $child) { + $this->output .= $child->render(); + } // foreach + return $this->output; + } +} diff --git a/lib/sass/sass/SassException.php b/lib/sass/sass/SassException.php new file mode 100644 index 000000000..850a407e2 --- /dev/null +++ b/lib/sass/sass/SassException.php @@ -0,0 +1,29 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass + */ + +require_once(dirname(__FILE__).'/../PhamlpException.php'); + +/** + * Sass exception class. + * @package PHamlP + * @subpackage Sass + */ +class SassException extends PhamlpException { + /** + * Sass Exception. + * @param string Exception message + * @param array parameters to be applied to the message using strtr. + * @param object object with source code and meta data + */ + public function __construct($message, $params = array(), $object = null) { + parent::__construct('sass', $message, $params, $object); + } +} \ No newline at end of file diff --git a/lib/sass/sass/SassFile.php b/lib/sass/sass/SassFile.php new file mode 100644 index 000000000..3c071a6b3 --- /dev/null +++ b/lib/sass/sass/SassFile.php @@ -0,0 +1,164 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass + */ + +/** + * SassFile class. + * @package PHamlP + * @subpackage Sass + */ +class SassFile { + const SASS = 'sass'; + const SCSS = 'scss'; + const SASSC = 'sassc'; + + private static $extensions = array(self::SASS, self::SCSS); + + /** + * Returns the parse tree for a file. + * If caching is enabled a cached version will be used if possible; if not the + * parsed file will be cached. + * @param string filename to parse + * @param SassParser Sass parser + * @return SassRootNode + */ + public static function getTree($filename, $parser) { + if ($parser->cache) { + $cached = self::getCachedFile($filename, $parser->cache_location); + if ($cached !== false) { + return $cached; + } + } + + $sassParser = new SassParser(array_merge($parser->options, array('line'=>1))); + $tree = $sassParser->parse($filename); + if ($parser->cache) { + self::setCachedFile($tree, $filename, $parser->cache_location); + } + return $tree; + } + + /** + * Returns the full path to a file to parse. + * The file is looked for recursively under the load_paths directories and + * the template_location directory. + * If the filename does not end in .sass or .scss try the current syntax first + * then, if a file is not found, try the other syntax. + * @param string filename to find + * @param SassParser Sass parser + * @return string path to file + * @throws SassException if file not found + */ + public static function getFile($filename, $parser) { + $ext = substr($filename, -5); + + foreach (self::$extensions as $i=>$extension) { + if ($ext !== '.'.self::SASS && $ext !== '.'.self::SCSS) { + if ($i===0) { + $_filename = "$filename.{$parser->syntax}"; + } + else { + $_filename = $filename.'.'.($parser->syntax === self::SASS ? self::SCSS : self::SASS); + } + } + else { + $_filename = $filename; + } + + if (file_exists($_filename)) { + return $_filename; + } + + foreach (array_merge(array(dirname($parser->filename)), $parser->load_paths) as $loadPath) { + $path = self::findFile($_filename, realpath($loadPath)); + if ($path !== false) { + return $path; + } + } // foreach + + if (!empty($parser->template_location)) { + $path = self::findFile($_filename, realpath($parser->template_location)); + if ($path !== false) { + return $path; + } + } + } + + throw new SassException('Unable to find {what}: {filename}', array('{what}'=>'import file', '{filename}'=>$filename)); + } + + /** + * Looks for the file recursively in the specified directory. + * This will also look for _filename to handle Sass partials. + * @param string filename to look for + * @param string path to directory to look in and under + * @return mixed string: full path to file if found, false if not + */ + public static function findFile($filename, $dir) { + $partialname = dirname($filename).DIRECTORY_SEPARATOR.'_'.basename($filename); + + foreach (array($filename, $partialname) as $file) { + if (file_exists($dir . DIRECTORY_SEPARATOR . $file)) { + return realpath($dir . DIRECTORY_SEPARATOR . $file); + } + } + + $files = array_slice(scandir($dir), 2); + + foreach ($files as $file) { + if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) { + $path = self::findFile($filename, $dir . DIRECTORY_SEPARATOR . $file); + if ($path !== false) { + return $path; + } + } + } // foreach + return false; + } + + /** + * Returns a cached version of the file if available. + * @param string filename to fetch + * @param string path to cache location + * @return mixed the cached file if available or false if it is not + */ + public static function getCachedFile($filename, $cacheLocation) { + $cached = realpath($cacheLocation) . DIRECTORY_SEPARATOR . + md5($filename) . '.'.self::SASSC; + + if ($cached && file_exists($cached) && + filemtime($cached) >= filemtime($filename)) { + return unserialize(file_get_contents($cached)); + } + return false; + } + + /** + * Saves a cached version of the file. + * @param SassRootNode Sass tree to save + * @param string filename to save + * @param string path to cache location + * @return mixed the cached file if available or false if it is not + */ + public static function setCachedFile($sassc, $filename, $cacheLocation) { + $cacheDir = realpath($cacheLocation); + + if (!$cacheDir) { + mkdir($cacheLocation); + @chmod($cacheLocation, 0777); + $cacheDir = realpath($cacheLocation); + } + + $cached = $cacheDir . DIRECTORY_SEPARATOR . md5($filename) . '.'.self::SASSC; + + return file_put_contents($cached, serialize($sassc)); + } +} \ No newline at end of file diff --git a/lib/sass/sass/SassParser.php b/lib/sass/sass/SassParser.php new file mode 100644 index 000000000..7d728acd5 --- /dev/null +++ b/lib/sass/sass/SassParser.php @@ -0,0 +1,848 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass + */ + +require_once('SassFile.php'); +require_once('SassException.php'); +require_once('tree/SassNode.php'); + +/** + * SassParser class. + * Parses {@link http://sass-lang.com/ .sass and .sccs} files. + * @package PHamlP + * @subpackage Sass + */ +class SassParser { + /**#@+ + * Default option values + */ + const CACHE = true; + const CACHE_LOCATION = './sass-cache'; + const CSS_LOCATION = './css'; + const TEMPLATE_LOCATION = './sass-templates'; + const BEGIN_COMMENT = '/'; + const BEGIN_CSS_COMMENT = '/*'; + const END_CSS_COMMENT = '*/'; + const BEGIN_SASS_COMMENT= '//'; + const BEGIN_INTERPOLATION = '#'; + const BEGIN_INTERPOLATION_BLOCK = '#{'; + const BEGIN_BLOCK = '{'; + const END_BLOCK = '}'; + const END_STATEMENT = ';'; + const DOUBLE_QUOTE = '"'; + const SINGLE_QUOTE = "'"; + + /** + * @var string the character used for indenting + * @see indentChars + * @see indentSpaces + */ + private $indentChar; + /** + * @var array allowable characters for indenting + */ + private $indentChars = array(' ', "\t"); + /** + * @var integer number of spaces for indentation. + * Used to calculate {@link Level} if {@link indentChar} is space. + */ + private $indentSpaces = 2; + + /** + * @var string source + */ + private $source; + + /**#@+ + * Option + */ + /** + * cache: + * @var boolean Whether parsed Sass files should be cached, allowing greater + * speed. + * + * Defaults to true. + */ + private $cache; + + /** + * cache_location: + * @var string The path where the cached sassc files should be written to. + * + * Defaults to './sass-cache'. + */ + private $cache_location; + + /** + * css_location: + * @var string The path where CSS output should be written to. + * + * Defaults to './css'. + */ + private $css_location; + + /** + * debug_info: + * @var boolean When true the line number and file where a selector is defined + * is emitted into the compiled CSS in a format that can be understood by the + * {@link https://addons.mozilla.org/en-US/firefox/addon/103988/ + * FireSass Firebug extension}. + * Disabled when using the compressed output style. + * + * Defaults to false. + * @see style + */ + private $debug_info; + + /** + * extensions: + * @var array Sass extensions, e.g. Compass. An associative array of the form + * $name => $options where $name is the name of the extension and $options + * is an array of name=>value options pairs. + */ + protected $extensions; + + /** + * filename: + * @var string The filename of the file being rendered. + * This is used solely for reporting errors. + */ + protected $filename; + + /** + * function_paths: + * @var array An array of filesystem paths which should be searched for + * SassScript functions. + */ + private $function_paths; + + /** + * line: + * @var integer The number of the first line of the Sass template. Used for + * reporting line numbers for errors. This is useful to set if the Sass + * template is embedded. + * + * Defaults to 1. + */ + private $line; + + /** + * line_numbers: + * @var boolean When true the line number and filename where a selector is + * defined is emitted into the compiled CSS as a comment. Useful for debugging + * especially when using imports and mixins. + * Disabled when using the compressed output style or the debug_info option. + * + * Defaults to false. + * @see debug_info + * @see style + */ + private $line_numbers; + + /** + * load_paths: + * @var array An array of filesystem paths which should be searched for + * Sass templates imported with the @import directive. + * + * Defaults to './sass-templates'. + */ + private $load_paths; + + /** + * property_syntax: + * @var string Forces the document to use one syntax for + * properties. If the correct syntax isn't used, an error is thrown. + * Value can be: + * + new - forces the use of a colon or equals sign after the property name. + * For example color: #0f3 or width: $main_width. + * + old - forces the use of a colon before the property name. + * For example: :color #0f3 or :width = $main_width. + * + * By default, either syntax is valid. + * + * Ignored for SCSS files which alaways use the new style. + */ + private $property_syntax; + + /** + * quiet: + * @var boolean When set to true, causes warnings to be disabled. + * Defaults to false. + */ + private $quiet; + + /** + * style: + * @var string the style of the CSS output. + * Value can be: + * + nested - Nested is the default Sass style, because it reflects the + * structure of the document in much the same way Sass does. Each selector + * and rule has its own line with indentation is based on how deeply the rule + * is nested. Nested style is very useful when looking at large CSS files as + * it allows you to very easily grasp the structure of the file without + * actually reading anything. + * + expanded - Expanded is the typical human-made CSS style, with each selector + * and property taking up one line. Selectors are not indented; properties are + * indented within the rules. + * + compact - Each CSS rule takes up only one line, with every property defined + * on that line. Nested rules are placed with each other while groups of rules + * are separated by a blank line. + * + compressed - Compressed has no whitespace except that necessary to separate + * selectors and properties. It's not meant to be human-readable. + * + * Defaults to 'nested'. + */ + private $style; + + /** + * syntax: + * @var string The syntax of the input file. + * 'sass' for the indented syntax and 'scss' for the CSS-extension syntax. + * + * This is set automatically when parsing a file, else defaults to 'sass'. + */ + private $syntax; + + /** + * template_location: + * @var string Path to the root sass template directory for your + * application. + */ + private $template_location; + + /** + * vendor_properties: + * If enabled a property need only be written in the standard form and vendor + * specific versions will be added to the style sheet. + * @var mixed array: vendor properties, merged with the built-in vendor + * properties, to automatically apply. + * Boolean true: use built in vendor properties. + * + * Defaults to vendor_properties disabled. + * @see _vendorProperties + */ + private $vendor_properties = array(); + + /**#@-*/ + /** + * Defines the build-in vendor properties + * @var array built-in vendor properties + * @see vendor_properties + */ + private $_vendorProperties = array( + 'border-radius' => array( + '-moz-border-radius', + '-webkit-border-radius', + '-khtml-border-radius' + ), + 'border-top-right-radius' => array( + '-moz-border-radius-topright', + '-webkit-border-top-right-radius', + '-khtml-border-top-right-radius' + ), + 'border-bottom-right-radius' => array( + '-moz-border-radius-bottomright', + '-webkit-border-bottom-right-radius', + '-khtml-border-bottom-right-radius' + ), + 'border-bottom-left-radius' => array( + '-moz-border-radius-bottomleft', + '-webkit-border-bottom-left-radius', + '-khtml-border-bottom-left-radius' + ), + 'border-top-left-radius' => array( + '-moz-border-radius-topleft', + '-webkit-border-top-left-radius', + '-khtml-border-top-left-radius' + ), + 'box-shadow' => array('-moz-box-shadow', '-webkit-box-shadow'), + 'box-sizing' => array('-moz-box-sizing', '-webkit-box-sizing'), + 'opacity' => array('-moz-opacity', '-webkit-opacity', '-khtml-opacity'), + ); + + /** + * Constructor. + * Sets parser options + * @param array $options + * @return SassParser + */ + public function __construct($options = array()) { + if (!is_array($options)) { + throw new SassException('{what} must be a {type}', array('{what}'=>'options', '{type}'=>'array')); + } + if (!empty($options['language'])) { + Phamlp::$language = $options['language']; + } + + if (!empty($options['extensions'])) { + foreach ($options['extensions'] as $extension=>$extOptions) { + include dirname(__FILE__).DIRECTORY_SEPARATOR.'extensions'.DIRECTORY_SEPARATOR.$extension.DIRECTORY_SEPARATOR.'config.php'; + $configClass = 'SassExtentions'.$extension.'Config'; + $config = new $configClass; + $config->config($extOptions); + + $lp = dirname(__FILE__).DIRECTORY_SEPARATOR.'extensions'.DIRECTORY_SEPARATOR.$extension.DIRECTORY_SEPARATOR.'frameworks'; + $fp = dirname(__FILE__).DIRECTORY_SEPARATOR.'extensions'.DIRECTORY_SEPARATOR.$extension.DIRECTORY_SEPARATOR.'functions'; + $options['load_paths'] = (empty($options['load_paths']) ? + array($lp) : array_merge($options['load_paths'], $lp)); + $options['function_paths'] = (empty($options['function_paths']) ? + array($fp) : array_merge($options['function_paths'], $fp)); + } + } + + if (!empty($options['vendor_properties'])) { + if ($options['vendor_properties'] === true) { + $this->vendor_properties = $this->_vendorProperties; + } + elseif (is_array($options['vendor_properties'])) { + $this->vendor_properties = array_merge($this->vendor_properties, $this->_vendorProperties); + } + } + unset($options['language'], $options['vendor_properties']); + + $defaultOptions = array( + 'cache' => self::CACHE, + 'cache_location' => dirname(__FILE__) . DIRECTORY_SEPARATOR . self::CACHE_LOCATION, + 'css_location' => dirname(__FILE__) . DIRECTORY_SEPARATOR . self::CSS_LOCATION, + 'debug_info' => false, + 'filename' => array('dirname' => '', 'basename' => ''), + 'function_paths' => array(), + 'load_paths' => array(dirname(__FILE__) . DIRECTORY_SEPARATOR . self::TEMPLATE_LOCATION), + 'line' => 1, + 'line_numbers' => false, + 'style' => SassRenderer::STYLE_NESTED, + 'syntax' => SassFile::SASS + ); + + foreach (array_merge($defaultOptions, $options) as $name=>$value) { + if (property_exists($this, $name)) { + $this->$name = $value; + } + } + } + + /** + * Getter. + * @param string name of property to get + * @return mixed return value of getter function + */ + public function __get($name) { + $getter = 'get' . ucfirst($name); + if (method_exists($this, $getter)) { + return $this->$getter(); + } + throw new SassException('No getter function for {what}', array('{what}'=>$name)); + } + + public function getCache() { + return $this->cache; + } + + public function getCache_location() { + return $this->cache_location; + } + + public function getCss_location() { + return $this->css_location; + } + + public function getDebug_info() { + return $this->debug_info; + } + + public function getFilename() { + return $this->filename; + } + + public function getLine() { + return $this->line; + } + + public function getSource() { + return $this->source; + } + + public function getLine_numbers() { + return $this->line_numbers; + } + + public function getFunction_paths() { + return $this->function_paths; + } + + public function getLoad_paths() { + return $this->load_paths; + } + + public function getProperty_syntax() { + return $this->property_syntax; + } + + public function getQuiet() { + return $this->quiet; + } + + public function getStyle() { + return $this->style; + } + + public function getSyntax() { + return $this->syntax; + } + + public function getTemplate_location() { + return $this->template_location; + } + + public function getVendor_properties() { + return $this->vendor_properties; + } + + public function getOptions() { + return array( + 'cache' => $this->cache, + 'cache_location' => $this->cache_location, + 'css_location' => $this->css_location, + 'filename' => $this->filename, + 'function_paths' => $this->function_paths, + 'line' => $this->line, + 'line_numbers' => $this->line_numbers, + 'load_paths' => $this->load_paths, + 'property_syntax' => $this->property_syntax, + 'quiet' => $this->quiet, + 'style' => $this->style, + 'syntax' => $this->syntax, + 'template_location' => $this->template_location, + 'vendor_properties' => $this->vendor_properties + ); + } + + /** + * Parse a sass file or Sass source code and returns the CSS. + * @param string name of source file or Sass source + * @return string CSS + */ + public function toCss($source, $isFile = true) { + return $this->parse($source, $isFile)->render(); + } + + /** + * Parse a sass file or Sass source code and + * returns the document tree that can then be rendered. + * The file will be searched for in the directories specified by the + * load_paths option. + * If caching is enabled a cached version will be used if possible or the + * compiled version cached if not. + * @param string name of source file or Sass source + * @return SassRootNode Root node of document tree + */ + public function parse($source, $isFile = true) { + if ($isFile) { + $this->filename = SassFile::getFile($source, $this); + + if ($isFile) { + $this->syntax = substr($this->filename, -4); + } + elseif ($this->syntax !== SassFile::SASS && $this->syntax !== SassFile::SCSS) { + throw new SassException('Invalid {what}', array('{what}'=>'syntax option')); + } + + if ($this->cache) { + $cached = SassFile::getCachedFile($this->filename, $this->cache_location); + if ($cached !== false) { + return $cached; + } + } + + $tree = $this->toTree(file_get_contents($this->filename)); + + if ($this->cache) { + SassFile::setCachedFile($tree, $this->filename, $this->cache_location); + } + + return $tree; + } + else { + return $this->toTree($source); + } + } + + /** + * Parse Sass source into a document tree. + * If the tree is already created return that. + * @param string Sass source + * @return SassRootNode the root of this document tree + */ + private function toTree($source) { + if ($this->syntax === SassFile::SASS) { + $this->source = explode("\n", $source); + $this->setIndentChar(); + } + else { + $this->source = $source; + } + unset($source); + $root = new SassRootNode($this); + $this->buildTree($root); + return $root; + } + + /** + * Builds a parse tree under the parent node. + * Called recursivly until the source is parsed. + * @param SassNode the node + */ + private function buildTree($parent) { + $node = $this->getNode($parent); + while (is_object($node) && $node->isChildOf($parent)) { + $parent->addChild($node); + $node = $this->buildTree($node); + } + return $node; + } + + /** + * Creates and returns the next SassNode. + * The tpye of SassNode depends on the content of the SassToken. + * @return SassNode a SassNode of the appropriate type. Null when no more + * source to parse. + */ + private function getNode($node) { + $token = $this->getToken(); + if (empty($token)) return null; + switch (true) { + case SassDirectiveNode::isa($token): + return $this->parseDirective($token, $node); + break; + case SassCommentNode::isa($token): + return new SassCommentNode($token); + break; + case SassVariableNode::isa($token): + return new SassVariableNode($token); + break; + case SassPropertyNode::isa($token, $this->property_syntax): + return new SassPropertyNode($token, $this->property_syntax); + break; + case SassMixinDefinitionNode::isa($token): + if ($this->syntax === SassFile::SCSS) { + throw new SassException('Mixin {which} shortcut not allowed in SCSS', array('{which}'=>'definition'), $this); + } + return new SassMixinDefinitionNode($token); + break; + case SassMixinNode::isa($token): + if ($this->syntax === SassFile::SCSS) { + throw new SassException('Mixin {which} shortcut not allowed in SCSS', array('{which}'=>'include'), $this); + } + return new SassMixinNode($token); + break; + default: + return new SassRuleNode($token); + break; + } // switch + } + + /** + * Returns a token object that contains the next source statement and + * meta data about it. + * @return object + */ + private function getToken() { + return ($this->syntax === SassFile::SASS ? $this->sass2Token() : $this->scss2Token()); + } + + /** + * Returns an object that contains the next source statement and meta data + * about it from SASS source. + * Sass statements are passed over. Statements spanning multiple lines, e.g. + * CSS comments and selectors, are assembled into a single statement. + * @return object Statement token. Null if end of source. + */ + private function sass2Token() { + $statement = ''; // source line being tokenised + $token = null; + + while (is_null($token) && !empty($this->source)) { + while (empty($statement) && !empty($this->source)) { + $source = array_shift($this->source); + $statement = trim($source); + $this->line++; + } + + if (empty($statement)) { + break; + } + + $level = $this->getLevel($source); + + // Comment statements can span multiple lines + if ($statement[0] === self::BEGIN_COMMENT) { + // Consume Sass comments + if (substr($statement, 0, strlen(self::BEGIN_SASS_COMMENT)) + === self::BEGIN_SASS_COMMENT) { + unset($statement); + while($this->getLevel($this->source[0]) > $level) { + array_shift($this->source); + $this->line++; + } + continue; + } + // Build CSS comments + elseif (substr($statement, 0, strlen(self::BEGIN_CSS_COMMENT)) + === self::BEGIN_CSS_COMMENT) { + while($this->getLevel($this->source[0]) > $level) { + $statement .= "\n" . ltrim(array_shift($this->source)); + $this->line++; + } + } + else { + $this->source = $statement; + throw new SassException('Illegal comment type', array(), $this); + } + } + // Selector statements can span multiple lines + elseif (substr($statement, -1) === SassRuleNode::CONTINUED) { + // Build the selector statement + while($this->getLevel($this->source[0]) === $level) { + $statement .= ltrim(array_shift($this->source)); + $this->line++; + } + } + + $token = (object) array( + 'source' => $statement, + 'level' => $level, + 'filename' => $this->filename, + 'line' => $this->line - 1, + ); + } + return $token; + } + + /** + * Returns the level of the line. + * Used for .sass source + * @param string the source + * @return integer the level of the source + * @throws Exception if the source indentation is invalid + */ + private function getLevel($source) { + $indent = strlen($source) - strlen(ltrim($source)); + $level = $indent/$this->indentSpaces; + if (!is_int($level) || + preg_match("/[^{$this->indentChar}]/", substr($source, 0, $indent))) { + $this->source = $source; + throw new SassException('Invalid indentation', array(), $this); + } + return $level; + } + + /** + * Returns an object that contains the next source statement and meta data + * about it from SCSS source. + * @return object Statement token. Null if end of source. + */ + private function scss2Token() { + static $srcpos = 0; // current position in the source stream + static $srclen; // the length of the source stream + + $statement = ''; + $token = null; + if (empty($srclen)) { + $srclen = strlen($this->source); + } + while (is_null($token) && $srcpos < $srclen) { + $c = $this->source[$srcpos++]; + switch ($c) { + case self::BEGIN_COMMENT: + if (substr($this->source, $srcpos-1, strlen(self::BEGIN_SASS_COMMENT)) + === self::BEGIN_SASS_COMMENT) { + while ($this->source[$srcpos++] !== "\n"); + $statement .= "\n"; + } + elseif (substr($this->source, $srcpos-1, strlen(self::BEGIN_CSS_COMMENT)) + === self::BEGIN_CSS_COMMENT) { + if (ltrim($statement)) { + throw new SassException('Invalid {what}', array('{what}'=>'comment'), (object) array( + 'source' => $statement, + 'filename' => $this->filename, + 'line' => $this->line, + )); + } + $statement .= $c.$this->source[$srcpos++]; + while (substr($this->source, $srcpos, strlen(self::END_CSS_COMMENT)) + !== self::END_CSS_COMMENT) { + $statement .= $this->source[$srcpos++]; + } + $srcpos += strlen(self::END_CSS_COMMENT); + $token = $this->createToken($statement.self::END_CSS_COMMENT); + } + else { + $statement .= $c; + } + break; + case self::DOUBLE_QUOTE: + case self::SINGLE_QUOTE: + $statement .= $c; + while ($this->source[$srcpos] !== $c) { + $statement .= $this->source[$srcpos++]; + } + $statement .= $this->source[$srcpos++]; + break; + case self::BEGIN_INTERPOLATION: + $statement .= $c; + if (substr($this->source, $srcpos-1, strlen(self::BEGIN_INTERPOLATION_BLOCK)) + === self::BEGIN_INTERPOLATION_BLOCK) { + while ($this->source[$srcpos] !== self::END_BLOCK) { + $statement .= $this->source[$srcpos++]; + } + $statement .= $this->source[$srcpos++]; + } + break; + case self::BEGIN_BLOCK: + case self::END_BLOCK: + case self::END_STATEMENT: + $token = $this->createToken($statement . $c); + if (is_null($token)) $statement = ''; + break; + default: + $statement .= $c; + break; + } + } + + if (is_null($token)) + $srclen = $srcpos = 0; + + return $token; + } + + /** + * Returns an object that contains the source statement and meta data about + * it. + * If the statement is just and end block we update the meta data and return null. + * @param string source statement + * @return SassToken + */ + private function createToken($statement) { + static $level = 0; + + $this->line += substr_count($statement, "\n"); + $statement = trim($statement); + if (substr($statement, 0, strlen(self::BEGIN_CSS_COMMENT)) !== self::BEGIN_CSS_COMMENT) { + $statement = str_replace(array("\n","\r"), '', $statement); + } + $last = substr($statement, -1); + // Trim the statement removing whitespace, end statement (;), begin block ({), and (unless the statement ends in an interpolation block) end block (}) + $statement = rtrim($statement, ' '.self::BEGIN_BLOCK.self::END_STATEMENT); + $statement = (preg_match('/#\{.+?\}$/i', $statement) ? $statement : rtrim($statement, self::END_BLOCK)); + $token = ($statement ? (object) array( + 'source' => $statement, + 'level' => $level, + 'filename' => $this->filename, + 'line' => $this->line, + ) : null); + $level += ($last === self::BEGIN_BLOCK ? 1 : ($last === self::END_BLOCK ? -1 : 0)); + return $token; + } + + /** + * Parses a directive + * @param SassToken token to parse + * @param SassNode parent node + * @return SassNode a Sass directive node + */ + private function parseDirective($token, $parent) { + switch (SassDirectiveNode::extractDirective($token)) { + case '@extend': + return new SassExtendNode($token); + break; + case '@mixin': + return new SassMixinDefinitionNode($token); + break; + case '@include': + return new SassMixinNode($token); + break; + case '@import': + if ($this->syntax == SassFile::SASS) { + $i = 0; + $source = ''; + while (!empty($this->source) && empty($source)) { + $source = $this->source[$i++]; + } + if (!empty($source) && $this->getLevel($source) > $token->level) { + throw new SassException('Nesting not allowed beneath {what}', array('{what}'=>'@import directive'), $token); + } + } + return new SassImportNode($token); + break; + case '@for': + return new SassForNode($token); + break; + case '@if': + return new SassIfNode($token); + break; + case '@else': // handles else and else if directives + return new SassElseNode($token); + break; + case '@do': + case '@while': + return new SassWhileNode($token); + break; + case '@debug': + return new SassDebugNode($token); + break; + case '@warn': + return new SassDebugNode($token, true); + break; + default: + return new SassDirectiveNode($token); + break; + } + } + + /** + * Determine the indent character and indent spaces. + * The first character of the first indented line determines the character. + * If this is a space the number of spaces determines the indentSpaces; this + * is always 1 if the indent character is a tab. + * Only used for .sass files. + * @throws SassException if the indent is mixed or + * the indent character can not be determined + */ + private function setIndentChar() { + foreach ($this->source as $l=>$source) { + if (!empty($source) && in_array($source[0], $this->indentChars)) { + $this->indentChar = $source[0]; + for ($i = 0, $len = strlen($source); $i < $len && $source[$i] == $this->indentChar; $i++); + if ($i < $len && in_array($source[$i], $this->indentChars)) { + $this->line = ++$l; + $this->source = $source; + throw new SassException('Mixed indentation not allowed', array(), $this); + } + $this->indentSpaces = ($this->indentChar == ' ' ? $i : 1); + return; + } + } // foreach + $this->indentChar = ' '; + $this->indentSpaces = 2; + } +} diff --git a/lib/sass/sass/extensions/compass/config.php b/lib/sass/sass/extensions/compass/config.php new file mode 100644 index 000000000..0ae79f1f6 --- /dev/null +++ b/lib/sass/sass/extensions/compass/config.php @@ -0,0 +1,65 @@ + + * @copyright Copyright (c) 2010 PBM Web Development + * @license http://phamlp.googlecode.com/files/license.txt + * @package PHamlP + * @subpackage Sass.extensions.compass + */ + +/** + * Compass extension configuration class. + * @package PHamlP + * @subpackage Sass.extensions.compass + */ +class SassExtentionsCompassConfig { + public static $config; + private static $defaultConfig = array( + 'project_path' => '', + 'http_path' => '/', + 'css_dir' => 'css', + 'css_path' => '', + 'http_css_path' => '', + 'fonts_dir' => 'fonts', + 'fonts_path' => '', + 'http_fonts_path' => '', + 'images_dir' => 'images', + 'images_path' => '', + 'http_images_path' => '', + 'javascripts_dir' => 'javascripts', + 'javascripts_path' => '', + 'http_javascripts_path' => '', + 'relative_assets' => true, + ); + + /** + * Sets configuration settings or returns a configuration setting. + * @param mixed array: configuration settings; string: configuration setting to return + * @return string configuration setting. Null if setting does not exist. + */ + public function config($config) { + if (is_array($config)) { + self::$config = array_merge(self::$defaultConfig, $config); + self::setDefaults(); + } + elseif (is_string($config) && isset(self::$config[$config])) { + return self::$config[$config]; + } + } + + /** + * Sets default values for paths not specified + */ + private static function setDefaults() { + foreach (array('css', 'images', 'fonts', 'javascripts') as $asset) { + if (empty(self::$config[$asset.'_path'])) { + self::$config[$asset.'_path'] = self::$config['project_path'].DIRECTORY_SEPARATOR.self::$config[$asset.'_dir']; + } + if (empty(self::$config['http_'.$asset.'_path'])) { + self::$config['http_'.$asset.'_path'] = self::$config['http_path'].self::$config[$asset.'_dir']; + } + } + } +} \ No newline at end of file diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss new file mode 100644 index 000000000..067f84e54 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/_blueprint.scss @@ -0,0 +1,47 @@ +@import "blueprint/colors"; +@import "blueprint/grid"; +@import "blueprint/typography"; +@import "blueprint/utilities"; +@import "blueprint/form"; +@import "blueprint/interaction"; +@import "blueprint/debug"; +@import "blueprint/print"; +@import "blueprint/ie"; + +// ### Usage examples: +// +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +blueprint
    +// 
    +// +// Scoped by a presentational class: +//
    +// body.blueprint
    +//   +blueprint(true)
    +// 
    +// +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +blueprint(true)
    +// 
    +// +// #### Deprecated: +// You use to be able to pass the body selector as the first argument when used as a top-level mixin +//
    +// +blueprint("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    + +@mixin blueprint($body_selector: body) { + //@doc off + @if not ($body_selector == "body" or $body_selector == true) { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +blueprint, pass true as the first argument and mix it into #{$body_selector}."; } + //@doc on + @include blueprint-typography($body_selector); + @include blueprint-utilities; + @include blueprint-grid; + @include blueprint-debug; + @include blueprint-interaction; + @include blueprint-form; +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss new file mode 100644 index 000000000..14af82242 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.scss @@ -0,0 +1,101 @@ +@import "compass/css3/inline-block"; +@import "compass/utilities/general/float"; + +// Button Font +$blueprint_button_font_family: unquote('"Lucida Grande", Tahoma, Arial, Verdana, sans-serif') !default; + +// Default Button Colors +$blueprint_button_border_color: #dedede !default; +$blueprint_button_background_color: #f5f5f5 !default; +$blueprint_button_font_color: #565656 !default; + +// Default Button Hover Colors +$blueprint_button_hover_border_color: #c2e1ef !default; +$blueprint_button_hover_background_color: #dff4ff !default; +$blueprint_button_hover_font_color: #336699 !default; + +// Default Button Active Colors +$blueprint_button_active_border_color: #6299c5 !default; +$blueprint_button_active_background_color: #6299c5 !default; +$blueprint_button_active_font_color: white !default; + +//** +// Sets the colors for a button +// @param border_highlight_color +// The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. +@mixin button-colors( + $font_color: $blueprint_button_font_color, + $bg_color: $blueprint_button_background_color, + $border_color: $blueprint_button_border_color, + $border_highlight_color: $border_color + #101010 +) { + background-color: $bg_color; + border-color: $border_highlight_color $border_color $border_color $border_highlight_color; + color: $font_color; +} + +//** +// Sets the colors for a button in the active state +// @param border_highlight_color +// The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. +@mixin button-active-colors( + $font_color: $blueprint_button_active_font_color, + $bg_color: $blueprint_button_active_background_color, + $border_color: $blueprint_button_active_border_color, + $border_highlight_color: $border_color + #101010 +) { + &:active { + @include button-colors($font_color, $bg_color, $border_color, $border_highlight_color); + } +} + +//** +// Sets the colors for a button in the hover state. +// @param border_highlight_color +// The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. +@mixin button-hover-colors( + $font_color: $blueprint_button_hover_font_color, + $bg_color: $blueprint_button_hover_background_color, + $border_color: $blueprint_button_hover_border_color, + $border_highlight_color: $border_color + #101010 +) { + &:hover { + @include button-colors($font_color, $bg_color, $border_color, $border_highlight_color); + } +} + +@mixin button-base($float: false) { + @if $float { @include float($float); display: block; } + @else { @include inline-block; } + margin: 0.7em 0.5em 0.7em 0; + border-width: 1px; border-style: solid; + font-family: $blueprint_button_font_family; font-size: 100%; line-height: 130%; font-weight: bold; + text-decoration: none; + cursor: pointer; + img { + margin: 0 3px -3px 0 !important; + padding: 0; + border: none; + width: 16px; + height: 16px; + float: none; + } +} + +@mixin anchor-button($float: false) { + @include button-base($float); + padding: 5px 10px 5px 7px; +} + +@mixin button-button($float: false) { + @include button-base($float); + width: auto; + overflow: visible; + padding: 4px 10px 3px 7px; + &[type] { + padding: 4px 10px 4px 7px; + line-height: 17px; } + *:first-child+html &[type] { + padding: 4px 10px 3px 7px; + } +} \ No newline at end of file diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss new file mode 100644 index 000000000..6817a2d45 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_colors.scss @@ -0,0 +1,32 @@ +$font_color: #333333 !default; +$quiet_color: $font_color + #333333 !default; +$loud_color: $font_color - #222222 !default; +$header_color: $font_color - #111111 !default; +$alt_text_color: #666666 !default; +$blueprint_background_color: #eeeeee !default; + +$link_color: #000099 !default; +$link_hover_color: black !default; +$link_focus_color: $link_hover_color !default; +$link_active_color: $link_color + #cc0000 !default; +$link_visited_color: $link_color - #333333 !default; + +$feedback_border_color: #dddddd !default; +$success_color: #264409 !default; +$success_bg_color: #e6efc2 !default; +$success_border_color: #c6d880 !default; +$notice_color: #514721 !default; +$notice_bg_color: #fff6bf !default; +$notice_border_color: #ffd324 !default; +$error_color: #8a1f11 !default; +$error_bg_color: #fbe3e4 !default; +$error_border_color: #fbc2c4 !default; + +$highlight_color: yellow !default; +$added_color: white !default; +$added_bg_color: #006600 !default; +$removed_color: white !default; +$removed_bg_color: #990000 !default; + +$blueprint_table_header_color: #c3d9ff !default; +$blueprint_table_stripe_color: #e5ecf9 !default; diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss new file mode 100644 index 000000000..b37a89c0a --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_debug.scss @@ -0,0 +1,11 @@ +@mixin showgrid($image: "grid.png") { + background: image_url($image); +} + +@mixin blueprint-debug($grid_image: unquote("grid.png")) { + // Use this class on any column or container to see the grid. + // TODO: prefix this with the project path. + .showgrid { + @include showgrid($grid_image); + } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss new file mode 100644 index 000000000..b6bf33c8f --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss @@ -0,0 +1,86 @@ +@import "typography"; + +$alternate-text-font : "Warnock Pro", "Goudy Old Style", "Palatino", "Book Antiqua", Georgia, serif !default; +// To install the fancy type plugin: +// 1. import the fancy_type module: @import blueprint/fancy_type +// 2. mixin +fancy-type to your project's body or at the top level of your stylesheet: +// body +// +fancy-type + +@mixin fancy-type { + @include fancy-paragraphs; + .caps { @include caps; } + .dquo { @include dquo; } + .alt { @include alt; } +} + +// Indentation instead of line shifts for sibling paragraphs. Mixin to a style like p + p +@mixin sibling-indentation { + text-indent: 2em; + margin-top: -1.5em; + /* Don't want this in forms. */ + form & { text-indent: 0; } +} + +// For great looking type, use this code instead of asdf: +// asdf +// Best used on prepositions and ampersands. + +@mixin alt { + color: $alt-text-color; + font-family: $alternate-text-font; + font-style: italic; + font-weight: normal; +} + +// For great looking quote marks in titles, replace "asdf" with: +// asdf” +// (That is, when the title starts with a quote mark). +// (You may have to change this value depending on your font size). + +@mixin dquo($offset: 0.5em) { + margin-left: -$offset; +} + +// Reduced size type with incremental leading +// (http://www.markboulton.co.uk/journal/comments/incremental_leading/) +// +// This could be used for side notes. For smaller type, you don't necessarily want to +// follow the 1.5x vertical rhythm -- the line-height is too much. +// +// Using this mixin, reduces your font size and line-height so that for +// every four lines of normal sized type, there is five lines of the sidenote. eg: +// +// Arguments: +// `$font-size` - The desired font size in pixels. This will be converted to ems for you. Defaults to 10px. +// `$base-font-size` - The base font size in pixels. Defaults to 12px +// `$old-line-height` - The old line height. Defaults to 1.5 times the base-font-size + +@mixin incr( + $font-size: 10px, + $base-font-size: $blueprint-font-size, + $old-line-height: $base-font-size * 1.5 +) { + font-size: 1em * $font-size / $base-font-size; + line-height: 1em * $old-line-height / $font-size * 4 / 5; + margin-bottom: 1.5em; +} + +// Surround uppercase words and abbreviations with this class. +// Based on work by Jørgen Arnor GÃ¥rdsø Lom [http://twistedintellect.com/] + +@mixin caps { + font-variant: small-caps; + letter-spacing: 1px; + text-transform: lowercase; + font-size: 1.2em; + line-height: 1%; + font-weight: bold; + padding: 0 2px; +} + +@mixin fancy-paragraphs { + p + p { @include sibling-indentation; } + p.incr, + .incr p { @include incr; } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss new file mode 100644 index 000000000..fe4afe38d --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_form.scss @@ -0,0 +1,68 @@ +@import "colors"; + +// Mixin for producing Blueprint "inline" forms. Should be used with the blueprint-form mixin. +@mixin blueprint-inline-form { + line-height: 3; + p { + margin-bottom: 0; + } +} + +@mixin blueprint-form { + @include blueprint-form-layout; + @include blueprint-form-borders; + @include blueprint-form-sizes; +} + +@mixin blueprint-form-layout { + label { font-weight: bold; } + fieldset { padding: 1.4em; margin: 0 0 1.5em 0; } + legend { font-weight: bold; font-size: 1.2em; } + input { + &.text, + &.title, + &[type=email], + &[type=text], + &[type=password] { margin: 0.5em 0; background-color: white; padding: 5px; } + &.title { font-size: 1.5em; } + &[type=checkbox], + &.checkbox, + &[type=radio], + &.radio { position: relative; top: 0.25em; } + } + textarea { margin: 0.5em 0; padding: 5px; } + select { margin: 0.5em 0; } +} + +@mixin blueprint-form-sizes +( + $input_width: 300px, + $textarea_width: 390px, + $textarea_height: 250px +) { + input { + &.text, + &.title, + &[type=email], + &[type=text], + &[type=password] { width: $input_width; } + } + textarea { width: $textarea_width; height: $textarea_height; } +} + +@mixin blueprint-form-borders +( + $unfocused_border_color: #bbbbbb, + $focus_border_color: #666666, + $fieldset_border_color: #cccccc +) { + fieldset { + border: 1px solid $fieldset_border_color; } + input.text, input.title, input[type=email], input[type=text], input[type=password], + textarea, select { + border: 1px solid $unfocused_border_color; + &:focus { + border: 1px solid $focus_border_color; + } + } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss new file mode 100644 index 000000000..78f509e20 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_grid.scss @@ -0,0 +1,249 @@ +// -------------------------------------------------------------- +// SASS Gridification +// * Author: Chris Eppstein +// A SASS adaptation of Blueprint CSS +// * Version: 0.7.1 (2008-02-25) +// * Website: http://code.google.com/p/blueprintcss/ +// Based on work by: +// * Lorin Tackett [lorintackett.com] +// * Olav Bjorkoy [bjorkoy.com] +// * Nathan Borror [playgroundblues.com] +// * Jeff Croft [jeffcroft.com] +// * Christian Metts [mintchaos.com] +// * Khoi Vinh [subtraction.com] +// Read more about using a grid here: +// * http://www.subtraction.com/2007/03/18/oh-yeeaahh +// -------------------------------------------------------------- + +@import "compass/utilities/general/float"; +@import "compass/utilities/general/clearfix"; + +// The number of columns in the grid. +$blueprint_grid_columns: 24 !default; + +// The width of a column +$blueprint_grid_width: 30px !default; + +// The amount of margin between columns +$blueprint_grid_margin: 10px !default; + +// The width of a column including the margin. With default settings this is `40px`. +$blueprint_grid_outer_width: $blueprint_grid_width + $blueprint_grid_margin; + +// The width of the container. With default settings this is `950px`. +$blueprint_container_size: $blueprint_grid_outer_width * $blueprint_grid_columns - $blueprint_grid_margin; + +// Generates presentational class names that you can use +// in your html to layout your pages. +// +// #### Note: +// Best practices discourage using this mixin, +// but it is provided to support legacy websites +// and to test the sass port against blueprint's example pages. + +@mixin blueprint-grid { + // A container should group all your columns + .container { + @include container; } + .column, #{enumerate("div.span", 1, $blueprint_grid_columns)} { + @include column-base; } + // The last column in a row needs this class (or mixin) or it will end up on the next row. + .last, div.last { + @include last; } + // Use these classes (or mixins) to set the width of a column. + @for $n from 1 to $blueprint_grid_columns { + .span-#{$n} { + @include span($n); } } + .span-#{$blueprint_grid_columns}, div.span-#{$blueprint_grid_columns} { + @include span($blueprint_grid_columns); + margin: 0; } + input, textarea, select { + @for $n from 1 through $blueprint_grid_columns { + &.span-#{$n} { + @include span($n, true); } } } + // Add these to a column to append empty cols. + @for $n from 1 to $blueprint_grid_columns { + .append-#{$n} { + @include append($n); } } + // Add these to a column to prepend empty cols. + @for $n from 1 to $blueprint_grid_columns { + .prepend-#{$n} { + @include prepend($n); } } + // Use these classes on an element to push it into the + // next column, or to pull it into the previous column. + #{enumerate(".pull", 1, $blueprint_grid_columns)} { + @include pull-base; } + @for $n from 1 through $blueprint_grid_columns { + .pull-#{$n} { + @include pull-margins($n); } } + #{enumerate(".push", 1, $blueprint_grid_columns)} { + @include push-base; } + @for $n from 1 through $blueprint_grid_columns { + .push-#{$n} { + @include push-margins($n); } } + .prepend-top { + @include prepend-top; } + .append-bottom { + @include append-bottom; } } + +// A container for your columns. +// +// #### Note: +// If you use this mixin without the class and want to support ie6 +// you must set text-align left on your container element in an IE stylesheet. +@mixin container { + width: $blueprint_container_size; + margin: 0 auto; + @include clearfix; } + +// The last column in a row needs this mixin or it will end up +// on the next row in some browsers. +@mixin last { + margin-right: 0; } + +// Use this mixins to set the width of n columns. +@mixin column($n, $last: false) { + @include column-base($last); + @include span($n); } + +// Set only the width of an element to align it with the grid. +// Most of the time you'll want to use `+column` instead. +// +// This mixin is especially useful for aligning tables to the grid. +@mixin span($n, $override: false) { + $width: $blueprint_grid_width * $n + $blueprint_grid_margin * ($n - 1); + @if $override { + width: $width !important; } + @else { + width: $width; } } + +// The basic set of styles needed to make an element +// behave like a column: +// +// * floated to left +// * gutter margin on the right (unless the last column) +// * Some IE fixes +// +// #### Note: +// This mixin gets applied automatically when using `+column` +// so you probably don't need to use it directly unless +// you need to deviate from the grid or are trying +// to reduce the amount of generated CSS. +@mixin column-base($last: false) { + @include float-left; + @if $last { + @include last; } + @else { + margin-right: $blueprint_grid_margin; } + * html & { + overflow-x: hidden; } } + +// Mixin to a column to append n empty columns to the right +// by adding right padding to the column. +@mixin append($n) { + padding-right: $blueprint_grid_outer_width * $n; } + +// Mixin to a column to append n empty columns to the left +// by adding left padding to the column. +@mixin prepend($n) { + padding-left: $blueprint_grid_outer_width * $n; } + +// Adds trailing margin. +@mixin append-bottom($amount: 1.5em) { + margin-bottom: $amount; } + +// Adds leading margin. +@mixin prepend-top($amount: 1.5em) { + margin-top: $amount; } + +// Base styles that make it possible to pull an element to the left. +// #### Note: +// This mixin gets applied automatically when using `+pull` +// so you probably don't need to use it directly unless +// you need to deviate from the grid or are trying +// to reduce the amount of generated CSS. +@mixin pull-base { + @include float-left; + position: relative; } + +// The amount of pulling for element to the left. +// #### Note: +// This mixin gets applied automatically when using `+pull` +// so you probably don't need to use it directly unless +// you need to deviate from the grid or are trying +// to reduce the amount of generated CSS. +@mixin pull-margins($n, $last: false) { + @if $last { + margin-left: -$blueprint_grid_outer_width * $n + $blueprint_grid_margin; } + @else { + margin-left: -$blueprint_grid_outer_width * $n; } } + +// Moves a column `n` columns to the left. +// +// This mixin can also be used to change the display order of columns. +// +// If pulling past the last (visually) element in a row, +// pass `true` as the second argument so the calculations can adjust +// accordingly. + +// For example: +// +// HTML: +//
    +// 
    One
    +//
    Two
    +//
    +// Sass: +//
    +// #one
    +//   +column(18, true)
    +//   +prepend(6)
    +// #two
    +//   +column(6)
    +//   +pull(18, true)
    +// 
    +@mixin pull($n, $last: false) { + @include pull-base; + @include pull-margins($n, $last); } + +@mixin push-base { + @include float-right; + position: relative; } + +@mixin push-margins($n) { + margin: 0 (-$blueprint_grid_outer_width * $n) 1.5em $blueprint_grid_outer_width * $n; } + +// mixin to a column to push it n columns to the right +@mixin push($n) { + @include push-base; + @include push-margins($n); } + +// Border on right hand side of a column. +@mixin border($border_color: #eeeeee, $border_width: 1px) { + padding-right: $blueprint_grid_margin / 2 - $border_width; + margin-right: $blueprint_grid_margin / 2; + border-right: #{$border_width} solid #{$border_color}; } + +// Border with more whitespace, spans one column. +@mixin colborder($border_color: #eeeeee, $border_width: 1px) { + padding-right: floor(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2); + margin-right: ceil(($blueprint_grid_width + 2 * $blueprint_grid_margin - $border_width) / 2); + border-right: #{$border_width} solid #{$border_color}; } + +// Mixin this to an hr to make a horizontal ruler across a column. +@mixin colruler($border_color: #dddddd) { + background: $border_color; + color: $border_color; + clear: both; + float: none; + width: 100%; + height: 0.1em; + margin: 0 0 1.45em; + border: none; } + +// Mixin this to an hr to make a horizontal spacer across a column. +@mixin colspacer { + @include colruler; + background: white; + color: white; + visibility: hidden; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss new file mode 100644 index 000000000..fb3fe5f78 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_ie.scss @@ -0,0 +1,109 @@ +// @doc off +// The blueprint IE mixins should be mixed into a stylesheet that gets conditionally included +// into IE like so: +// +// @doc on + +//| Usage Examples +//| -------------- +//| +//| As a top-level mixin, apply to any page that includes the stylesheet: +//|
    +//| +blueprint-ie
    +//| 
    +//| Scoped by a presentational class: +//|
    +//| body.blueprint
    +//|  +blueprint-ie(true)
    +//| 
    +//| Scoped by semantic selectors: +//|
    +//| body#page-1, body#page-2, body.a-special-page-type
    +//|   +blueprint-ie(true)
    +//| 
    +//| **Deprecated:** You can pass the body selector as the first argument when used as a top-level mixin +//|
    +//| +blueprint-ie("body#page-1, body#page-2, body.a-special-page-type")
    +//| 
    +@mixin blueprint-ie($body_selector: body) { + @if $body_selector == true { + @include blueprint-ie-body; + @include blueprint-ie-defaults; } + @else { + #{$body_selector} { + @include blueprint-ie-body; + @if $body_selector != "body" { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +blueprint-ie, pass true as the first argument and mix it into #{$body_selector}."; + @include blueprint-ie-defaults; } } + @if $body_selector == "body" { + @include blueprint-ie-defaults; } } } + +@mixin blueprint-ie-body { + text-align: center; + @include blueprint-ie-hacks; } + +@mixin blueprint-ie-hacks { + * html & { + legend { + margin: 0px -8px 16px 0; + padding: 0; } } + html>& { + p code { + *white-space: normal; } } } + +// Fixes for Blueprint "inline" forms in IE +@mixin blueprint-inline-form-ie { + div, p { + vertical-align: middle; } + label { + position: relative; + top: -0.25em; } + input { + &.checkbox, &.radio, &.button, button { + margin: 0.5em 0; } } } + +@mixin blueprint-ie-defaults { + .container { + text-align: left; } + sup { + vertical-align: text-top; } + sub { + vertical-align: text-bottom; } + hr { + margin: -8px auto 11px; } + img { + -ms-interpolation-mode: bicubic; } + fieldset { + padding-top: 0; } + textarea { + overflow: auto; } + input { + &.text { + margin: 0.5em 0; + background-color: white; + border: 1px solid #bbbbbb; + &:focus { + border: 1px solid #666666; } } + &.title { + margin: 0.5em 0; + background-color: white; + border: 1px solid #bbbbbb; + &:focus { + border: 1px solid #666666; } } + &.checkbox { + position: relative; + top: 0.25em; } + &.radio { + position: relative; + top: 0.25em; } + &.button { + position: relative; + top: 0.25em; } } + textarea { + margin: 0.5em 0; } + select { + margin: 0.5em 0; } + button { + position: relative; + top: 0.25em; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss new file mode 100644 index 000000000..00a4760e9 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.scss @@ -0,0 +1,57 @@ +@import "colors"; + +@mixin blueprint-interaction { + .error { + @include error; } + .notice { + @include notice; } + .success { + @include success; } + .hide { + display: none; } + .highlight { + @include highlight; } + .added { + @include added; } + .removed { + @include removed; } } + +@mixin feedback-base { + padding: 0.8em; + margin-bottom: 1em; + border: 2px solid $feedback_border_color; } + +@mixin error { + @include feedback-base; + background: $error_bg_color; + color: $error_color; + border-color: $error_border_color; + a { + color: $error_color; } } + +@mixin notice { + @include feedback-base; + background: $notice_bg_color; + color: $notice_color; + border-color: $notice_border_color; + a { + color: $notice_color; } } + +@mixin success { + @include feedback-base; + background: $success_bg_color; + color: $success_color; + border-color: $success_border_color; + a { + color: $success_color; } } + +@mixin highlight { + background: $highlight_color; } + +@mixin added { + background: $added_bg_color; + color: $added_color; } + +@mixin removed { + background: $removed_bg_color; + color: $removed_color; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss new file mode 100644 index 000000000..d81159dff --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss @@ -0,0 +1,37 @@ +@mixin no-link-icon { + background: transparent none !important; + padding: 0 !important; + margin: 0 !important; +} + +@mixin link-icon-base { + padding: 2px 22px 2px 0; + margin: -2px 0; + background-repeat: no-repeat; + background-position: right center; +} + +@mixin link-icon($name, $include-base: true) { + @if $include-base { @include link-icon-base; } + background-image: image-url("link_icons/#{$name}"); } + +@mixin link-icons { + a[href^="http:"], + a[href^="mailto:"], + a[href^="http:"]:visited, + a[href$=".pdf"], + a[href$=".doc"], + a[href$=".xls"], + a[href$=".rss"], + a[href$=".rdf"], + a[href^="aim:"] { @include link-icon-base; } + a[href^="http:"] { @include link-icon("external.png", false); } + a[href^="mailto:"] { @include link-icon("email.png", false); } + a[href^="http:"]:visited { @include link-icon("visited.png", false); } + a[href$=".pdf"] { @include link-icon("pdf.png", false); } + a[href$=".doc"] { @include link-icon("doc.png", false); } + a[href$=".xls"] { @include link-icon("xls.png", false); } + a[href$=".rss"], + a[href$=".rdf"] { @include link-icon("feed.png", false); } + a[href^="aim:"] { @include link-icon("im.png", false); } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss new file mode 100644 index 000000000..03bb02e87 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.scss @@ -0,0 +1,147 @@ +// -------------------------------------------------------------- +// SASS Gridification +// * Author: Geoff Garside +// A SASS adaptation of Blueprint CSS +// * Version: 0.7.1 (2008-02-25) +// * Website: http://code.google.com/p/blueprintcss/ +// Based on work by: +// * Chris Eppstein [eppsteins.net] +// * Lorin Tacket [lorintackett.com] +// * Olav Bjorkoy [bjorkoy.com] +// * Nathan Borror [playgroundblues.com] +// * Jeff Croft [jeffcroft.com] +// * Christian Metts [mintchaos.com] +// * Khoi Vinh [subtraction.com] +// Liquid grid work by: +// * Ben Listwon +// * David Bedingfield +// * Andrei Michael Herasimchuk +// Involution Studios, http://www.involutionstudios.com +// Read more about using a grid here: +// * subtraction.com/archives/2007/0318_oh_yeeaahh.php +// ----- +// By default, the grid is 80% of window width, with 24 columns. +// +// To make the grid fixed, simply change the .container width +// property to a pixel value. e.g., 960px. +// ----- +// To use: +// This module is a REPLACEMENT for the grid module. Simply import it: +// @import blueprint +// @import blueprint/liquid +// ------------------------------------------------------------------- + +@import "compass/utilities/general/clearfix"; +@import "compass/utilities/general/float"; + +// Main layout grid, override these constants to build your grid and container sizes. +// The width shown gives the right floored percentage values. +$blueprint_liquid_grid_columns: 24 !default; + +$blueprint_liquid_grid_width: 3.167% !default; + +$blueprint_liquid_grid_margin: 1.042% !default; + +// Do not edit below this line unless you really know what you're doing. +$blueprint_liquid_container_width: 80% !default; + +$blueprint_liquid_container_min_width: 950px !default; + +$blueprint_liquid_grid_push_pull: -($blueprint_liquid_grid_margin + $blueprint_liquid_grid_width) !default; + +@mixin blueprint-liquid-grid { + // A container should group all your columns + .container { + @include container; } + // Use these classes (or mixins) to set the width of a column. + @for $n from 1 to $blueprint_liquid_grid_columns + 1 { + .span-#{$n} { + @include span($n); } + div { + &.span-#{$n} { + @include column($n, $n == $blueprint_liquid_grid_columns); } } } + // The last column in a row needs this class (or mixin) or it will end up on the next row. + div.last { + @include last; } + // Add these to a column to append empty cols. + @for $n from 1 to $blueprint_liquid_grid_columns { + .append-#{$n} { + @include append($n); } } + // Add these to a column to prepend empty cols. + @for $n from 1 to $blueprint_liquid_grid_columns { + .prepend-#{$n} { + @include prepend($n); } } + // Use these classes on an element to push it into the + // next column, or to pull it into the previous column. + @for $n from 1 to $blueprint_liquid_grid_columns + 1 { + .pull-#{$n} { + @include pull($n); } } + @for $n from 1 to $blueprint_liquid_grid_columns + 1 { + .push-#{$n} { + @include push($n); } } } + +@mixin container { + min-width: $blueprint_liquid_container_min_width; + width: $blueprint_liquid_container_width; + margin: 0 auto; + @include clearfix; } + +@mixin span($n, $override: false) { + $width: $blueprint_liquid_grid_width * $n + $blueprint_liquid_grid_margin * ($n - 1); + @if $override { + width: $width !important; } + @else { + width: $width; } } + +@mixin last { + margin-right: 0; } + +@mixin column($n, $last: false) { + @include float-left; + overflow: hidden; + @include span($n); + @if $last { + @include last; } + @else { + margin-right: $blueprint_liquid_grid_margin; } } + +@mixin append($n) { + padding-right: ($blueprint_liquid_grid_width + $blueprint_liquid_grid_margin) * $n; } + +@mixin prepend($n) { + padding-left: ($blueprint_liquid_grid_width + $blueprint_liquid_grid_margin) * $n; } + +@mixin pull($n, $last: false) { + margin-left: $blueprint_liquid_grid_push_pull * $n; } + +@mixin push($n) { + @include float-right; + margin: { + top: 0; + left: $blueprint_liquid_grid_margin; + right: $blueprint_liquid_grid_push_pull * $n; + bottom: 0; }; } + +@mixin border { + border-right: 1px solid #eeeeee; } + +@mixin colborder { + padding-right: $blueprint_liquid_grid_margin * 2; + margin-right: $blueprint_liquid_grid_margin * 2; + @include border; } + +@mixin colruler { + background: #dddddd; + color: #dddddd; + clear: both; + width: 100%; + height: 0.083em; + margin: 0; + margin-left: $blueprint_liquid_grid_margin * 2; + margin-right: $blueprint_liquid_grid_margin * 2; + border: none; } + +@mixin colspacer { + @include colruler; + background: white; + color: white; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss new file mode 100644 index 000000000..9dd020e72 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_print.scss @@ -0,0 +1,93 @@ +@import "typography"; +@import "compass/utilities/general/float"; + +// Usage examples: +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +blueprint-print
    +// 
    +// Scoped by a presentational class: +//
    +// body.blueprint
    +//  +blueprint-print(true)
    +// 
    +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +blueprint-print(true)
    +// 
    +// Deprecated: +// You can pass the body selector as the first argument when used as a top-level mixin +//
    +// +blueprint-print("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    +@mixin blueprint-print($body_selector: body) { + @if $body_selector == true { + @include blueprint-print-body; + @include blueprint-print-defaults; } + @else { + #{$body_selector} { + @include blueprint-print-body; + @if $body_selector != "body" { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +blueprint-print, pass true as the first argument and mix it into #{$body_selector}."; + @include blueprint-print-defaults; } } + @if $body_selector == "body" { + @include blueprint-print-defaults; } } } + +// This style is in blueprint, but I think it's annoying and it doesn't work in all browsers. +// Feel free to mix it into anchors where you want it. +@mixin blueprint-show-link-urls { + &:after { + content: " (" attr(href) ")"; + font-size: 90%; } } + +@mixin blueprint-print-body { + line-height: 1.5; + font-family: $blueprint_font_family; + color: black; + background: none; + font-size: 10pt; } + +@mixin blueprint-print-defaults { + .container { + background: none; } + hr { + background: #cccccc; + color: #cccccc; + width: 100%; + height: 2px; + margin: 2em 0; + padding: 0; + border: none; + &.space { + background: white; + color: white; } } + h1, h2, h3, h4, h5, h6 { + font-family: $blueprint_font_family; } + code { + font: { + size: 0.9em; + family: $blueprint_fixed_font_family; }; } + a { + img { + border: none; } + &:link, + &:visited { + background: transparent; + font-weight: 700; + text-decoration: underline; } } + p img.top { + margin-top: 0; } + blockquote { + margin: 1.5em; + padding: 1em; + font-style: italic; + font-size: 0.9em; } + .small { + font-size: 0.9em; } + .large { + font-size: 1.1em; } + .quiet { + color: #999999; } + .hide { + display: none; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss new file mode 100644 index 000000000..934a63ea8 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_reset.scss @@ -0,0 +1,3 @@ +@import "reset/utilities"; + +@include blueprint-global-reset; \ No newline at end of file diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss new file mode 100644 index 000000000..4cf281d60 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.scss @@ -0,0 +1,133 @@ +@import "grid"; +@import "compass/utilities/general/float"; + +// Main layout grid, override these constants to build your grid and container sizes. +$blueprint_grid_columns: 24 !default; + +$blueprint_grid_width: 30px !default; + +$blueprint_grid_margin: 10px !default; + +$blueprint_grid_outer_width: $blueprint_grid_width + $blueprint_grid_margin; + +$blueprint_container_size: $blueprint_grid_outer_width * $blueprint_grid_columns - $blueprint_grid_margin; + +// Columns +// Note: If you use this mixin without the class and want to support ie6 +// you must set text-align left on your container element in an IE stylesheet. +@mixin container { + width: $blueprint_container_size; + margin: 0 auto; + direction: rtl; + @include clearfix; } + +// The last column in a row needs this mixin or it will end up on the next row. +// TODO add this to span mixin when we have optional arguments +@mixin last { + margin-left: 0; } + +@mixin column-base($last: false) { + @include float-right; + @if $last { + @include last; } + @else { + margin-left: $blueprint_grid_margin; } + text-align: right; + * html & { + overflow-x: hidden; } } + +// Mixin to a column to append n empty cols. +@mixin append($n) { + padding-left: $blueprint_grid_outer_width * $n; } + +// Mixin to a column to prepend n empty cols. +@mixin prepend($n) { + padding-right: $blueprint_grid_outer_width * $n; } + +// mixin to a column to move it n columns to the left +@mixin pull($n, $last: false) { + position: relative; + @if $last { + margin-right: -$blueprint_grid_outer_width * $n + $blueprint_grid_margin; } + @else { + margin-right: -$blueprint_grid_outer_width * $n; } } + +// mixin to a column to push it n columns to the right +@mixin push($n) { + @include float-right; + position: relative; + margin: { + top: 0; + left: -$blueprint_grid_outer_width * $n; + bottom: 1.5em; + right: $blueprint_grid_outer_width * $n; }; } + +// Border on left hand side of a column. +@mixin border { + padding-left: $blueprint_grid_margin / 2 - 1; + margin-left: $blueprint_grid_margin / 2; + border-left: 1px solid #eeeeee; } + +// Border with more whitespace, spans one column. +@mixin colborder { + padding-left: ($blueprint_grid_width - 2 * $blueprint_grid_margin - 1) / 2; + margin-left: ($blueprint_grid_width - 2 * $blueprint_grid_margin) / 2; + border-left: 1px solid #eeeeee; } + +// Usage examples: +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +rtl-typography
    +// 
    +// +// Scoped by a presentational class: +//
    +// body.blueprint
    +//  +rtl-typography(true)
    +// 
    +// +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +rtl-typography(true)
    +// 
    +// +// **Deprecated**: +// You can pass the body selector as the first argument when used as a top-level mixin +//
    +// +rtl-typography("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    +@mixin rtl-typography($body_selector: body) { + @if $body_selector == true { + html & { + font-family: Arial, sans-serif; } + @include rtl-typography-defaults; } + @else { + html #{$body_selector} { + font-family: Arial, sans-serif; + @if $body_selector != "body" { + @warn "[DEPRECATED] To specify a the selector \"#{$body_selector}\" to +rtl-typography, pass true as the first argument and mix it into #{$body_selector}."; + @include rtl-typography-defaults; } } + @if $body_selector == "body" { + body { + @include rtl-typography-defaults; } } } } + +@mixin rtl-typography-defaults { + h1, h2, h3, h4, h5, h6 { + font-family: Arial, sans-serif; } + pre, code, tt { + font-family: monospace; } + p { + img.right { + @include float-left; + margin: 1.5em 1.5em 1.5em 0; + padding: 0; } + img.left { + @include float-right; + margin: 1.5em 0 1.5em 1.5em; + padding: 0; } } + dd, ul, ol { + margin-left: 0; + margin-right: 1.5em; } + td, th { + text-align: right; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss new file mode 100644 index 000000000..57cf88754 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss @@ -0,0 +1,54 @@ +@import "grid"; +@import "form"; + +// The styles contained here are meant to provide for an attractive experience out of the box +// and are expected to be removed once custom visual design begins. + +// The +blueprint-scaffolding mixin must be mixed into the top level of your stylesheet. +// However, you can customize the body selector if you wish to control the scope +// of this mixin. Examples: +// Apply to any page including the stylesheet: +// +blueprint-scaffolding +// Scoped by a single presentational body class: +// +blueprint-scaffolding("body.blueprint") +// Semantically: +// +blueprint-scaffolding("body#page-1, body#page-2, body.a-special-page-type") +// Alternatively, you can use the +blueprint-scaffolding-body and +blueprint-scaffolding-defaults +// mixins to construct your own semantic style rules. + +@mixin blueprint-scaffolding($body_selector: body) { + @if $body_selector != body { + #{$body_selector} { + @include blueprint-scaffolding-defaults; + } + } @else { + @include blueprint-scaffolding-defaults; + } +} + +// The styles this mixin provides were deprecated in Blueprint 0.9 and is no longer part of the +// main scaffolding, but the mixin is still available if you want to use it. +@mixin blueprint-scaffolding-body { + margin: 1.5em 0; } + +// Mixin +box to create a padded box inside a column. +@mixin box { + padding: 1.5em; + margin-bottom: 1.5em; + background: #e5ecf9; } + +@mixin blueprint-scaffolding-defaults { + .box { + @include box; } + // Border on right hand side of a column. You can comment this out if you don't plan to use it. + div.border { + @include border; } + // Border with more whitespace, spans one column. + div.colborder { + @include colborder; } + hr { + @include colruler; } + hr.space { + @include colspacer; } + form.inline { + @include blueprint-inline-form; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss new file mode 100644 index 000000000..ec095fc86 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_typography.scss @@ -0,0 +1,104 @@ +@import "colors"; +@import "compass/utilities/links/link-colors"; +@import "compass/utilities/general/float"; + +$blueprint-font-family: "Helvetica Neue", Arial, Helvetica, sans-serif !default; + +$blueprint-fixed-font-family: "andale mono", "lucida console", monospace !default; + +$blueprint-font-size: 12px !default; + +// Usage examples: +// As a top-level mixin, apply to any page that includes the stylesheet: +//
    +// +blueprint-typography
    +// 
    +// +// Scoped by a presentational class: +//
    +// body.blueprint
    +//  +blueprint-typography(true)
    +// 
    +// +// Scoped by semantic selectors: +//
    +// body#page-1, body#page-2, body.a-special-page-type
    +//   +blueprint-typography(true)
    +// 
    +// +// **Deprecated**: +// You can pass the body selector as the first argument when used as a top-level mixin +//
    +// +blueprint-typography("body#page-1, body#page-2, body.a-special-page-type")
    +// 
    +@mixin blueprint-typography($body-selector: body) { + @if $body-selector == true { + @include blueprint-typography-body; + @include blueprint-typography-defaults; + } @else { + #{$body-selector} { + @include blueprint-typography-body; + @if $body-selector != body { + @warn "[DEPRECATED] To specify the selector \"#{$body-selector}\" to +blueprint-typography, pass true as the first argument and mix it into #{$body-selector}."; + @include blueprint-typography-defaults; + } + } + @if $body-selector == body { + @include blueprint-typography-defaults; + } + } +} + +@mixin normal-text { font-family: $blueprint-font-family; color: $font-color; } +@mixin fixed-width-text { font: 1em $blueprint-fixed-font-family; line-height: 1.5; } +@mixin header-text { font-weight: normal; color: $header-color; } +@mixin quiet { color: $quiet-color; } +@mixin loud { color: $loud-color; } + +@mixin blueprint-typography-body($font-size: $blueprint-font-size) { + line-height: 1.5; + @include normal-text; + font-size: 100% * $font-size / 16px; +} + +@mixin blueprint-typography-defaults { + #{headers(all)} { @include header-text; + img { margin: 0; } } + h1 { font-size: 3em; line-height: 1; margin-bottom: 0.50em; } + h2 { font-size: 2em; margin-bottom: 0.75em; } + h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1.00em; } + h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; } + h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.50em; } + h6 { font-size: 1em; font-weight: bold; } + p { margin: 0 0 1.5em; + img.left { @include float-left; margin: 1.5em 1.5em 1.5em 0; padding: 0; } + img.right { @include float-right; margin: 1.5em 0 1.5em 1.5em; padding: 0; } + } + a { text-decoration: underline; @include link-colors($link-color, $link-hover-color, $link-active-color, $link-visited-color, $link-focus-color); } + blockquote { margin: 1.5em; color: $alt_text_color; font-style: italic; } + strong { font-weight: bold; } + em { font-style: italic; } + dfn { font-style: italic; font-weight: bold; } + sup, sub { line-height: 0; } + abbr, acronym { border-bottom: 1px dotted #666666; } + address { margin: 0 0 1.5em; font-style: italic; } + del { color: $alt_text_color; } + pre { margin: 1.5em 0; white-space: pre; } + pre, code, tt { @include fixed-width-text; } + li ul, li ol { margin: 0; } + ul, ol { margin: 0 1.5em 1.5em 0; padding-left: 3.333em; } + ul { list-style-type: disc; } + ol { list-style-type: decimal; } + dl { margin: 0 0 1.5em 0; + dt { font-weight: bold; } } + dd { margin-left: 1.5em; } + table { margin-bottom: 1.4em; width: 100%; } + th { font-weight: bold; } + thead th { background: $blueprint-table-header-color; } + th, td, caption { padding: 4px 10px 4px 5px; } + tr.even td { background: $blueprint-table-stripe-color; } + tfoot { font-style: italic; } + caption { background: $blueprint_background_color; } + .quiet { @include quiet; } + .loud { @include loud; } +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss new file mode 100644 index 000000000..12b898709 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.scss @@ -0,0 +1,37 @@ +@import "compass/utilities/text/nowrap"; +@import "compass/utilities/general/clearfix"; + +// Most of these utility classes are not "semantic". If you use them, +// you are mixing your content and presentation. For shame! + +@mixin blueprint-utilities { + // Regular clearing apply to column that should drop below previous ones. + .clear { + clear: both; } + // turn off text wrapping for the element. + .nowrap { + @include nowrap; } + // Apply to an element that has floated children to make the bottom + // of the element fall _below_ the floated children. + .clearfix { + @include clearfix; } + .small { + font-size: 0.8em; + margin-bottom: 1.875em; + line-height: 1.875em; } + .large { + font-size: 1.2em; + line-height: 2.5em; + margin-bottom: 1.25em; } + .first { + margin-left: 0; + padding-left: 0; } + .last { + margin-right: 0; + padding-right: 0; } + .top { + margin-top: 0; + padding-top: 0; } + .bottom { + margin-bottom: 0; + padding-bottom: 0; } } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss new file mode 100644 index 000000000..620d68be4 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss @@ -0,0 +1,58 @@ +// Global reset rules. +// For more specific resets, use the reset mixins provided below +@mixin blueprint-global-reset { + html, body { + @include blueprint-reset; } + html { + font-size: 100.01%; } + @include blueprint-nested-reset; } + +// Reset all elements within some selector scope.To reset the selector itself, +// mixin the appropriate reset mixin for that element type as well. This could be +// useful if you want to style a part of your page in a dramatically different way. +@mixin blueprint-nested-reset { + div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, + pre, a, abbr, acronym, address, code, del, dfn, em, img, + dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { + @include blueprint-reset; } + blockquote, q { + @include blueprint-reset-quotation; } + th, td, caption { + @include blueprint-reset-table-cell; } + table { + @include blueprint-reset-table; } + a img { + border: none; } } + +@mixin blueprint-reset-box-model { + margin: 0; + padding: 0; + border: 0; } + +@mixin blueprint-reset { + @include blueprint-reset-box-model; + font: { + weight: inherit; + style: inherit; + size: 100%; + family: inherit; }; + vertical-align: baseline; } + +@mixin blueprint-reset-quotation { + @include blueprint-reset; + quotes: "" ""; + &:before, + &:after { + content: ""; } } + +@mixin blueprint-reset-table-cell { + @include blueprint-reset; + text-align: left; + font-weight: normal; + vertical-align: middle; } + +@mixin blueprint-reset-table { + @include blueprint-reset; + border-collapse: separate; + border-spacing: 0; + vertical-align: middle; } diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/grid.png b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..129d4a29fbe92688aabed5638e0c4f73a7bca818 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<>!3HEX<>xE|QY^(zo*^7SP{WbZ0pxQQctjR6 zFmQbUVMeDlCNqG7G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^B#xt(DF$2|k zc)B=-cyuP$eEj#lzKxOL5tEL~%H%~Gtu@#d^DPnSv6>KM@XEpK;0k6FVdQ&MBb@06Zo?vj6}9 literal 0 HcmV?d00001 diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass new file mode 100644 index 000000000..9423f8035 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/ie.sass @@ -0,0 +1,4 @@ +@import blueprint + +// Generate the blueprint IE-specific customizations: ++blueprint-ie diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb new file mode 100644 index 000000000..8ab1251c3 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/manifest.rb @@ -0,0 +1,30 @@ +description "A basic blueprint install that mimics the actual blueprint css." + +stylesheet 'screen.sass', :media => 'screen, projection' +stylesheet 'partials/_base.sass' +stylesheet 'print.sass', :media => 'print' +stylesheet 'ie.sass', :media => 'screen, projection', :condition => "lt IE 8" + +image 'grid.png' + +help %Q{ +Please see the blueprint website for documentation on how blueprint works: + + http://blueprintcss.org/ + +Docs on the compass port of blueprint can be found on the wiki: + + http://wiki.github.com/chriseppstein/compass/blueprint-documentation +} + +welcome_message %Q{ +Please see the blueprint website for documentation on how blueprint works: + + http://blueprintcss.org/ + +Docs on the compass port of blueprint can be found on the wiki: + + http://wiki.github.com/chriseppstein/compass/blueprint-documentation + +To get started, edit the screen.sass file and read the comments and code there. +} diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass new file mode 100644 index 000000000..cb437bf81 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/partials/_base.sass @@ -0,0 +1,10 @@ +// Here is where you can define your constants for your application and to configure the blueprint framework. +// Feel free to delete these if you want keep the defaults: + +$blueprint-grid-columns : 24 +$blueprint-grid-width : 30px +$blueprint-grid-margin : 10px + +// If you change your grid column dimensions +// you can make a new grid background image from the command line like this: +// compass grid-img 30+10x16 diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass new file mode 100644 index 000000000..e92c4631b --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/print.sass @@ -0,0 +1,4 @@ +@import blueprint + +// Generate the blueprint print styles: ++blueprint-print diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass new file mode 100644 index 000000000..aa724869f --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/basic/screen.sass @@ -0,0 +1,12 @@ +// This import applies a global reset to any page that imports this stylesheet. +@import blueprint/reset +// To configure blueprint, edit the partials/_base.sass file. +@import partials/base +// Import all the default blueprint modules so that we can access their mixins. +@import blueprint +// Import the non-default scaffolding module. +@import blueprint/scaffolding + +// Generate the blueprint framework according to your configuration: ++blueprint ++blueprint-scaffolding diff --git a/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass new file mode 100644 index 000000000..b03736a39 --- /dev/null +++ b/lib/sass/sass/extensions/compass/frameworks/blueprint/templates/buttons/buttons.sass @@ -0,0 +1,49 @@ +@import compass/utilities/general/float +@import blueprint/buttons + +// + Use the following HTML code to place the buttons on your site: + + + +
    + Change Password + + + + Cancel + + +a.button + // you can pass "left" or "right" to +anchor-button to float it in that direction + // or you can pass no argument to leave it inline-block (cross browser safe!) within + // the flow of your page. + +anchor-button(left) + // All the button color mixins take 4 optional arguments: + // font color, background color, border color, border highlight color + // the first three default to constants set in blueprint/buttons.sass + // the last one defaults to a shade lighter than the border color. + +button-colors + +button-hover-colors + +button-active-colors + +button + // The +button-button mixin is just like the +anchor-button mixin, but for