Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' of git://github.com/sinnerinc/CC.NET-Kaizen-theme

  • Loading branch information...
commit b26edec9b9a766ba40f28f939c3b5b1ae679515d 2 parents 790089b + bf695a9
sarunas authored
Showing with 2,965 additions and 853 deletions.
  1. BIN  Documentation/images-ext/Build Log.png
  2. BIN  Documentation/images-ext/Build Report.png
  3. BIN  Documentation/images-ext/Console Output.png
  4. BIN  Documentation/images-ext/FxCopReport.png
  5. BIN  Documentation/images-ext/MSBuild Log.png
  6. BIN  Documentation/images-ext/MSpec Report.png
  7. BIN  Documentation/images-ext/MSpec-Failed.png
  8. BIN  Documentation/images-ext/Parameters View.png
  9. BIN  Documentation/images-ext/Project View.png
  10. BIN  Documentation/images-ext/StyleCop Report.png
  11. BIN  Package/7za.exe
  12. BIN  Package/CCNet.Plugins.CreatePackage.exe
  13. +14 −0 Package/build_package.bat
  14. +193 −193 Source/Kaizen/css/base.styles.css
  15. +183 −0 Source/Kaizen/css/ext.styles.css
  16. BIN  Source/Kaizen/images/ext/ArrowRight22.png
  17. BIN  Source/Kaizen/images/ext/CriticalError.png
  18. BIN  Source/Kaizen/images/ext/CriticalWarning.png
  19. BIN  Source/Kaizen/images/ext/Error.png
  20. BIN  Source/Kaizen/images/ext/Expand.png
  21. BIN  Source/Kaizen/images/ext/Expand20.png
  22. BIN  Source/Kaizen/images/ext/MessagesSprint24.png
  23. BIN  Source/Kaizen/images/ext/MessagesSprint32.png
  24. BIN  Source/Kaizen/images/ext/Package48.png
  25. BIN  Source/Kaizen/images/ext/SuccessFalse.png
  26. BIN  Source/Kaizen/images/ext/SuccessTrue.png
  27. BIN  Source/Kaizen/images/ext/Warning.png
  28. BIN  Source/Kaizen/images/ext/ccnetlogo.gif
  29. BIN  Source/Kaizen/images/ext/fplogo.gif
  30. BIN  Source/Kaizen/images/ext/logo.gif
  31. BIN  Source/Kaizen/images/ext/menu_links_bg_alter.png
  32. BIN  Source/Kaizen/images/ext/menu_links_bg_contrast.png
  33. BIN  Source/Kaizen/images/ext/menu_links_bg_green.png
  34. BIN  Source/Kaizen/images/ext/menu_links_bg_red.png
  35. BIN  Source/Kaizen/images/ext/report.ExternalLink32.png
  36. BIN  Source/Kaizen/images/ext/report.ReportLink128.png
  37. BIN  Source/Kaizen/images/ext/report.ReportLink32.png
  38. BIN  Source/Kaizen/images/ext/report.ReportLink64.png
  39. BIN  Source/Kaizen/images/ext/scm.Added.png
  40. BIN  Source/Kaizen/images/ext/scm.Deleted.png
  41. BIN  Source/Kaizen/images/ext/scm.Modified.png
  42. +20 −0 Source/Kaizen/js/ccnet.js
  43. +51 −0 Source/Kaizen/js/ext_additional.js
  44. +46 −0 Source/Kaizen/js/jquery.gravatar.js
  45. +256 −0 Source/Kaizen/js/md5.js
  46. +250 −250 Source/Kaizen/templates/AdministerDashboard.vm
  47. +10 −2 Source/Kaizen/templates/BuildLog.vm
  48. +20 −1 Source/Kaizen/templates/ProjectGrid.vm
  49. +185 −159 Source/Kaizen/templates/ProjectReport.vm
  50. +169 −153 Source/Kaizen/templates/SiteTemplate.vm
  51. +1 −1  Source/Kaizen/xsl/Design.xsl
  52. +1 −1  Source/Kaizen/xsl/DesignAnalysisSummary-FxCop.xsl
  53. +117 −93 Source/Kaizen/xsl/ModificationsSummary.xsl
  54. +57 −0 Source/Kaizen/xsl/compile-msbuild.xsl
  55. +59 −0 Source/Kaizen/xsl/ext_ConsoleOutput.xsl
  56. +227 −0 Source/Kaizen/xsl/ext_FxCopReport.xsl
  57. +171 −0 Source/Kaizen/xsl/ext_MSBuildLog.xsl
  58. +157 −0 Source/Kaizen/xsl/ext_MSBuildSummary.xsl
  59. +164 −0 Source/Kaizen/xsl/ext_MSpecReport.xsl
  60. +128 −0 Source/Kaizen/xsl/ext_MSpecSummary.xsl
  61. +158 −0 Source/Kaizen/xsl/ext_StyleCopReport.xsl
  62. +104 −0 Source/Kaizen/xsl/ext_StyleCopSummary.xsl
  63. +50 −0 Source/Kaizen/xsl/ext_Utils.xsl
  64. +174 −0 Source/Kaizen/xsl/msbuild.xsl
View
BIN  Documentation/images-ext/Build Log.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/Build Report.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/Console Output.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/FxCopReport.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/MSBuild Log.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/MSpec Report.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/MSpec-Failed.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/Parameters View.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/Project View.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Documentation/images-ext/StyleCop Report.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Package/7za.exe
Binary file not shown
View
BIN  Package/CCNet.Plugins.CreatePackage.exe
Binary file not shown
View
14 Package/build_package.bat
@@ -0,0 +1,14 @@
+@echo ::
+@echo :: Creating Keizen theme package
+@echo ::
+
+echo -- Creating manifest
+CCNet.Plugins.CreatePackage.exe "..\Source\Kaizen" Kaizen
+
+@echo -- Creating zip package
+7za.exe a -tzip KaizenTheme.zip "..\Source\Kaizen\*"
+7za.exe u KaizenTheme.zip package.xml
+
+
+@echo Package created.
+pause
View
386 Source/Kaizen/css/base.styles.css
@@ -1,194 +1,194 @@
-/* Base
-----------------------------------*/
-BODY { margin: 0px; padding: 0px; background-color: #FFF; font-family: helvetica; font-size: 12px; }
-/* Firefox alignment hack */
-BODY { text-align: -moz-center; }
-TABLE { width: 100%; background: #FFF url("../images/menu_links_bg.png"); }
-THEAD, .strong { font-weight: bold; }
-
-.data, .label { overflow: hidden; }
-
-BR { display: none; }
-A { text-decoration: none; cursor: hand; cursor: pointer; }
-.dialog, .hidden { display: none; }
-
-.clear { clear: both; }
-.invisible { margin: 0px; padding: 0px; }
-.show-line-breaks BR { display: block; }
-
-/* Columns
-----------------------------------*/
-.even-columns-2 { width: 50%; }
-.even-columns-3 { width: 33%; }
-.even-columns-4 { width: 25%; }
-.even-columns-5 { width: 20%; }
-
-/* Icons
-----------------------------------*/
-.icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; background-image: url('../images/icons.png'); }
-
-.icon-rss { width: 30px; height: 30px; background-position: 0px 0px; }
-.icon-refresh { width: 30px; height: 30px; background-position: -30px 0px; }
-.icon-reload { width: 30px; height: 30px; background-position: -30px 0px; }
-.icon-large-logout { width: 30px; height: 30px; background-position: -60px 0px; }
-
-.icon-show-sections { width: 24px; height: 24px; background-position: 0px -30px; }
-.icon-hide-sections { width: 24px; height: 24px; background-position: -24px -30px; }
-.icon-show-errors { width: 24px; height: 24px; background-position: -48px -30px; }
-
-.icon-change-password { width: 19px; height: 19px; background-position: 0px -54px; }
-.icon-logout { width: 19px; height: 19px; background-position: -19px -54px; }
-.icon-login { width: 19px; height: 19px; background-position: -38px -54px; }
-
-.icon-large-up-arrow { width: 13px; height: 30px; background-position: 0px -73px; }
-.icon-large-down-arrow { width: 13px; height: 30px; background-position: -13px -73px; }
-
-.icon-small-up-arrow { width: 7px; height: 10px; background-position: 0px -103px; }
-.icon-small-down-arrow { width: 7px; height: 10px; background-position: -10px -103px; }
-
-/* Forms
-----------------------------------*/
-FORM { display: inline; margin: 0px; padding: 0px; border: none; vertical-align: baseline; }
-INPUT { padding: 3px; border: none; background-color: #3b3a3a; color: #ededed; }
-INPUT[type="submit"], INPUT[type="button"] { font-weight: bold; cursor: hand; cursor: pointer; }
-INPUT[type="hidden"] { display: none; }
-INPUT.invalid { background-color: #ce2a1b; }
-
-/* Messaging
-----------------------------------*/
-.message { position: absolute; top: 0px; left: 0px; width: 100%; height: 40px; margin: 0px; color: #ededed; font-weight: bold; font-size: 20px; text-align: center; cursor: hand; cursor: pointer; }
-.message SPAN { display: inline-block; margin-top: 5px; }
-.message A { color: #FFFFFF; text-decoration: underline; }
-.message INPUT[type="submit"], .message INPUT[type="button"] { margin: 6px; float: right; border: 1px solid #ededed; background-color: transparent; color: #ededed; font-weight: bold; cursor: hand; cursor: pointer; }
-
-/* Dialogs
-----------------------------------*/
-.dialog OL { text-align: left; }
-
-/* Selectbox
-----------------------------------*/
-.selection { float: left; width: 100%; padding: 0px; background-color: #3b3a3a; border-top: 1px dashed #FFF; }
-.selection-data { width: 100%; list-style-type: none; }
-.selection-data LI { display: inline-block; width: 33%; float: left; }
-.selection-data A, .selection-data SPAN { color: #FFF; font-size: 14px; font-weight: bold; text-decoration: none; }
-.selection-link-hide { clear: both; float: right; margin: 3px; }
-
-/* Alignment
-----------------------------------*/
-.left { padding-left: 0.5em; text-align: left; }
-.right { padding-right: 0.5em; text-align: right; }
-.center { text-align: center; }
-
-/* Background
-----------------------------------*/
-.exception { background-color: #ce2a1b !important; }
-.success, #content UL LI.build-passed-link { background-color: #4e800c !important; }
-.failed, #content UL LI.build-failed-link { background-color: #ce2a1b !important; }
-.warning { background-color: #f0b440 !important; }
-.success-light { background-color: #639f27 !important; }
-.failed-light { background-color: #c94b3e !important; }
-.warning-light { background-color: #f1c775 !important; }
-
-/* Text
-----------------------------------*/
-.success-text { color: #4e800c !important; }
-.failed-text { color: #ce2a1b !important; }
-.warning-text { color: #f0b440 !important; }
-.failed-underline { border-bottom: dotted 2px #ce2a1b; }
-
-/* Layout
-----------------------------------*/
-#header, #main, #footer { width: 1000px; margin: 0 auto; padding: 0px; text-align: left; }
-#header { margin-top: 10px !important; height: 65px; border-bottom: solid 2px #3b3a3a; vertical-align: top; }
-#menu { float: left; width: 200px; margin: 20px 10px 20px 0px; padding: 0px; }
-#content { float: right; clear: right; width: 790px; margin-top: 20px; }
-#footer { margin-bottom: 20px !important; border-top: solid 2px #3b3a3a; }
-
-/* Header
-----------------------------------*/
-.header-logo { float: left; color: #3b3a3a; }
-.heading { float: left; font: 30px times new roman; letter-spacing: 2px; }
-.subheading { float: left; clear: both; margin-top: -7px; margin-left: 30px; color: #3b3a3a; font: 12px trebuchet ms; }
-
-.header-login, .header-navigation { display: block; float: right; }
-
-.header-login { padding: 5px; margin-top: -10px; clear: right; background-color: #f0b440; }
-.header-login A { float: left; margin: 2px; }
-
-.header-navigation { clear: both; }
-.header-navigation UL { display: block; margin: 0px; list-style-type: none; }
-.route { float: left; padding-left: 13px; background: url("../images/separator.png") no-repeat 0px 3px; color: #919EA9; font-weight: bold; }
-.route A { color: #3b3a3a; text-decoration: none; }
-.route-dashboard { padding-left: 0px !important; background-image: none !important; }
-
-/* Menu
-----------------------------------*/
-#menu H2 { display: block; width: 100%; height: 35px; margin: 0px 0px 2px 0px; padding: 0px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; cursor: pointer; cursor: hand; }
-#menu H2 SPAN { display: inline-block; margin: 6px 10px 6px 10px; }
-
-#menu UL { display: block; margin: 0px; padding: 0px; list-style-type: none; }
-
-#menu .section UL { width: 100%; }
-#menu .section LI { display: block; width: 100%; height: 30px; margin: 0px 0px 1px 0px; padding: 0px; border-top: solid 1px #c9c5c5; border-bottom: solid 1px #c9c5c5; background-image: url("../images/menu_links_bg.png"); font-size: 12px; vertical-align: middle; }
-#menu .section LI SPAN { display: block; margin: 7px; }
-#menu A { color: #615e5c; font-weight: bold; }
-
-#menu .build-passed-link { background: url("../images/build_passed_link_bg.png") !important; }
-#menu .build-failed-link { background: url("../images/build_failed_link_bg.png") !important; }
-
-.build-views { display: block; height: 25px; margin: 0px 0px 3px 0px; }
-.build-views UL { float: right; height: 100%; margin-bottom: 3px !important; }
-.build-views LI { float: left; width: 24px; height: 24px; margin: 1px; cursor: pointer; cursor: hand; }
-.build-views LI SPAN { display: none; }
-
-.colors { float: left !important; margin-left: -1px !important; }
-
-#searchbox { width: 130px; margin: -4px 0px 0px 2px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; border-bottom: 1px solid #c9c5c5; }
-
-/* Content
-----------------------------------*/
-#content .section { margin: 0px; margin-bottom: 5px !important; }
-#content .section-content { width: 770px; margin: 0px; padding: 10px; background: #EEE; color: #3b3a3a !important; font-size: 12px; overflow: hidden; }
-
-H1.title, #content .build { display: block; width: 100%; height: 60px; margin: 0px; padding: 0px; background-color: #3b3a3a; font-size: 24px; vertical-align: middle; }
-H1.title, H1.title A, #content .build A { color: #ededed; font-family: trebuchet ms; cursor: pointer; cursor: hand; }
-
-H1.title SPAN, #content .build SPAN { float: left; margin-left: 10px !important; margin-top: 15px; }
-H1.title SPAN, H1.title A, #content .build SPAN, #content .build A { display: inline-block; }
-
-.title-data { float: right !important; margin-right: 10px !important; }
-.title-data .icon { margin: 0.1em; background-color: #FFF; }
-.title-data .icon SPAN, .title-data .icon INPUT { display: none; }
-.title-data SPAN { margin: 0px !important; }
-.button-rss, .title-data .icon-large-down-arrow { background-color: Transparent !important; }
-
-#content .build { margin-bottom: 4px !important; }
-
-.log, PRE { overflow: auto; white-space: pre-wrap; }
-
-.section-content A { color: #000000; text-decoration: underline; }
-.report-link { color: #FFFFFF !important; text-decoration: none !important; }
-
-/* Footer
-----------------------------------*/
-.version { float: left; color: #3b3a3a; font-size: 10px; }
-.authors { float: right; margin-top: 2px; }
-.authors A { display: block; float: right; margin-left: 5px; }
-.authors A.thought-works { width: 129px; height: 30px; background-image: url('../images/thoughtworks.png'); }
-.authors A.saiku { width: 34px; height: 25px; background-image: url('../images/saiku.png'); }
-.authors SPAN { display: none; }
-
-/* ------------------------------------- */
-/* Extensions
-/* ------------------------------------- */
-
-/* jQuery XPH Tooltip
-----------------------------------*/
-.tooltip, .tooltip-fixed { color: #3b3a3a; border: 1px solid #3b3a3a; background: #ffffee; text-align: left; }
-.tooltip-fixed { width: 400px; }
-.tooltip .title { display: none; }
-.tooltip .text, .tooltip .url { padding: 5px; font-size: x-small; }
-.tooltip .url { font-weight: bold; }
-.tooltip .shortcut { font-style: italic; font-weight: bold; }
-.tooltip P, .tooltip-fixed P { margin: 2px; padding: 0px; }
+/* Base
+----------------------------------*/
+BODY { margin: 0px; padding: 0px; background-color: #FFF; font-family: verdana; font-size: 11px; }
+/* Firefox alignment hack */
+BODY { text-align: -moz-center; }
+TABLE { width: 100%; background: #FFF url("../images/menu_links_bg.png"); }
+THEAD, .strong { font-weight: bold; }
+
+.data, .label { overflow: hidden; }
+
+/*BR { display: none; } */
+A { text-decoration: none; cursor: hand; cursor: pointer; }
+.dialog, .hidden { display: none; }
+
+.clear { clear: both; }
+.invisible { margin: 0px; padding: 0px; }
+.show-line-breaks BR { display: block; }
+
+/* Columns
+----------------------------------*/
+.even-columns-2 { width: 50%; }
+.even-columns-3 { width: 33%; }
+.even-columns-4 { width: 25%; }
+.even-columns-5 { width: 20%; }
+
+/* Icons
+----------------------------------*/
+.icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; background-image: url('../images/icons.png'); }
+
+.icon-rss { width: 30px; height: 30px; background-position: 0px 0px; }
+.icon-refresh { width: 30px; height: 30px; background-position: -30px 0px; }
+.icon-reload { width: 30px; height: 30px; background-position: -30px 0px; }
+.icon-large-logout { width: 30px; height: 30px; background-position: -60px 0px; }
+
+.icon-show-sections { width: 24px; height: 24px; background-position: 0px -30px; }
+.icon-hide-sections { width: 24px; height: 24px; background-position: -24px -30px; }
+.icon-show-errors { width: 24px; height: 24px; background-position: -48px -30px; }
+
+.icon-change-password { width: 19px; height: 19px; background-position: 0px -54px; }
+.icon-logout { width: 19px; height: 19px; background-position: -19px -54px; }
+.icon-login { width: 19px; height: 19px; background-position: -38px -54px; }
+
+.icon-large-up-arrow { width: 13px; height: 30px; background-position: 0px -73px; }
+.icon-large-down-arrow { width: 13px; height: 30px; background-position: -13px -73px; }
+
+.icon-small-up-arrow { width: 7px; height: 10px; background-position: 0px -103px; }
+.icon-small-down-arrow { width: 7px; height: 10px; background-position: -10px -103px; }
+
+/* Forms
+----------------------------------*/
+FORM { display: inline; margin: 0px; padding: 0px; border: none; vertical-align: baseline; }
+INPUT { padding: 3px; border: none; background-color: #3b3a3a; color: #ededed; }
+INPUT[type="submit"], INPUT[type="button"] { font-weight: bold; cursor: hand; cursor: pointer; }
+INPUT[type="hidden"] { display: none; }
+INPUT.invalid { background-color: #ce2a1b; }
+
+/* Messaging
+----------------------------------*/
+.message { position: absolute; top: 0px; left: 0px; width: 100%; height: 40px; margin: 0px; color: #ededed; font-weight: bold; font-size: 20px; text-align: center; cursor: hand; cursor: pointer; }
+.message SPAN { display: inline-block; margin-top: 5px; }
+.message A { color: #FFFFFF; text-decoration: underline; }
+.message INPUT[type="submit"], .message INPUT[type="button"] { margin: 6px; float: right; border: 1px solid #ededed; background-color: transparent; color: #ededed; font-weight: bold; cursor: hand; cursor: pointer; }
+
+/* Dialogs
+----------------------------------*/
+.dialog OL { text-align: left; }
+
+/* Selectbox
+----------------------------------*/
+.selection { float: left; width: 100%; padding: 0px; background-color: #3b3a3a; border-top: 1px dashed #FFF; }
+.selection-data { width: 100%; list-style-type: none; }
+.selection-data LI { display: inline-block; width: 33%; float: left; }
+.selection-data A, .selection-data SPAN { color: #FFF; font-size: 14px; font-weight: bold; text-decoration: none; }
+.selection-link-hide { clear: both; float: right; margin: 3px; }
+
+/* Alignment
+----------------------------------*/
+.left { padding-left: 0.5em; text-align: left; }
+.right { padding-right: 0.5em; text-align: right; }
+.center { text-align: center; }
+
+/* Background
+----------------------------------*/
+.exception { background-color: #ce2a1b !important; }
+.success, #content UL LI.build-passed-link { background-color: #4e800c !important; }
+.failed, #content UL LI.build-failed-link { background-color: #ce2a1b !important; }
+.warning { background-color: #f0b440 !important; }
+.success-light { background-color: #639f27 !important; }
+.failed-light { background-color: #c94b3e !important; }
+.warning-light { background-color: #f1c775 !important; }
+
+/* Text
+----------------------------------*/
+.success-text { color: #4e800c !important; }
+.failed-text { color: #ce2a1b !important; }
+.warning-text { color: #B77F12 !important; }
+.failed-underline { border-bottom: dotted 2px #ce2a1b; }
+
+/* Layout
+----------------------------------*/
+#header, #main, #footer { width: 1000px; margin: 0 auto; padding: 0px; text-align: left; }
+#header { margin-top: 10px !important; height: 65px; border-bottom: solid 2px #3b3a3a; vertical-align: top; }
+#menu { float: left; width: 200px; margin: 20px 10px 20px 0px; padding: 0px; }
+#content { float: right; clear: right; width: 790px; margin-top: 20px; }
+#footer { margin-bottom: 20px !important; border-top: solid 2px #3b3a3a; }
+
+/* Header
+----------------------------------*/
+.header-logo { float: left; color: #3b3a3a; }
+.heading { float: left; font: 30px times new roman; letter-spacing: 2px; }
+.subheading { float: left; clear: both; margin-top: -7px; margin-left: 30px; color: #3b3a3a; font: 12px trebuchet ms; }
+
+.header-login, .header-navigation { display: block; float: right; }
+
+.header-login { padding: 5px; margin-top: -10px; clear: right; background-color: #f0b440; }
+.header-login A { float: left; margin: 2px; }
+
+.header-navigation { clear: both; }
+.header-navigation UL { display: block; margin: 0px; list-style-type: none; }
+.route { float: left; padding-left: 13px; background: url("../images/separator.png") no-repeat 0px 3px; color: #919EA9; font-weight: bold; }
+.route A { color: #3b3a3a; text-decoration: none; }
+.route-dashboard { padding-left: 0px !important; background-image: none !important; }
+
+/* Menu
+----------------------------------*/
+#menu H2 { display: block; width: 100%; height: 35px; margin: 0px 0px 2px 0px; padding: 0px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; cursor: pointer; cursor: hand; }
+#menu H2 SPAN { display: inline-block; margin: 6px 10px 6px 10px; }
+
+#menu UL { display: block; margin: 0px; padding: 0px; list-style-type: none; }
+
+#menu .section UL { width: 100%; }
+#menu .section LI { display: block; width: 100%; height: 30px; margin: 0px 0px 1px 0px; padding: 0px; border-top: solid 1px #c9c5c5; border-bottom: solid 1px #c9c5c5; background-image: url("../images/menu_links_bg.png"); font-size: 12px; vertical-align: middle; }
+#menu .section LI SPAN { display: block; margin: 7px; }
+#menu A { color: #615e5c; font-weight: bold; }
+
+#menu .build-passed-link { background: url("../images/build_passed_link_bg.png") !important; }
+#menu .build-failed-link { background: url("../images/build_failed_link_bg.png") !important; }
+
+.build-views { display: block; height: 25px; margin: 0px 0px 3px 0px; }
+.build-views UL { float: right; height: 100%; margin-bottom: 3px !important; }
+.build-views LI { float: left; width: 24px; height: 24px; margin: 1px; cursor: pointer; cursor: hand; }
+.build-views LI SPAN { display: none; }
+
+.colors { float: left !important; margin-left: -1px !important; }
+
+#searchbox { width: 130px; margin: -4px 0px 0px 2px; background-color: #3b3a3a; color: #ededed; font: normal 15px trebuchet ms; vertical-align: middle; border-bottom: 1px solid #c9c5c5; }
+
+/* Content
+----------------------------------*/
+#content .section { margin: 0px; margin-bottom: 5px !important; }
+#content .section-content { width: 770px; margin: 0px; padding: 10px; background: #EEE; color: #3b3a3a !important; font-size: 12px; overflow: hidden; }
+
+H1.title, #content .build { display: block; width: 100%; height: 60px; margin: 0px; padding: 0px; background-color: #3b3a3a; font-size: 24px; vertical-align: middle; }
+H1.title, H1.title A, #content .build A { color: #ededed; font-family: trebuchet ms; cursor: pointer; cursor: hand; }
+
+H1.title SPAN, #content .build SPAN { float: left; margin-left: 10px !important; margin-top: 15px; }
+H1.title SPAN, H1.title A, #content .build SPAN, #content .build A { display: inline-block; }
+
+.title-data { float: right !important; margin-right: 10px !important; }
+.title-data .icon { margin: 0.1em; background-color: #FFF; }
+.title-data .icon SPAN, .title-data .icon INPUT { display: none; }
+.title-data SPAN { margin: 0px !important; }
+.button-rss, .title-data .icon-large-down-arrow { background-color: Transparent !important; }
+
+#content .build { margin-bottom: 4px !important; }
+
+.log, PRE { overflow: auto; white-space: pre-wrap; }
+
+.section-content A { color: #000000; text-decoration: underline; }
+.report-link { color: #FFFFFF !important; text-decoration: none !important; }
+
+/* Footer
+----------------------------------*/
+.version { float: left; color: #3b3a3a; font-size: 10px; }
+.authors { float: right; margin-top: 2px; }
+.authors A { display: block; float: right; margin-left: 5px; }
+.authors A.thought-works { width: 129px; height: 30px; background-image: url('../images/thoughtworks.png'); }
+.authors A.saiku { width: 34px; height: 25px; background-image: url('../images/saiku.png'); }
+.authors SPAN { display: none; }
+
+/* ------------------------------------- */
+/* Extensions
+/* ------------------------------------- */
+
+/* jQuery XPH Tooltip
+----------------------------------*/
+.tooltip, .tooltip-fixed { color: #3b3a3a; border: 1px solid #3b3a3a; background: #ffffee; text-align: left; }
+.tooltip-fixed { width: 400px; }
+.tooltip .title { display: none; }
+.tooltip .text, .tooltip .url { padding: 5px; font-size: x-small; }
+.tooltip .url { font-weight: bold; }
+.tooltip .shortcut { font-style: italic; font-weight: bold; }
+.tooltip P, .tooltip-fixed P { margin: 2px; padding: 0px; }
.tooltip-fixed .text { font-size: small; }
View
183 Source/Kaizen/css/ext.styles.css
@@ -0,0 +1,183 @@
+/*
+Styles version 1.0
+by sinnerinc
+
+History:
+# 2012-02-14:
+ Initial version
+*/
+
+/* General
+----------------------------------*/
+.leftBlock {
+ float: left;
+ display: block;
+}
+
+.rightBlock {
+ float: right;
+ display: block;
+}
+
+/* Main template overrides
+-----------------------------------*/
+#menu .section LI { height: auto; }
+.route a:hover { color: gray; }
+#header, #footer { border-color: #E7E3E3; }
+
+/* Alternate rows
+-----------------------------------*/
+.evenRow { background: #FFF url("../images/ext/menu_links_bg_alter.png"); }
+.inner-rule-description { background: #FFF url("../images/ext/menu_links_bg_contrast.png"); color: #787373; }
+
+/* Icons
+------------------------------------*/
+.expandRule {
+ display: block;
+ width: 24px;
+ height: 22px;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+ background-image: url('../images/ext/Expand20.png');
+ float: right;
+}
+
+/* Header
+------------------------------------*/
+.title-data img{ margin-top:3px; }
+.title-data div{ float: left; }
+
+/* Misc
+------------------------------------*/
+.fxcopUsageCategory { font-style: italic; color: #a7a1a1; }
+
+div.fxcop-breaking-reason { /* actually ugly hack, otherwise FF or Chrome won't break line in long file names.... */
+ word-break:break-all;
+ word-wrap: break-word;
+ font-weight: bold;
+ width: 650px;
+}
+
+a.regularHover { text-decoration: none; }
+a.regularHover:hover { text-decoration: underline; }
+table.inner-rule-description span.NonBreaking { color: #5A9D5B; font-size: 80%; }
+table.inner-rule-description span.Breaking { color: #770606; font-size: 80%; }
+
+td.stylecop-filename-report {
+ background: #FFF url("../images/ext/menu_links_bg_red.png");
+ color: #770606;
+ font-size: 110%;
+ padding: 3px;
+ overflow: hidden;
+ word-break: break-all;
+}
+
+tr.msbuild-summary-success td, tr.msbuild-summary-failure td {
+ font-weight: bold;
+ padding: 3px;
+ vertical-align: top;
+}
+
+.table-container { table-layout: fixed; }
+.table-container tr{}
+.table-container tr td {}
+.table-container tr td span.long-text {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ width: 760px;
+ display: block;
+}
+
+/*.table-container tr td span:hover {
+ overflow: visible;
+}*/
+
+tr.msbuild-summary-success td { background: #FFF url("../images/ext/menu_links_bg_green.png"); }
+tr.msbuild-summary-failure td { background: #FFF url("../images/ext/menu_links_bg_red.png"); }
+tr.msbuild-project td, tr.msbuild-target td { font-weight: bold; }
+tr.msbuild-message-normal td, tr.msbuild-message-low td, tr.msbuild-message-high td { word-break: break-all; }
+tr.msbuild-message-normal td { color: #887B72; }
+tr.msbuild-message-low td { color: #ADA39D; }
+tr.msbuild-message-high td { color: #554A43; font-style: italic; }
+tr.msbuild-warning td { color: #D26117; }
+
+div.section a.msbuildMessagesOn, div.section a.msbuildMessagesOff {
+ display: block; text-indent: -99999px; overflow: hidden; width: 32px; height: 32px;
+ background-repeat: no-repeat; background-image: url('../images/ext/MessagesSprint32.png');
+ float: left;
+}
+div.section a.msbuildMessagesOn { background-position: 0px 0px; }
+div.section a.msbuildMessagesOff { background-position: 0px -32px; }
+
+.buildLogIcon {width: 12px; height: 12px; margin-right: 4px; }
+.certaintyCell { width: 70px; }
+.lineNumberCell { width: 60px; }
+.innerWrapper {display: none; }
+.forceThin { font-weight: normal; color: #ADA39D; }
+.mspec-context-name { font-size: 110%; font-style: italic; }
+.stacktrace { font-size: 90%; font-style: italic; }
+
+/* Modifications section in report */
+.data-modification-user img {
+ width: 48px;
+}
+
+.data-modification-comment {
+ font-style: italic;
+}
+
+.data-modification-filename {
+ font-weight: bold;
+}
+
+.data-modification-date {
+ text-align: right;
+ color: #ADA39D;
+ font-style: italic;
+}
+
+.data img.filestate {
+ width: 16px;
+ margin-right: 4px;
+}
+
+/* Project report view */
+td.data a.report,
+td.data a.externalLink {
+ display: block;
+ background-repeat: no-repeat;
+ padding: 0 5px 0 36px;
+ height:32px;
+ float: left;
+ text-decoration: none;
+ font-size: 150%;
+ line-height: 32px;
+ color: #9D9999;
+}
+
+td.data a.report:hover,
+td.data a.externalLink:hover {
+ color: #000000;
+}
+
+td.data a.report {
+ background-image: url('../images/ext/report.ReportLink32.png');
+}
+
+td.data a.externalLink {
+ background-image: url('../images/ext/report.ExternalLink32.png');
+}
+
+/* Tree
+----------------------------------------*/
+.indent-tree { padding-left: 15px; }
+
+/* Log
+----------------------------------------*/
+.log-warning { color: #ff7f00; }
+.log-error { color: #CC0000; font-weight: bold; }
+.log-target { font-style: italic; }
+.log-project { font-weight: bold; }
+.log-message { color: #7f7f7f; }
+
View
BIN  Source/Kaizen/images/ext/ArrowRight22.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/CriticalError.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/CriticalWarning.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/Error.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/Expand.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/Expand20.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/MessagesSprint24.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/MessagesSprint32.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/Package48.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/SuccessFalse.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/SuccessTrue.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/Warning.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/ccnetlogo.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/fplogo.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/logo.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  Source/Kaizen/images/ext/menu_links_bg_alter.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/menu_links_bg_contrast.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/menu_links_bg_green.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/menu_links_bg_red.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/report.ExternalLink32.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/report.ReportLink128.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/report.ReportLink32.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/report.ReportLink64.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/scm.Added.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/scm.Deleted.png
Diff not rendered
View
BIN  Source/Kaizen/images/ext/scm.Modified.png
Diff not rendered
View
20 Source/Kaizen/js/ccnet.js
@@ -0,0 +1,20 @@
+function checkForParams(buttonEl,checkUrl)
+{
+ $('#parameterEditor').replaceWith('<div id="parameterEditor">Loading parameters, please wait...</div>');
+ $('#parameterCheck').dialog('open');
+
+ jQuery.get(checkUrl,function(data){
+ if(data=='NONE'){
+
+ $('#parameterCheck').dialog('close');
+
+ var button=$(buttonEl);
+ button.after('<input type="hidden" name="ForceBuild" value="Force" />');
+ buttonEl.parentNode.submit();
+
+ }
+ else{
+ $('#parameterEditor').replaceWith('<div id="parameterEditor">'+data+'</div>');
+ }
+ });
+}
View
51 Source/Kaizen/js/ext_additional.js
@@ -0,0 +1,51 @@
+/* Startup
+----------------------------------*/
+$(document).ready(function() {
+ BindFxCopSlidings();
+ BindMsBuildLogActions();
+});
+
+function BindFxCopSlidings() {
+ $('a.expandRule').click(function () {
+ var msgid = $(this).attr('ref');
+ $(this).closest('tr').next().find('td.contentCell div#' + msgid).slideToggle('fast');
+ return false;
+ });
+
+ $('a.expandAllRules').click(function () {
+
+ var msgs = $(this).closest('div.section').children('div.section-content').find('div.innerWrapper');
+
+ var switchIcon = $(this).children('img');
+ if(switchIcon.hasClass('collapsed'))
+ {
+ msgs.slideDown('fast');
+ }
+ else
+ {
+ msgs.slideUp('fast');
+ }
+ switchIcon.toggleClass('collapsed');
+ return false;
+ });
+}
+
+function BindMsBuildLogActions()
+{
+ $('div.section a.msbuildHeaderIcon').click(function(e) {
+ var collection = $(this).closest('div.section').children('div.section-content').find('tr[class ^= msbuild-message]');
+
+ if( $(this).hasClass('msbuildMessagesOn') ) {
+ collection.hide();
+ $(this).removeClass('msbuildMessagesOn')
+ $(this).addClass('msbuildMessagesOff')
+ }
+ else {
+ collection.show();
+ $(this).removeClass('msbuildMessagesOff')
+ $(this).addClass('msbuildMessagesOn')
+ }
+ e.preventDefault();
+ });
+}
+
View
46 Source/Kaizen/js/jquery.gravatar.js
@@ -0,0 +1,46 @@
+/*
+ * jQuery.gravatar 1.0.1 (2009-01-08)
+ *
+ * Written by Zach Leatherman
+ * http://zachleat.com
+ *
+ * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/)
+ *
+ * Requires jQuery http://jquery.com (1.2.6 at time of release)
+ * Requires http://pajhome.org.uk/crypt/md5/md5.js
+ */
+
+(function($)
+{
+ $.gravatar = function(emailAddress, overrides)
+ {
+ var options = $.extend({
+ // Defaults are not hardcoded here in case gravatar changes them on their end.
+ // integer size: between 1 and 512, default 80 (in pixels)
+ size: '',
+ // rating: g (default), pg, r, x
+ rating: '',
+ // url to define a default image (can also be one of: identicon, monsterid, wavatar)
+ image: '',
+ // secure
+ secure: false
+ }, overrides);
+
+ var baseUrl = options.secure ? 'https://secure.gravatar.com/avatar/' : 'http://www.gravatar.com/avatar/';
+
+ // Change this here, if you are given only username for example
+ var emailMod = emailAddress + '@example.com';
+
+
+ return $('<img src="' + baseUrl +
+ hex_md5(emailMod) +
+ '.jpg?' +
+ (options.size ? 's=' + options.size + '&' : '') +
+ (options.rating ? 'r=' + options.rating + '&' : '') +
+ (options.image ? 'd=' + encodeURIComponent(options.image) : '') +
+ '"/>').bind('error', function()
+ {
+ $(this).remove();
+ });
+ };
+})(jQuery);
View
256 Source/Kaizen/js/md5.js
@@ -0,0 +1,256 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+ return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << ((len) % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+
+ for(var i = 0; i < x.length; i += 16)
+ {
+ var olda = a;
+ var oldb = b;
+ var oldc = c;
+ var oldd = d;
+
+ a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+ d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+ d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
+ d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
+ d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
+
+ a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+ d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+ c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+ d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
+ c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
+ d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+ c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+ d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+ c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+ a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+ d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+ d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
+ d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+ d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+ a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+ d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
+ d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
+ d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+ d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return Array(a, b, c, d);
+
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+ var bkey = str2binl(key);
+ if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
+
+ var ipad = Array(16), opad = Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+ return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+ var bin = Array();
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+ return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
+ | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+ | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+ for(var j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+ else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+ }
+ }
+ return str;
+}
View
500 Source/Kaizen/templates/AdministerDashboard.vm
@@ -1,251 +1,251 @@
-<!-- AdministerDashboard.vm: Start -->
-<script type="text/javascript" src="Themes/Kaizen/js/administration.js"></script>
-
-<div id="PackageImportDialog" class="dialog">
- <form method="post" enctype="multipart/form-data">
- <table>
- <tr>
- <td>
- <label for="packageLocation">Package:</label>
- </td>
- <td>
- <input type="file" name="package" id="packageLocation" />
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <input type="submit" class="button" name="Action" value="Import" />
- </td>
- </tr>
- </table>
- </form>
-</div>
-<div id="LogDialog" class="dialog">
- <ol>
- #foreach ($Event in $Events)
- <li class="$Event.Level">$Event.Message</li>
- #end
- </ol>
-</div>
-<div id="ServerDeleteDialog" class="dialog">
- <form method="post">
- <table>
- <tr>
- <td class="data strong">Are you sure you want to delete the server '<span id="deleteServerLabel">Name</span>'?</td>
- </tr>
- <tr>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td class="right">
- <input type="hidden" name="type" value="server" />
- <input type="hidden" name="ServerName" id="deleteServerField" />
- <input type="submit" name="Action" value="Delete" />
- <input type="button" id="cancelDeleteServer" value="Cancel" />
- </td>
- </tr>
- </table>
- </form>
-</div>
-<div id="PackageDetailsDialog" class="dialog">
- <form method="post">
- <table>
- <tr>
- <td>
- <label for="PackageDetailsDialogName" class="data strong">Name</label>
- </td>
- <td>
- <span id="PackageDetailsDialogName">Name</span>
- </td>
- </tr>
- <tr>
- <td>
- <label for="PackageDetailsDialogDescription" class="data strong">Description</label>
- </td>
- <td>
- <span id="PackageDetailsDialogDescription">Description</span>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <input type="hidden" name="type" value="package" />
- <input type="hidden" name="PackageName" id="nameOfPackage" />
- <input type="submit" id="installButton" name="action" />
- <input type="submit" id="removeButton" name="action" value="Remove" />
- </td>
- </tr>
- </table>
- </form>
-</div>
-<div id="ServerDetailsDialog" class="dialog">
- <form method="post" onSubmit="return ValidateServerDetailsDialog()">
- <table>
- <tr>
- <td>
- <label for="serverName" class="data strong">Name</label>
- </td>
- <td>
- <input type="hidden" class="text" id="oldName" name="oldName" />
- <input type="text" class="text" id="serverName" name="newName" />
- </td>
- </tr>
- <tr>
- <td>
- <label for="serverUri" class="data strong">URI</label>
- </td>
- <td>
- <input type="text" class="text" id="serverUri" name="serverUri" />
- </td>
- </tr>
- <tr>
- <td colspan="2">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2">
- <input type="checkbox" id="serverForceBuild" name="serverForceBuild" />
- <label for="serverForceBuild">Enable forcing and aborting builds</label>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <input type="checkbox" id="serverStartStop" name="serverStartStop" />
- <label for="serverStartStop">Enable starting and stoping project on server</label>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <input type="hidden" name="type" value="server" />
- <input type="button" class="dialog-link" id="deleteServer" name="action" value="Delete" />
- <input type="submit" name="action" value="Save" />
- <input type="button" id="cancelServer" value="Cancel" />
- </td>
- </tr>
- </table>
- </form>
-</div>
-
-#if ($Result.Length > 0)
-<div class="message success">
- <span>$Result</span>
- #if ($Events)
- <input type="button" value="View Log" id="viewLogButton" />
- #end
- #if ($InstallPackage.Length > 0)
- <form method="post">
- <input type="hidden" name="PackageName" value="$InstallPackage" />
- <input type="submit" name="Action" value="Install" />
- </form>
- #end
-</div>
-#end
-#if ($Error != "")
-<div class="message failed">
- <span>$Error</span>
- #if ($Events)
- <span>(<a href="#" id="viewLogLink">View Log</a>)</span>
- #end
-</div>
-#end
-
-<div class="section">
- <h1 class="title">
- <span class="title">Administration Dashboard</span>
- <span class="title-data">
- <form method="post">
- <input type="hidden" name="Action" value="Reload dashboard" />
- <span class="reload-button icon icon-reload"><input type="submit" value="Reload dashboard" /></span>
- </form>
- <form method="post">
- <input type="hidden" name="Action" value="Logout" />
- <span class="logout-button icon icon-large-logout"><input type="submit" value="Logout" /></span>
- </form>
- </span>
- </h1>
-</div>
-
-<div id="Servers" class="section">
- <h1 class="title">
- <span class="title">Remote Servers</span>
- </h1>
- <div class="section-content">
- <table>
- <tr>
- <td class="label strong">Name</td>
- <td class="label strong">Link</td>
- </tr>
- #foreach ($Server in $Servers)
- <tr>
- <td class="data strong">
- <a href="#" class="dialog-link">
- <span class="data-name">$Server.Name</span>
- </a>
-
- #if ($Server.AllowForceBuild)
- <span class="data-force-build-enabled hidden"></span>
- #else
- <span class="data-force-build-disabled hidden"></span>
- #end
-
- #if ($Server.AllowStartStopBuild)
- <span class="data-start-enabled hidden"></span>
- #else
- <span class="data-start-disabled hidden"></span>
- #end
- </td>
- <td class="data">
- <a href="#" class="dialog-link">
- <span class="data-url">$Server.Url</span>
- </a>
- </td>
- </tr>
- #end
- <tr>
- <td colspan="2">
- <form method="post">
- <input type="button" id="addServerButton" value="Add New Server" class="dialog-link" />
- </form>
- </td>
- </tr>
- </table>
- </div>
-</div>
-<div id="Packages" class="section">
- <h1 class="title">
- <span class="title">Packages</span>
- </h1>
- <div class="section-content">
- <table>
- <tr>
- <td class="label strong">Name</td>
- <td class="label strong">Description</td>
- <td class="label strong">Status</td>
- </tr>
- #foreach ($Package in $Packages)
- <tr>
- <td class="data strong">
- <a href="#" class="dialog-link">
- <span class="data-name">$Package.Name</span>
- </a>
- <span class="hidden data-filename">$Package.FileName</span>
- </td>
- <td class="data"><span class="data-description">$Package.Description</span></td>
- <td class="data">
- #if ($Package.IsInstalled)
- <span class="data-installed">[Installed]</span>
- #else
- <span class="data-not-installed">[Not installed]</span>
- #end
- </td>
- </tr>
- #end
- <tr>
- <td colspan="3">
- <form method="post">
- <input type="button" id="loadPackageButton" value="Load Package" class="dialog-link" />
- </form>
- </td>
- </tr>
- </table>
- </div>
-</div>
+<!-- AdministerDashboard.vm: Start -->
+<script type="text/javascript" src="Themes/Kaizen/js/administration.js"></script>
+
+<div id="PackageImportDialog" class="dialog">
+ <form method="post" enctype="multipart/form-data">
+ <table>
+ <tr>
+ <td>
+ <label for="packageLocation">Package:</label>
+ </td>
+ <td>
+ <input type="file" name="package" id="packageLocation" />
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <input type="submit" class="button" name="Action" value="Import" />
+ </td>
+ </tr>
+ </table>
+ </form>
+</div>
+<div id="LogDialog" class="dialog">
+ <ol>
+ #foreach ($Event in $Events)
+ <li class="$Event.Level">$Event.Message</li>
+ #end
+ </ol>
+</div>
+<div id="ServerDeleteDialog" class="dialog">
+ <form method="post">
+ <table>
+ <tr>
+ <td class="data strong">Are you sure you want to delete the server '<span id="deleteServerLabel">Name</span>'?</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td class="right">
+ <input type="hidden" name="type" value="server" />
+ <input type="hidden" name="ServerName" id="deleteServerField" />
+ <input type="submit" name="Action" value="Delete" />
+ <input type="button" id="cancelDeleteServer" value="Cancel" />
+ </td>
+ </tr>
+ </table>
+ </form>
+</div>
+<div id="PackageDetailsDialog" class="dialog">
+ <form method="post">
+ <table>
+ <tr>
+ <td>
+ <label for="PackageDetailsDialogName" class="data strong">Name</label>
+ </td>
+ <td>
+ <span id="PackageDetailsDialogName">Name</span>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <label for="PackageDetailsDialogDescription" class="data strong">Description</label>
+ </td>
+ <td>
+ <span id="PackageDetailsDialogDescription">Description</span>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <input type="hidden" name="type" value="package" />
+ <input type="hidden" name="PackageName" id="nameOfPackage" />
+ <input type="submit" id="installButton" name="action" />
+ <input type="submit" id="removeButton" name="action" value="Remove" />
+ </td>
+ </tr>
+ </table>
+ </form>
+</div>
+<div id="ServerDetailsDialog" class="dialog">
+ <form method="post" onSubmit="return ValidateServerDetailsDialog()">
+ <table>
+ <tr>
+ <td>
+ <label for="serverName" class="data strong">Name</label>
+ </td>
+ <td>
+ <input type="hidden" class="text" id="oldName" name="oldName" />
+ <input type="text" class="text" id="serverName" name="newName" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <label for="serverUri" class="data strong">URI</label>
+ </td>
+ <td>
+ <input type="text" class="text" id="serverUri" name="serverUri" />
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <input type="checkbox" id="serverForceBuild" name="serverForceBuild" />
+ <label for="serverForceBuild">Enable forcing and aborting builds</label>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <input type="checkbox" id="serverStartStop" name="serverStartStop" />
+ <label for="serverStartStop">Enable starting and stoping project on server</label>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <input type="hidden" name="type" value="server" />
+ <input type="button" class="dialog-link" id="deleteServer" name="action" value="Delete" />
+ <input type="submit" name="action" value="Save" />
+ <input type="button" id="cancelServer" value="Cancel" />
+ </td>
+ </tr>
+ </table>
+ </form>
+</div>
+
+#if ($Result.Length > 0)
+<div class="message success">
+ <span>$Result</span>
+ #if ($Events)
+ <input type="button" value="View Log" id="viewLogButton" />
+ #end
+ #if ($InstallPackage.Length > 0)
+ <form method="post">
+ <input type="hidden" name="PackageName" value="$InstallPackage" />
+ <input type="submit" name="Action" value="Install" />
+ </form>
+ #end
+</div>
+#end
+#if ($Error != "")
+<div class="message failed">
+ <span>$Error</span>
+ #if ($Events)
+ <span>(<a href="#" id="viewLogLink">View Log</a>)</span>
+ #end
+</div>
+#end
+
+<div class="section">
+ <h1 class="title">
+ <span class="title">Administration Dashboard</span>
+ <span class="title-data">
+ <form method="post">
+ <input type="hidden" name="Action" value="Reload dashboard" />
+ <span class="reload-button icon icon-reload"><input type="submit" value="Reload dashboard" /></span>
+ </form>
+ <form method="post">
+ <input type="hidden" name="Action" value="Logout" />
+ <span class="logout-button icon icon-large-logout"><input type="submit" value="Logout" /></span>
+ </form>
+ </span>
+ </h1>
+</div>
+
+<div id="Servers" class="section">
+ <h1 class="title">
+ <span class="title">Remote Servers</span>
+ </h1>
+ <div class="section-content">
+ <table>
+ <tr>
+ <td class="label strong">Name</td>
+ <td class="label strong">Link</td>
+ </tr>
+ #foreach ($Server in $Servers)
+ <tr>
+ <td class="data strong">
+ <a href="#" class="dialog-link">
+ <span class="data-name">$Server.Name</span>
+ </a>
+
+ #if ($Server.AllowForceBuild)
+ <span class="data-force-build-enabled hidden"></span>
+ #else
+ <span class="data-force-build-disabled hidden"></span>
+ #end
+
+ #if ($Server.AllowStartStopBuild)
+ <span class="data-start-enabled hidden"></span>
+ #else
+ <span class="data-start-disabled hidden"></span>
+ #end
+ </td>
+ <td class="data">
+ <a href="#" class="dialog-link">
+ <span class="data-url">$Server.Url</span>
+ </a>
+ </td>
+ </tr>
+ #end
+ <tr>
+ <td colspan="2">
+ <form method="post">
+ <input type="button" id="addServerButton" value="Add New Server" class="dialog-link" />
+ </form>
+ </td>
+ </tr>
+ </table>
+ </div>
+</div>
+<div id="Packages" class="section">
+ <h1 class="title">
+ <span class="title">Packages</span>
+ </h1>
+ <div class="section-content">
+ <table>
+ <tr>
+ <td class="label strong">Name</td>
+ <td class="label strong">Description</td>
+ <td class="label strong">Status</td>
+ </tr>
+ #foreach ($Package in $Packages)
+ <tr>
+ <td class="data strong">
+ <a href="#" class="dialog-link">
+ <span class="data-name">$Package.Name</span>
+ </a>
+ <span class="hidden data-filename">$Package.FileName</span>
+ </td>
+ <td class="data"><span class="data-description">$Package.Description</span></td>
+ <td class="data">
+ #if ($Package.IsInstalled)
+ <span class="data-installed">[Installed]</span>
+ #else
+ <span class="data-not-installed">[Not installed]</span>
+ #end
+ </td>
+ </tr>
+ #end
+ <tr>
+ <td colspan="3">
+ <form method="post">
+ <input type="button" id="loadPackageButton" value="Load Package" class="dialog-link" />
+ </form>
+ </td>
+ </tr>
+ </table>
+ </div>
+</div>
<!-- AdministerDashboard.vm: End -->
View
12 Source/Kaizen/templates/BuildLog.vm
@@ -1,13 +1,21 @@
<!-- BuildLog.vm: Start -->
+
+
<div class="section">
<h1 class="title">
<span class="title">Build Log</span>
</h1>
<div class="section-content">
<p>
- Click <a href="$logUrl">here</a> to open log in its own page
+ <span>Click <a href="$logUrl">here</a> to open log in its own page</span>
</p>
- <pre class="log">$log</pre>
+ <pre class="log brush: xml">$log</pre>
+
+ <script type="text/javascript">
+ //SyntaxHighlighter.all();
+ </script>
</div>
</div>
+
+
<!-- BuildLog.vm: End -->
View
21 Source/Kaizen/templates/ProjectGrid.vm
@@ -1,4 +1,23 @@
<!-- ProjectGrid.vm: Start -->
+<script type="text/javascript">
+ $(function(){
+ $('#parameterCheck').dialog({
+ autoOpen:false,
+ modal:true,
+ title:'$translations.Translate("Project Parameters")',
+ width:400,
+ height:300,
+ overlay:{
+ opacity:0.5,
+ background:'black'
+ }
+ });
+ });
+</script>
+<div id="parameterCheck" style="display:none;">
+ <div id="parameterEditor">$translations.Translate("Loading parameters, please wait...")</div>
+</div>
+
#if ($forceBuildMessage.Length > 0)
<div class="message success">
<span>$forceBuildMessage</span>
@@ -99,7 +118,7 @@
<input type="hidden" name="projectName" value="$projectGridRow.Name" />
<input type="hidden" name="serverName" value="$projectGridRow.ServerName" />
#if ($projectGridRow.allowForceBuild)
- <input type="submit" name="$projectGridRow.ForceAbortBuildButtonName" value="$projectGridRow.ForceAbortBuildButtonValue"/>
+ <input type="button" name="$projectGridRow.ForceAbortBuildButtonName" value="$projectGridRow.ForceAbortBuildButtonValue" onclick="checkForParams(this, '$projectGridRow.ParametersUrl')"/>
#end
#if ($projectGridRow.AllowStartStopBuild)
<input type="submit" name="$projectGridRow.StartStopButtonName" value="$projectGridRow.StartStopButtonValue"/>
View
344 Source/Kaizen/templates/ProjectReport.vm
@@ -1,160 +1,186 @@
-<!-- ProjectReport.vm: Start -->
-#if ($StatusMessage.Length > 0)
-<div class="message success">
- <span>$StatusMessage</span>
-</div>
-#end
-
-<div class="section">
- #if ($status.BuildStatus == "Failure")
- <h1 class="title failed">
- #elseif ($status.BuildStatus == "Success")
- <h1 class="title success">
- #elseif ($status.BuildStatus == "Exception")
- <h1 class="title warning">
- #elseif ($status.BuildStatus == "Unknown")
- <h1 class="title warning">
- #else
- <h1 class="title">
- #end
- <span class="title">$projectName</span>
- #if ($rssDataPresent)
- <span class="title-data">
- <a href="$rss.url" class="button-rss icon icon-rss">
- <span>RSS</span>
- </a>
- </span>
- #end
- </h1>
- #if ($externalLinks.Length > 0)
- <div class="section-content">
- <table>
- #foreach ($externalLink in $externalLinks)
- <tr>
- <td>
- <a class="externalLink" href="$externalLink.Url">$externalLink.Name</a>
- </td>
- </tr>
- #end
- </table>
- </div>
- #end
-</div>
-<div class="section">
- <h1 class="title">
- <span class="title">Status</span>
- </h1>
- <div class="section-content">
- <table>
- <tr>
- <td class="label strong">Last Build Status</td>
- <td class="data strong">$status.BuildStatus</td>
- </tr>
- <tr>
- <td class="label strong">Last Build Label</td>
- <td class="data strong">$status.LastBuildLabel</td>
- </tr>
- <tr>
- <td class="label strong">CCNet Status</td>
- <td class="data strong">$status.Status</td>
- </tr>
- <tr>
- <td class="label strong">Activity</td>
- <td class="data strong">$status.Activity</td>
- </tr>
- <tr>
- <td colspan="2">
- <form methd="POST">
- #if ($server.AllowForceBuild)
- <input type="submit" name="$ForceAbortBuildButtonName" value="$ForceAbortBuildButtonValue"/>
- #end
- #if ($server.AllowStartStopBuild)
- <input type="submit" name="$StartStopButtonName" value="$StartStopButtonValue"/>
- #end
- </form>
- </td>
- </tr>
- </table>
- </div>
-</div>
-<div class="section">
- <h1 class="title">
- <span class="title">Build</span>
- </h1>
- <div class="section-content">
- <table>
- #if ($noLogsAvailable)
- <tr>
- <td>
- There are currently no build logs available for this project - make sure your Build Server configuration is correct and that this Project's build is not throwing any exceptions
- </td>
- </tr>
- #else
- #if ($pluginInfo)
- <tr>
- <td class="label strong">Most Recent Build Results</td>
- </tr>
- <tr>
- <td class="data">$pluginInfo</td>
- </tr>
- #end
- <tr>
- <td class="data">Click <a href="$mostRecentBuildUrl">here</a> for the full build report.</td>
- </tr>
- #end
- </table>
- </div>
-</div>
-#if ($highestAmountPerDay > 0)
- #set($highestViewPerDay= $highestAmountPerDay / $dateMultiPlier)
- <div class="section">
- <h1 class="title">
- <span class="title">Build Overview</span>
- </h1>
- <div class="section-content">
- <table>
- <tr>
- <td colspan="2" align="center"> $OKPercent% </td>
- </tr>
- <tr height=5>
- <td width="$OKPercent%" class="success"> </td>
- <td width="$NOKPercent%" class="failed"> </td>
- </tr>
- <tr>
- <td colspan="2">
- <table border="0" cellspacing="0" cellpadding="0">
- #foreach ($dayBuildCounter in [1..$highestViewPerDay])
- <tr align="center">
- #foreach ($currentDayInfo in $graphDayInfo)
- #foreach ($multi in [1..$dateMultiPlier])
- #set ($cellIndex = (($highestViewPerDay - $dayBuildCounter) * $dateMultiPlier) + $multi)
- #if ( $cellIndex <= $currentDayInfo.AmountOfBuilds)
- #set ($buildIndex = $cellIndex - 1 )
- #if ($currentDayInfo.Build($buildIndex).IsSuccesFull)
- #set($color = "success")
- #else
- #set($color ="failed")
- #end
- <td class="$color">
- <a href="$currentDayInfo.Build($buildIndex).LinkTobuild" title="$currentDayInfo.Build($buildIndex).Description" class="report-link">$cellIndex</a>
- </td>
- #else
- <td></td>
- #end
- #end
- #end
- </tr>
- #end
- <tr align="center">
- #foreach ($currentDayInfo in $graphDayInfo)
- <td colspan="$dateMultiPlier" class="show-line-breaks">$currentDayInfo.BuildDateFormatted</td>
- #end
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
- </div>
-#end
+<!-- ProjectReport.vm: Start -->
+<script type="text/javascript">
+ $(document).ready(function(){
+ $('#parameterCheck').dialog({
+ autoOpen:false,
+ modal:true,
+ title:'Project Parameters',
+ width:400,
+ height:300,
+ overlay:{
+ opacity:0.5,
+ background:'black'
+ }
+ });
+ });
+</script>
+<div id="parameterCheck">
+ <div id="parameterEditor">$translations.Translate("Loading parameters, please wait...")</div>
+</div>
+
+
+#if ($StatusMessage.Length > 0)
+<div class="message success">
+ <span>$StatusMessage</span>
+</div>
+#end
+
+<div class="section">
+ #if ($status.BuildStatus == "Failure")
+ <h1 class="title failed">
+ #elseif ($status.BuildStatus == "Success")
+ <h1 class="title success">
+ #elseif ($status.BuildStatus == "Exception")
+ <h1 class="title warning">
+ #elseif ($status.BuildStatus == "Unknown")
+ <h1 class="title warning">
+ #else
+ <h1 class="title">
+ #end
+ <span class="title">$projectName</span>
+ #if ($rssDataPresent)
+ <span class="title-data">
+ <a href="$rss.url" class="button-rss icon icon-rss">
+ <span>RSS</span>
+ </a>
+ </span>
+ #end
+ </h1>
+
+ <div class="section-content">
+ <table>
+ #if ($noLogsAvailable)
+ <tr>
+ <td>
+ There are currently no build logs available for this project - make sure your Build Server configuration is correct and that this Project's build is not throwing any exceptions
+ </td>
+ </tr>
+ #else
+ #if ($pluginInfo)
+ <tr>
+ <td class="label strong">Most Recent Build Results</td>
+ </tr>
+ <tr>
+ <td class="data">$pluginInfo</td>
+ </tr>
+ #end
+ <tr>
+ <td class="data">
+ <a class="report" href="$mostRecentBuildUrl">Full build report</a>
+ </td>
+ </tr>
+ #end
+ </table>
+ </div>
+
+
+
+</div>
+<div class="section">
+ <h1 class="title">
+ <span class="title">Status</span>
+ </h1>
+ <div class="section-content">
+ <table>
+ <tr>
+ <td class="label strong">Last Build Status</td>
+ <td class="data strong">$status.BuildStatus</td>
+ </tr>
+ <tr>
+ <td class="label strong">Last Build Label</td>
+ <td class="data strong">$status.LastBuildLabel</td>
+ </tr>
+ <tr>
+ <td class="label strong">CCNet Status</td>
+ <td class="data strong">$status.Status</td>
+ </tr>
+ <tr>
+ <td class="label strong">Activity</td>
+ <td class="data strong">$status.Activity</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <form methd="POST">
+ #if ($server.AllowForceBuild)
+ <input type="button" name="$ForceAbortBuildButtonName" value="$ForceAbortBuildButtonValue" onclick="checkForParams(this, '$ParametersUrl')"/>
+ #end
+ #if ($server.AllowStartStopBuild)
+ <input type="submit" name="$StartStopButtonName" value="$StartStopButtonValue"/>
+ #end
+ </form>
+ </td>
+ </tr>
+ </table>
+ </div>
+</div>
+<div class="section">
+ <h1 class="title">
+ <span class="title">Related links</span>
+ </h1>
+ <div class="section-content">
+ <table>
+ <tr>
+ <td class="data">
+ #if ($externalLinks.Length > 0)
+ #foreach ($externalLink in $externalLinks)
+ <a class="externalLink" href="$externalLink.Url">$externalLink.Name</a>
+ #end
+ #end
+ </td>
+ </tr>
+ </table>
+ </div>
+</div>
+#if ($highestAmountPerDay > 0)
+ #set($highestViewPerDay= $highestAmountPerDay / $dateMultiPlier)
+ <div class="section">
+ <h1 class="title">
+ <span class="title">Build Overview</span>
+ </h1>
+ <div class="section-content">
+ <table>
+ <tr>
+ <td colspan="2" align="center"> $OKPercent% </td>
+ </tr>
+ <tr height=5>
+ <td width="$OKPercent%" class="success"> </td>
+ <td width="$NOKPercent%" class="failed"> </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0">
+ #foreach ($dayBuildCounter in [1..$highestViewPerDay])
+ <tr align="center">
+ #foreach ($currentDayInfo in $graphDayInfo)
+ #foreach ($multi in [1..$dateMultiPlier])
+ #set ($cellIndex = (($highestViewPerDay - $dayBuildCounter) * $dateMultiPlier) + $multi)
+ #if ( $cellIndex <= $currentDayInfo.AmountOfBuilds)
+ #set ($buildIndex = $cellIndex - 1 )
+ #if ($currentDayInfo.Build($buildIndex).IsSuccesFull)
+ #set($color = "success")
+ #else
+ #set($color ="failed")
+ #end
+ <td class="$color">
+ <a href="$currentDayInfo.Build($buildIndex).LinkTobuild" title="$currentDayInfo.Build($buildIndex).Description" class="report-link">$cellIndex</a>
+ </td>
+ #else
+ <td></td>
+ #end
+ #end
+ #end
+ </tr>
+ #end
+ <tr align="center">
+ #foreach ($currentDayInfo in $graphDayInfo)
+ <td colspan="$dateMultiPlier" class="show-line-breaks">$currentDayInfo.BuildDateFormatted</td>
+ #end
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+#end
<!-- ProjectReport.vm: End -->
View
322 Source/Kaizen/templates/SiteTemplate.vm
@@ -1,154 +1,170 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>Continuous Integration - CruiseControl.NET</title>
-
- <link type="text/css" rel="stylesheet" href="$applicationPath/Themes/Kaizen/css/base.styles.css" media="screen, projection" title="Default" />
- <link type="text/css" rel="stylesheet" href="$applicationPath/Themes/Kaizen/css/jquery.ui.css" media="screen, projection" />
-
- <script type="text/javascript" src="$applicationPath/Themes/Kaizen/js/jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="$applicationPath/Themes/Kaizen/js/jquery.ui.min.js"></script>
- <script type="text/javascript" src="$applicationPath/Themes/Kaizen/js/jquery.timers.js"></script>
- <script type="text/javascript" src="$applicationPath/Themes/Kaizen/js/jquery.xphtooltip.min.js"></script>
- <script type="text/javascript" src="$applicationPath/Themes/Kaizen/js/shortcut.js"></script>
- <script type="text/javascript" src="$applicationPath/Themes/Kaizen/js/datejs.js"></script>
- <script type="text/javascript" src="$applicationPath/Themes/Kaizen/js/global.js"></script>
-</head>
-<body>
- <div id="header">
- <div class="header-logo">
- <span class="heading">Continuous Integration</span>
- <span class="subheading">Cruise Control.NET</span>
- </div>
- $loginView
- <div class="header-navigation">
- $breadcrumbs
- </div>
- </div>
- <div id="main" class="clear">
- <div id="menu">
- <div class="build-views">
- <ul class="colors">
- <li id="toggle-failed" class="failed">
- <span>Toggle failed</span>
- </li>
- <li id="toggle-warning" class="warning">
- <span>Toggle warning</span>
- </li>
- <li id="toggle-success" class="success">
- <span>Toggle success</span>
- </li>
- </ul>
- <ul class="content">
- <li id="show-all" class="icon icon-show-sections">
- <span>Show all</span>
- </li>
- <li id="hide-all" class="icon icon-hide-sections">
- <span>Hide all</span>
- </li>
- <li id="show-errors" class="icon icon-show-errors">
- <span>Show errors</span>
- </li>
- </ul>
- </div>
- $sidebar
- <div class="help section">
- <h2>
- <span>Help</span>
- </h2>
- <ul>
- <li>
- <span>
- <a href="$applicationPath/doc/index.html">Documentation</a>
- </span>
- </li>
- <li>
- <span>
- <a href="#" class="link-help-shortcuts">Shortcuts</a>
- </span>
- </li>
- </ul>
- </div>
- </div>
- <div id="content">$mainContent</div>
- </div>
- <div id="footer" class="clear">
- <div class="version">
- <span>version $dashboardversion</span>
- </div>
- <div class="authors">
- <a href="http://www.saiku.eu" class="saiku" alt="Theme designed by Saiku">
- <span>Theme designed by Saiku</span>
- </a>
- <a href="http://www.thoughtworks.com" class="thought-works" alt="Development supported by ThoughtWorks">
- <span>Development supported by ThoughtWorks</span>
- </a>
- </div>
- </div>
- <div id="help-shortcuts" class="dialog">
- <table>
- <tr>
- <td class="label strong">Key</td>
- <td class="label strong">Description</td>
- </tr>
- <tr>
- <td class="data strong">D</td>
- <td class="data">Navigate to dashboard</td>
- </tr>
- <tr>
- <td class="data strong">Q</td>
- <td class="data">Expands all sections</td>
- </tr>
- <tr>
- <td class="data strong">W</td>
- <td class="data">Collapses all sections</td>
- </tr>
- <tr>
- <td class="data strong">E</td>
- <td class="data">Expands sections with errors and warnings</td>
- </tr>
- <tr>
- <td class="data strong">G</td>
- <td class="data">Shows/hides green sections</td>
- </tr>
- <tr>
- <td class="data strong">Y</td>
- <td class="data">Shows/hides yellow sections</td>
- </tr>
- <tr>
- <td class="data strong">R</td>
- <td class="data">Shows/hides red sections</td>
- </tr>
- <tr>
- <td class="data strong">1..9</td>
- <td class="data">Navigates to project (dashboard); Navigates to menu link</td>
- </tr>
- <tr>
- <td class="data strong">F</td>
- <td class="data">Find project</td>
- </tr>
- <tr>
- <td class="data strong">L</td>
- <td class="data">Navigates to project last build</td>
- </tr>
- <tr>
- <td class="data strong">Z</td>
- <td class="data">Navigates to previous build</td>
- </tr>
- <tr>
- <td class="data strong">X</td>
- <td class="data">Navigates to next build</td>
- </tr>
- <tr>
- <td class="data strong">B</td>
- <td class="data">Expands/collapses recent builds</td>
- </tr>
- <tr>
- <td class="data strong">H</td>
- <td class="data">Expands/collapses help</td>
- </tr>
- </table>
- </div>
-</body>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <title>Continuous Integration - CruiseControl.NET</title>
+
+ <link type="text/css" rel="stylesheet" href="$applicationPath/Themes/Kaizen/css/base.styles.css" media="screen, projection" title="Default" />
+ <link type="text/css" rel="stylesheet" href="$applicationPath/Themes/Kaizen/css/ext.styles.css" media="screen, projection" />
+ <link type="text/css" rel="stylesheet" href="$applicationPath/Themes/Kaizen/css/jquery.ui.css" media="screen, projection" />